diff --git a/TBF/ReadMe_BugFix.md b/TBF/ReadMe_BugFix.md index 7a8010bc9..eb9891461 100644 --- a/TBF/ReadMe_BugFix.md +++ b/TBF/ReadMe_BugFix.md @@ -1,5 +1,5 @@ ## Version History -| Version | Target Environment | Title | Description | -|------------|--------------------------------------------------------------|-----------------------------------------------------|------------------------------------| -| 3.9.2149.0 | HeatMeters, Heat meter sensors, Procedure Dilog, Tab Process | Excanged columns value 'Sensor' and 'Heat meter sensor' | Fix in code ProcedureDlg, row 1851 | +| Version | Source of change | Target Environment | Title | Description | +|------------|----------------------|--------------------------------------------------------------|-----------------------------------------------------|------------------------------------| +| 3.9.2149.0 | Michal databse error | HeatMeters, Heat meter sensors, Procedure Dilog, Tab Process | Excanged columns value 'Sensor' and 'Heat meter sensor' | Fix in code ProcedureDlg, row 1851 | diff --git a/TBF/Rig/TestMethods/FlyingStart/FlyingStartSeq.cs b/TBF/Rig/TestMethods/FlyingStart/FlyingStartSeq.cs index fdc65f6b9..9efbec11d 100644 --- a/TBF/Rig/TestMethods/FlyingStart/FlyingStartSeq.cs +++ b/TBF/Rig/TestMethods/FlyingStart/FlyingStartSeq.cs @@ -6,10 +6,13 @@ using System.Collections.Generic; using System.Text; using log4net; using Common; +using Config.Entities; +using Results.Entities; using TBF.Rig; using TBF.Rig.GenericDevices; using TBF.Boxes; using TBF.Resources; +using TBF.Rig.TestMethods.GenesisCommunication.GenesisHead; using TBF.UiBridge; namespace TBF.Rig.TestMethods.FlyingStart @@ -135,6 +138,8 @@ namespace TBF.Rig.TestMethods.FlyingStart Bridge.OnTestSelected(this, new TestSelectedEventArgs(test, repetitionNr, inPath, benchPath, outPath, sensPath, heatMetersPath)); string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr); TestStartTime = DateTime.Now; + // Genesis switch + bool atleastOneGenesis = GenesisHeadBatch.Start(sensPath.RegisterReaders, Program.LocalSettings.LastSNTexts); /// /// Optionally display prompt to emerge temperature meters to appropriate baths for heat meters test @@ -323,6 +328,20 @@ namespace TBF.Rig.TestMethods.FlyingStart temperature_set: + //TODO genesis - check with genesis switch + if (atleastOneGenesis) + { + if (test.Name.ToLower().Contains("calib")) + { + GenesisHeadBatch.BatchHolder.Value.MetersLogin(); + GenesisHeadBatch.BatchHolder.Value.MetersInitCalibration(); + + } else if (test.Name.ToLower().Contains("Init")) + { + GenesisHeadBatch.BatchHolder.Value.MetersLogin(); + GenesisHeadBatch.BatchHolder.Value.MetersInitMeasurement(); + } + } /// /// Prepare cameras, ROI-s and measurementOperations /// @@ -358,7 +377,12 @@ namespace TBF.Rig.TestMethods.FlyingStart foreach (var rr in sensPath.RegisterReaders) { - if (rr is IRegReaderDatastream) (rr as IRegReaderDatastream).TestIsGoingToStartSoon(test, repetitionNr); + if (rr is IRegReaderDatastream) + (rr as IRegReaderDatastream).TestIsGoingToStartSoon(test, repetitionNr); + + if (rr is GenesisHead) // Genesis - CORDONEL head + (rr as GenesisHead).StartRead(test.Name, BatchRslts.Batch.BatchNr, repetitionNr); + } @@ -426,8 +450,21 @@ namespace TBF.Rig.TestMethods.FlyingStart /// Measurement loop end StopRecordingStatistics(); + + //TODO genesis - check with genesis switch + if (atleastOneGenesis) + { + if (test.Name.ToLower().Contains("calib")) + { + GenesisHeadBatch.BatchHolder.Value.MetersStopCalibration(); + } + else if (test.Name.ToLower().Contains("Init")) + { + GenesisHeadBatch.BatchHolder.Value.MetersStopMeasurement(); + } + } - //------------------------------------------------ + //------------------------------------------------ Bridge.OnActivity(this, Strings.Test_completed); //------------------------------------------------ @@ -589,6 +626,7 @@ namespace TBF.Rig.TestMethods.FlyingStart GenericDevices.IRegReaderDatastream dstrReader = regReader as GenericDevices.IRegReaderDatastream; TestMethods.iPerlCommunication.iPerlHead.IperlHead iPerl = regReader as TestMethods.iPerlCommunication.iPerlHead.IperlHead; GenericDevices.IRegReaderLiveCamera cameraRoi = regReader as GenericDevices.IRegReaderLiveCamera; + GenesisHead Genesis = regReader as GenesisHead; if (meterRslt != null && regReader != null) { @@ -596,83 +634,147 @@ namespace TBF.Rig.TestMethods.FlyingStart meterRslt.PulsesPerLiter = regReader.PulsesPerLtr; meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses); - if (dstrReader != null) - { - meterRslt.TimestampStart = dstrReader.TimestampSecStart; - meterRslt.TimestampEnd = dstrReader.NoSamples ? (dstrReader.TimestampSecStart + tstRslt.TestTime) : dstrReader.TimestampSecEnd; - meterRslt.TestTime = meterRslt.TimestampEnd - meterRslt.TimestampStart; - meterRslt.VolumeStart = dstrReader.VolumeLtrStart; /// liter - meterRslt.VolumeEnd = dstrReader.VolumeLtrEnd; /// liter - meterRslt.VolumeMeter = Math.Abs(dstrReader.VolumeLtrEnd - dstrReader.VolumeLtrStart); - meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime; - meterRslt.PulsesMaster = tstRslt.PulsesMaster * meterRslt.TestTime / tstRslt.TestTime; + + if (Genesis != null) + { + Genesis.Stop(tstRslt.TestTime, tstRslt.VolumeCTV); - if (iPerl != null) + meterRslt.TimestampStart = Genesis.TimestampSecStart; + meterRslt.TimestampEnd = Genesis.TimestampSecEnd; + meterRslt.TestTime = Genesis.WMTestTime; + meterRslt.VolumeStart = Genesis.BeginWMState; + meterRslt.VolumeEnd = Genesis.EndWMState; /// liter + meterRslt.VolumeMeter = Math.Abs(Genesis.WMVolume); + meterRslt.VolumeRef = tstRslt.VolumeCTV; + if (GenesisHeadBatch.MeterIdDetailResults == null) { - if (iPerl.ResultCode != 0 && (meterRslt.WaterMeter.ResultCode & (int)Results.Entities.ResultCode.OptoErrorCodeMask) == 0) + Genesis.Log("MeterIdDetailResults na!"); + } + else + { + if (Genesis.DetailedResults != null) { - meterRslt.WaterMeter.ResultCode |= iPerl.ResultCode; + try + { + GenesisHeadBatch.MeterIdDetailResults.Add(meterRslt.SerialNr(), Genesis.DetailedResults); + } + catch (Exception ex) { Genesis.Log(ex.Message.ToString()); } } -#if IPERL - meterRslt.WaterMeter.CalibFactor = iPerl.CalibFactor; - meterRslt.ExtraDataPath = iPerl.ExtraDataPath; - if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 1) meterRslt.X1 = iPerl.X[0]; - if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 2) meterRslt.X2 = iPerl.X[1]; - if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 3) meterRslt.X3 = iPerl.X[2]; - if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 4) meterRslt.X4 = iPerl.X[3]; - if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 5) meterRslt.X5 = iPerl.X[4]; - if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 6) meterRslt.X6 = iPerl.X[5]; - if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 7) meterRslt.X7 = iPerl.X[6]; - if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 8) meterRslt.X8 = iPerl.X[7]; - if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 9) meterRslt.X9 = iPerl.X[8]; -#endif - iPerl.LastTestResult2 = iPerl.LastTestResult; /// Save shift previous test result - iPerl.LastTestResult = meterRslt; /// Save this test result - } - } - else if (cameraRoi != null) - { - meterRslt.TimestampStart = cameraRoi.TimestampStart; /// second - meterRslt.TimestampEnd = cameraRoi.TimestampEnd; /// second - - meterRslt.VolumeStart = cameraRoi.VolumeStart; /// liter - meterRslt.VolumeEnd = cameraRoi.VolumeEnd; /// liter - meterRslt.VolumeMeter = cameraRoi.VolumeEnd - cameraRoi.VolumeStart; /// liter - - if (meterRslt.VolumeMeter != 0) - { - /// Normal measurement with camera - meterRslt.TestTime = cameraRoi.TimestampEnd - cameraRoi.TimestampStart; /// second - meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime; - meterRslt.PulsesMaster = tstRslt.PulsesMaster * meterRslt.TestTime / tstRslt.TestTime; - } - else - { - /// None or one pulse from the water meter using camera - meterRslt.TestTime = tstRslt.TestTime; - meterRslt.VolumeRef = tstRslt.VolumeCTV; - meterRslt.PulsesMaster = tstRslt.PulsesMaster; + else + { + Genesis.Log("DetailedResults na!"); + } } + + Genesis.Log("VolumeRef=" + meterRslt.VolumeRef); + Genesis.Log("TestTime Meter =" + meterRslt.TestTime + "S, test time ref =" + tstRslt.TestTime + "s"); + Genesis.Log(" results for " + test.Name); + Genesis.Log(" Ref Vol = " + meterRslt.VolumeRef + " m³"); + Genesis.Log(" Ref Time = " + tstRslt.TestTime + " s"); + Genesis.Log(" Meter Time = " + meterRslt.TestTime + " s"); + Genesis.Log(" Meter Vol = " + meterRslt.VolumeMeter + " m³"); + + var calError = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef); + Genesis.Log(" MeterError = " + calError.ToString() + " %"); } - else - { - meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses); - meterRslt.VolumeStart = 0; - meterRslt.VolumeEnd = 0; - meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter - /// - if (regReader.WMPulses >= 1) - { - /// Normal measurement - meterRslt.TestTime = cBrd.TestTimeWM(regReader.Position); - meterRslt.VolumeRef = meterRslt.PulsesMaster * tstRslt.ConstMaster; /// liter - } - else - { - /// None or one pulse from the water meter - meterRslt.TestTime = tstRslt.TestTime; - meterRslt.VolumeRef = tstRslt.VolumeCTV; /// liter - } + else + { + if (dstrReader != null) + { + meterRslt.TimestampStart = dstrReader.TimestampSecStart; + meterRslt.TimestampEnd = dstrReader.NoSamples + ? (dstrReader.TimestampSecStart + tstRslt.TestTime) + : dstrReader.TimestampSecEnd; + meterRslt.TestTime = meterRslt.TimestampEnd - meterRslt.TimestampStart; + meterRslt.VolumeStart = dstrReader.VolumeLtrStart; /// liter + meterRslt.VolumeEnd = dstrReader.VolumeLtrEnd; /// liter + meterRslt.VolumeMeter = + Math.Abs(dstrReader.VolumeLtrEnd - dstrReader.VolumeLtrStart); + meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime; + meterRslt.PulsesMaster = + tstRslt.PulsesMaster * meterRslt.TestTime / tstRslt.TestTime; + + if (iPerl != null) + { + if (iPerl.ResultCode != 0 && (meterRslt.WaterMeter.ResultCode & + (int)Results.Entities.ResultCode + .OptoErrorCodeMask) == 0) + { + meterRslt.WaterMeter.ResultCode |= iPerl.ResultCode; + } +#if IPERL + meterRslt.WaterMeter.CalibFactor = iPerl.CalibFactor; + meterRslt.ExtraDataPath = iPerl.ExtraDataPath; + if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 1) + meterRslt.X1 = iPerl.X[0]; + if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 2) + meterRslt.X2 = iPerl.X[1]; + if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 3) + meterRslt.X3 = iPerl.X[2]; + if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 4) + meterRslt.X4 = iPerl.X[3]; + if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 5) + meterRslt.X5 = iPerl.X[4]; + if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 6) + meterRslt.X6 = iPerl.X[5]; + if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 7) + meterRslt.X7 = iPerl.X[6]; + if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 8) + meterRslt.X8 = iPerl.X[7]; + if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 9) + meterRslt.X9 = iPerl.X[8]; +#endif + iPerl.LastTestResult2 = + iPerl.LastTestResult; /// Save shift previous test result + iPerl.LastTestResult = meterRslt; /// Save this test result + } + } + else if (cameraRoi != null) + { + meterRslt.TimestampStart = cameraRoi.TimestampStart; /// second + meterRslt.TimestampEnd = cameraRoi.TimestampEnd; /// second + + meterRslt.VolumeStart = cameraRoi.VolumeStart; /// liter + meterRslt.VolumeEnd = cameraRoi.VolumeEnd; /// liter + meterRslt.VolumeMeter = cameraRoi.VolumeEnd - cameraRoi.VolumeStart; /// liter + + if (meterRslt.VolumeMeter != 0) + { + /// Normal measurement with camera + meterRslt.TestTime = + cameraRoi.TimestampEnd - cameraRoi.TimestampStart; /// second + meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime; + meterRslt.PulsesMaster = + tstRslt.PulsesMaster * meterRslt.TestTime / tstRslt.TestTime; + } + else + { + /// None or one pulse from the water meter using camera + meterRslt.TestTime = tstRslt.TestTime; + meterRslt.VolumeRef = tstRslt.VolumeCTV; + meterRslt.PulsesMaster = tstRslt.PulsesMaster; + } + } + else + { + meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses); + meterRslt.VolumeStart = 0; + meterRslt.VolumeEnd = 0; + meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter + /// + if (regReader.WMPulses >= 1) + { + /// Normal measurement + meterRslt.TestTime = cBrd.TestTimeWM(regReader.Position); + meterRslt.VolumeRef = meterRslt.PulsesMaster * tstRslt.ConstMaster; /// liter + } + else + { + /// None or one pulse from the water meter + meterRslt.TestTime = tstRslt.TestTime; + meterRslt.VolumeRef = tstRslt.VolumeCTV; /// liter + } + } } meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef); @@ -724,10 +826,14 @@ namespace TBF.Rig.TestMethods.FlyingStart /// Append the results to the CSV-file allResults.Info(TestResult2CsvLine(testName, test.Part)); + //TODO genesis - process result writing + //ProcessDatabaseResultsWriting(test, tstRslt); + if (stopCycle) retVal = Event.ErrorFlagsStop; stopTest: + GenesisHeadBatch.BatchHolder.Value.RemoveAllMeters(); StopRecordingStatistics(); cBrd.StopAll(false); @@ -748,8 +854,36 @@ namespace TBF.Rig.TestMethods.FlyingStart return new List { retVal }; } + //backup how work genesis - not a clean code! + // private void ProcessDatabaseResultsWriting(Test test, TestRslt tstRslt) + // { + // IList e; + // if (!String.IsNullOrEmpty(test.Procedure.ResultsWriter)) + // { + // string[] writers = StateMachine.Procedure.ResultsWriter.Split(new char[] { '~' }); + // foreach (var writerName in writers) + // { + // IResultsWriter writer = TbfComponents.FindComponent(writerName) as IResultsWriter; + // if (writer != null && writer is ) + // { + // var SensusLaWriter = ((DB.SensusLa.Database)writer); + // + // State.Create(string.Format("{0}({1}) : Store results into db.", test.Method, test.Name)) + // .AddOperation(checkUiOp) + // .AddOperation(SensusLaWriter.WriteResultsOp(tstRslt, BatchRslts, GenesisHeadBatch.MeterIdDetailResults)) + // .EnterState(); + // do + // { + // e = StateMachine.WaitRunDevsRunOps(); + // } + // while (!e.Contains(Event.Error) && !e.Contains(Event.ResultsWritten) && !e.Contains(Event.ResultsNotWritten)); + // } + // } + // } + // } - IList Simulate(Config.Entities.Test test, int repetitionNr, bool isLastRepetition, + + IList Simulate(Config.Entities.Test test, int repetitionNr, bool isLastRepetition, Compound.TestParams compoundTestParams, HeatMeters.TestParams heatMetersTestParams, Common.DebugMode debugLevel) diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/CalibrationStruct.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/CalibrationStruct.cs new file mode 100644 index 000000000..2784c4171 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/CalibrationStruct.cs @@ -0,0 +1,197 @@ +/// +/// Copyright (c) 2015-2017 Sensus Metering Systems +/// +using System; + +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + public class CalibrationStruct + { + public static readonly int Length = 35; + + public Byte Version; + public MeterType MeterType; + public UInt16 Calibration; + public VolumeUnits VolumeUnits; + public FlowArrow FlowArrow; + public UInt16 FWVersion; + public UInt16[] TargetField; + public UInt16 RecipMeanCurrent; + public UInt16 ThresholdVolume; + public UInt16 ThresholdTime; + public UInt16 FlowActivationThr; + public UInt16 VolumeArrowThr; + public UInt32 CalibrationTime; + public ulong SerialNumber; + public MeterSealed MeterSealed; + public byte CheckSum; + + + public CalibrationStruct() + { + TargetField = new UInt16[3]; + } + + public byte[] ToByteArray() + { + byte[] result = new byte[Length]; + + result[0] = Version; + result[1] = (byte)MeterType; + + result[2] = (byte)(Calibration & 0x00FF); + result[3] = (byte)((Calibration >> 8) & 0x00FF); + + result[4] = (byte)VolumeUnits; + + result[5] = (byte)FlowArrow; + + result[6] = (byte)(FWVersion & 0x00FF); + result[7] = (byte)((FWVersion >> 8) & 0x00FF); + + result[8] = (byte)( TargetField[0] & 0x00FF); + result[9] = (byte)((TargetField[0] >> 8) & 0x00FF); + result[10] = (byte)( TargetField[1] & 0x00FF); + result[11] = (byte)((TargetField[1] >> 8) & 0x00FF); + result[12] = (byte)( TargetField[2] & 0x00FF); + result[13] = (byte)((TargetField[2] >> 8) & 0x00FF); + + result[14] = (byte)(RecipMeanCurrent & 0x00FF); + result[15] = (byte)((RecipMeanCurrent >> 8) & 0x00FF); + + result[16] = (byte)(ThresholdVolume & 0x00FF); + result[17] = (byte)((ThresholdVolume >> 8) & 0x00FF); + + result[18] = (byte)(ThresholdTime & 0x00FF); + result[19] = (byte)((ThresholdTime >> 8) & 0x00FF); + + result[20] = (byte)(FlowActivationThr & 0x00FF); + result[21] = (byte)((FlowActivationThr >> 8) & 0x00FF); + + result[22] = (byte)(VolumeArrowThr & 0x00FF); + result[23] = (byte)((VolumeArrowThr >> 8) & 0x00FF); + + result[24] = (byte)(CalibrationTime & 0x000000FF); + result[25] = (byte)((CalibrationTime >> 8) & 0x000000FF); + result[26] = (byte)((CalibrationTime >> 16) & 0x000000FF); + result[27] = (byte)((CalibrationTime >> 24) & 0x000000FF); + + result[28] = (byte)(SerialNumber & 0x00000000000000FF); + result[29] = (byte)((SerialNumber >> 8) & 0x00000000000000FF); + result[30] = (byte)((SerialNumber >> 16) & 0x00000000000000FF); + result[31] = (byte)((SerialNumber >> 24) & 0x00000000000000FF); + result[32] = (byte)((SerialNumber >> 32) & 0x00000000000000FF); + + result[33] = (byte)MeterSealed; + result[34] = CheckSum; + + return result; + } + + /// + /// Create a calibration structure from a complete byte array + /// + /// A complete byte array data + /// CalibrationStruct or null when byte array was not complete + public static CalibrationStruct FromByteArray(byte[] data) + { + if (data.Length != Length) return null; + + CalibrationStruct result = new CalibrationStruct(); + + result.Version = data[0]; + result.MeterType = (MeterType)data[1]; + result.Calibration = (UInt16)(data[2] + 256 * data[3]); + result.VolumeUnits = (VolumeUnits)data[4]; + result.FlowArrow = (FlowArrow)data[5]; + result.FWVersion = (UInt16)(data[6] + 256 * data[7]); + result.TargetField[0] = (UInt16)(data[8] + 256 * data[9]); + result.TargetField[1] = (UInt16)(data[10] + 256 * data[11]); + result.TargetField[2] = (UInt16)(data[12] + 256 * data[13]); + result.RecipMeanCurrent = (UInt16)(data[14] + 256 * data[15]); + result.ThresholdVolume = (UInt16)(data[16] + 256 * data[17]); + result.ThresholdTime = (UInt16)(data[18] + 256 * data[19]); + result.FlowActivationThr = (UInt16)(data[20] + 256 * data[21]); + result.VolumeArrowThr = (UInt16)(data[22] + 256 * data[23]); + result.CalibrationTime = (((UInt32)data[27] * 256 + data[26]) * 256 + data[25]) * 256 + data[24]; + result.SerialNumber = ((((UInt64)data[32] * 256 + data[31]) * 256 + data[30]) * 256 + data[29]) * 256 + data[28]; + result.MeterSealed = (MeterSealed)data[33]; + result.CheckSum = data[34]; + + return result; + } + + /// + /// Update the calibration structure from an incomplete byte array + /// + /// Byte array data + /// Offset of byte array data in CalibrationStruct + /// true when successful, false when data are not appropriate + public bool Update(byte[] data, int offset) + { + if (offset == 2 && data.Length == 2) + { + /// Data containing iPerl calibration factor + Calibration = (UInt16)(data[2 - offset] + 256 * data[3 - offset]); + return true; + } + else if (offset == 0 && data.Length == Length) + { + /// Data containing a complete CalibrationStruct + Version = data[0]; + MeterType = (MeterType)data[1]; + Calibration = (UInt16)(data[2] + 256 * data[3]); + VolumeUnits = (VolumeUnits)data[4]; + FlowArrow = (FlowArrow)data[5]; + FWVersion = (UInt16)(data[6] + 256 * data[7]); + TargetField[0] = (UInt16)(data[8] + 256 * data[9]); + TargetField[1] = (UInt16)(data[10] + 256 * data[11]); + TargetField[2] = (UInt16)(data[12] + 256 * data[13]); + RecipMeanCurrent = (UInt16)(data[14] + 256 * data[15]); + ThresholdVolume = (UInt16)(data[16] + 256 * data[17]); + ThresholdTime = (UInt16)(data[18] + 256 * data[19]); + FlowActivationThr = (UInt16)(data[20] + 256 * data[21]); + VolumeArrowThr = (UInt16)(data[22] + 256 * data[23]); + CalibrationTime = (((UInt32)data[27] * 256 + data[26]) * 256 + data[25]) * 256 + data[24]; + SerialNumber = ((((UInt64)data[32] * 256 + data[31]) * 256 + data[30]) * 256 + data[29]) * 256 + data[28]; + MeterSealed = (MeterSealed)data[33]; + CheckSum = data[34]; + return true; + } + else + return false; + } + + public string FWVersionStr() + { + int d1 = (FWVersion >> 8) & 0x000F; + int d2 = (FWVersion >> 12) & 0x000F; + int d3 = (FWVersion >> 4) & 0x000F; + int d4 = FWVersion & 0x000F; + return string.Format("{0}.{1}{2}{3}", d1, d2, d3, d4); + } + + public override string ToString() + { + return string.Format("Calibration: V{0} Type={1} Cal={2} Units={3} FlowArrow.{4} FW={5} Hi={6} Norm={7} Low={8} RMC={9} ThrVol={10} ThrTime={11} FlActThr={12} VolArrThr={13} CalTm={14} SN={15} MeterSealed={16} Chksum={17}", + Version, + MeterType, + Calibration, + VolumeUnits, + FlowArrow, + FWVersion, + TargetField[0], + TargetField[1], + TargetField[2], + RecipMeanCurrent, + ThresholdVolume, + ThresholdTime, + FlowActivationThr, + VolumeArrowThr, + CalibrationTime, + SerialNumber, + MeterSealed, + CheckSum.ToString("X2")); + } + } +} diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/ConfigStruct.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/ConfigStruct.cs new file mode 100644 index 000000000..80b2d6573 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/ConfigStruct.cs @@ -0,0 +1,225 @@ +/// +/// Copyright (c) 2015-2017 Sensus Metering Systems +/// +using System; + +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + public class ConfigStruct + { + public const int Length = 32; + + public Byte Version; /// 0: 1 byte + public MeterState MeterState; /// 1: 1 byte + public UInt32 TargetTimeVeryLowBatt; /// 2: 4 bytes in seconds + public UInt32 TargetTimeLowBatt; /// 6: 4 bytes, in seconds + public UInt32 TestModeTime; /// 10: 4 bytes, Max. test mode time in seconds + public UInt16 EmptyPipeThreshold; /// 14: 2 bytes + public byte[] PCBNumber; /// 16: 5 bytes + public byte TestModeConfig; /// 21: 1 byte + public UInt32 RadioAddress; /// 22: 4 bytes + public UInt16 TempCalibration; /// 26: 2 bytes + public UInt16 AlarmMask; /// 28: 2 bytes, Default 0xA3F7 + public UInt16 ConfigCheckSum; /// 30: 2 bytes + + public ConfigStruct() + { + PCBNumber = new byte[5]; + } + + public byte[] ToByteArray() + { + byte[] result = new byte[Length]; + + result[0] = Version; + result[1] = (byte)MeterState; + + result[2] = (byte)(TargetTimeVeryLowBatt & 0x000000FF); + result[3] = (byte)((TargetTimeVeryLowBatt >> 8) & 0x000000FF); + result[4] = (byte)((TargetTimeVeryLowBatt >> 16) & 0x000000FF); + result[5] = (byte)((TargetTimeVeryLowBatt >> 24) & 0x000000FF); + + result[6] = (byte)(TargetTimeLowBatt & 0x000000FF); + result[7] = (byte)((TargetTimeLowBatt >> 8) & 0x000000FF); + result[8] = (byte)((TargetTimeLowBatt >> 16) & 0x000000FF); + result[9] = (byte)((TargetTimeLowBatt >> 24) & 0x000000FF); + + result[10] = (byte)(TestModeTime & 0x000000FF); + result[11] = (byte)((TestModeTime >> 8) & 0x000000FF); + result[12] = (byte)((TestModeTime >> 16) & 0x000000FF); + result[13] = (byte)((TestModeTime >> 24) & 0x000000FF); + + result[14] = (byte)(EmptyPipeThreshold & 0x00FF); + result[15] = (byte)((EmptyPipeThreshold >> 8) & 0x00FF); + + result[16] = PCBNumber[0]; + result[17] = PCBNumber[1]; + result[18] = PCBNumber[2]; + result[19] = PCBNumber[3]; + result[20] = PCBNumber[4]; + + result[21] = TestModeConfig; + + result[22] = (byte)(RadioAddress & 0x000000FF); + result[23] = (byte)((RadioAddress >> 8) & 0x000000FF); + result[24] = (byte)((RadioAddress >> 16) & 0x000000FF); + result[25] = (byte)((RadioAddress >> 24) & 0x000000FF); + + result[26] = (byte)(TempCalibration & 0x00FF); + result[27] = (byte)((TempCalibration >> 8) & 0x00FF); + + result[28] = (byte)(AlarmMask & 0x00FF); + result[29] = (byte)((AlarmMask >> 8) & 0x00FF); + + result[30] = (byte)(ConfigCheckSum & 0x00FF); + result[31] = (byte)((ConfigCheckSum >> 8) & 0x00FF); + + return result; + } + + /// + /// Create a configuration structure from a complete byte array + /// + /// A complete byte array data + /// ConfigStruct or null when byte array was not complete + public static ConfigStruct FromByteArray(byte[] data) + { + if (data.Length != Length) return null; + + ConfigStruct result = new ConfigStruct(); + + result.Version = data[0]; + result.MeterState = (MeterState)data[1]; + result.TargetTimeVeryLowBatt = (((UInt32)data[5] * 256 + data[4]) * 256 + data[3]) * 256 + data[2]; + result.TargetTimeLowBatt = (((UInt32)data[9] * 256 + data[8]) * 256 + data[7]) * 256 + data[6]; + result.TestModeTime = (((UInt32)data[13] * 256 + data[12]) * 256 + data[11]) * 256 + data[10]; + result.EmptyPipeThreshold = (UInt16)(data[15] * 256 + data[14]); + result.PCBNumber[0] = data[16]; + result.PCBNumber[1] = data[17]; + result.PCBNumber[2] = data[18]; + result.PCBNumber[3] = data[19]; + result.PCBNumber[4] = data[20]; + result.TestModeConfig = data[21]; + result.RadioAddress = (((UInt32)data[25] * 256 + data[24]) * 256 + data[23]) * 256 + data[22]; + result.TempCalibration = (UInt16)(data[27] * 256 + data[26]); + result.AlarmMask = (UInt16)(data[29] * 256 + data[28]); + result.ConfigCheckSum = (UInt16)(data[31] * 256 + data[30]); + + return result; + } + + /// + /// Update the configuration structure from an incomplete byte array + /// + /// Offset of byte array data in ConfigStruct + /// Byte array data + /// true when successful, false when data are not appropriate + public bool Update(int offset, byte[] data) + { + if (offset == 0 && data.Length == 2) + { + /// iPerl mode of function + Version = data[0]; + MeterState = (MeterState)data[1]; + return true; + } + else if (offset == 0 && data.Length == 4) + { + /// iPerl mode of function and extra 2 bytes + Version = data[0]; + MeterState = (MeterState)data[1]; + return true; + } + else if (offset == 21 && data.Length == 1) + { + /// TestModeConfig value + TestModeConfig = data[21 - offset]; + return true; + } + else if (offset == 0 && data.Length == Length) + { + /// Complete ConfigStruct + Version = data[0]; + MeterState = (MeterState)data[1]; + TargetTimeVeryLowBatt = (((UInt32)data[5] * 256 + data[4]) * 256 + data[3]) * 256 + data[2]; + TargetTimeLowBatt = (((UInt32)data[9] * 256 + data[8]) * 256 + data[7]) * 256 + data[6]; + TestModeTime = (((UInt32)data[13] * 256 + data[12]) * 256 + data[11]) * 256 + data[10]; + EmptyPipeThreshold = (UInt16)(data[15] * 256 + data[14]); + PCBNumber[0] = data[16]; + PCBNumber[1] = data[17]; + PCBNumber[2] = data[18]; + PCBNumber[3] = data[19]; + PCBNumber[4] = data[20]; + TestModeConfig = data[21]; + RadioAddress = (((UInt32)data[25] * 256 + data[24]) * 256 + data[23]) * 256 + data[22]; + TempCalibration = (UInt16)(data[27] * 256 + data[26]); + AlarmMask = (UInt16)(data[29] * 256 + data[28]); + ConfigCheckSum = (UInt16)(data[31] * 256 + data[30]); + return true; + } + else + return false; + } + + /// + /// Returns PCB number string (12 characters, 12 decimal digits) + /// + /// PCB number STRING + public string GetPcbNrString() + { + return PCBNumber2String(this.PCBNumber); + } + + /// + /// Converts PCBNumber to string (12 characters, 12 decimal digits) + /// + /// + /// PCB number string + public static string PCBNumber2String(byte[] pcbNumber) + { + if (pcbNumber.Length != 5) return string.Empty; + + Int64 number = 0; + for (int i = 4; i >= 0; i--) + { + number = 256 * number + (Int64)pcbNumber[i]; + } + + return number.ToString(); + } + + public override string ToString() + { + return string.Format("Config: V{0} State={1} VLoBattT={2}s LoBattT={3}s TestModeT={4}s EPThld={5} PCB#={6} TMCfg={7} RadioAddr={8} TempCalib={9} AlarmMask={10} CfgCheckSum={11}", + Version, + MeterState, + TargetTimeVeryLowBatt, + TargetTimeLowBatt, + TestModeTime, + EmptyPipeThreshold, + GetPcbNrString(), + TestModeConfig.ToString("X2"), + RadioAddress, + TempCalibration, + AlarmMask.ToString("X4"), + ConfigCheckSum.ToString("X4")); + } + + public string ToString(int sel) + { + return string.Format("{1} PCB#={6} TMCfg={7}", + Version, + MeterState, + TargetTimeVeryLowBatt, + TargetTimeLowBatt, + TestModeTime, + EmptyPipeThreshold, + GetPcbNrString(), + TestModeConfig.ToString("X2"), + RadioAddress, + TempCalibration, + AlarmMask.ToString("X4"), + ConfigCheckSum.ToString("X4")); + } + } +} diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/Enums.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/Enums.cs new file mode 100644 index 000000000..1d3e4b009 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/Enums.cs @@ -0,0 +1,110 @@ +/// +/// Copyright (c) 2015-2017 Sensus Metering Systems +/// +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + public enum MessageID + { + Calibration = 0x00, /// Access to stCalibration + Configuration = 0x01, /// Access to stConfig + Status = 0x02, /// Access to stStaus, read only + Power = 0x03, /// Access to stPower, containing power info from both processors + LCD = 0x04, /// Access to stLCD + EventData = 0x05, /// NOT USED + IntervalData = 0x06, /// NOT USED + Diagnostics = 0x07, /// Access tostMetroDiagArray, read onl + MetrologyMemory = 0x08, /// Memory block access, read only + Error_LongAck = 0x09, /// Error message + Command = 0x0A, /// Command to execute, with no arguments + Parameterizing = 0x0B, /// Parameterizing message is used in MCI-SPI interface only + Error_ShortAck = 0x0C, /// Short acknowledge message is used in MCI-SPI interface only + ChanelAlive = 0x0D, /// Channel alive message is used in MCI-SPI interface only + RadioPassthrough = 0x0E, /// RFID <-> Metrology <-> Radio passthrough message + ASICRegisterReadTest = 0x0F, /// ASIC Register read test + IMIDebugMessagesAccess = 0x10, /// IMI debug messages read test + ProductionChecksumsRead = 0x11, /// Production checksum read: Calibration (1 byte), Configuration (2 bytes), spare (4 bytes) + HardwareParametersTest = 0x12, /// Hardware Parameters Testing: User configurable fixed field drive time (1 byte) + /// + /// Notes: + /// 1. Short Ack message contains 1-byte error code and all the fields (Offset, Payload length, payload and password) will not be present. + /// 2. Channel Alive message does not contain the fields (Offset, Payload length, payload and password). + /// 3. Except the above two special messages, rest all the messages in the above table will follow the message format mentioned in sections 3.1 and 3.2. + /// + Count /// Number of MessageID-s + } + + public enum MeterType : byte + { + DN15 = 0, + CoaxManifold = 1, + DN20 = 2, + DN25 = 3, + DN26 = 4, /// DN25* + DN32 = 5, + DN40 = 6, + AutoDetect, + Count /// Number of meter types + } + + public enum VolumeUnits : byte + { + m3 = 0, + UK_gallon = 1, + US_gallon = 2, + Count /// Number of volume units + } + + public enum FlowArrow : byte + { + No = 0, + Right = 1, + Left = 2, + Count /// Number of flow arrows + } + + public enum MeterSealed : byte + { + InProduction = 0x00, + OutOfProduction = 0xA5, + Sealed = 0x5A, + } + + public enum MeterState : byte + { + None = 0, + Idle = 1, + Active = 2, + Test = 3, + EndOfLife = 4, + Count /// Number of meter states + } + + public enum FlowState : byte + { + No = 0, + Reverse = 1, + Forward = 2, + EmptyPipe = 3, + Count /// Number of flow states + } + + public enum OptoTelegramFlags : byte + { + OK = 0, + OK_TestStart, + OK_TestEnd, + InvalidTelegram, /// Wrong telegram format of checksum error + SyncError, + } + + public enum OptoState + { + Read, + Flush, + } +} diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/Factory.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/Factory.cs new file mode 100644 index 000000000..9c32e4825 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/Factory.cs @@ -0,0 +1,26 @@ +/// +/// Copyright (c) 2015-2017 Sensus Metering Systems +/// +using System.Collections.Generic; +using TBF.Rig.Generic; + +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + public class Factory : IComponentFactory + { + public string ClassName { get { return "RegisterReader for Genesis"; } } + + public void ResetStaticProperties() { GenesisHead.ResetStaticProperties(); } + + public IComponent DummyComponent() { return new GenesisHead(); } + + public IComponent GetComponent(IComponentCfg cfg, IList components) { return new GenesisHead(cfg); } + + public IComponentCfg DefaultConfig() { return new GenesisHeadCfg(this); } + + public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component) + { + return ComponentCfgBase.CreateFromDbEntity(GenesisHeadCfg.Serializer, component, this); + } + } +} diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHead.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHead.cs new file mode 100644 index 000000000..e684601c0 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHead.cs @@ -0,0 +1,638 @@ +using Config.Entities; +using log4net; +/// +/// Copyright (c) 2015-2018 Sensus Slovensko a.s. +/// +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using TBF.Rig.Generic; +using TBF.Rig.GenericDevices; +using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore; +using Xylem.Common.Hardware.WaterMeter.WaterMeterCore; +using Xylem.Common.Metrology.Measurements; +using Xylem.Common.Metrology.Measurements.Consts; +using Common; +using System.IO.Ports; + +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + public static class GenesisHeadBatch + { + public static Dictionary> MeterIdDetailResults = new Dictionary>(); + private static readonly ILog log = LogManager.GetLogger(typeof(GenesisHeadBatch)); + public static readonly Lazy BatchHolder = new Lazy(() => + { + return new MeterBatch(); + }); + + internal static bool Start(IRegReader[] registerReaders, string[] lastSNTexts) + { + try + { + MeterIdDetailResults = new Dictionary>(); + int index = 0; + var ret = false; + foreach (var rr in registerReaders) + { + if (rr is TestMethods.GenesisCommunication.GenesisHead.GenesisHead) + { + if (!string.IsNullOrEmpty(lastSNTexts[index])) + { + var myGenesis = ((TestMethods.GenesisCommunication.GenesisHead.GenesisHead)rr).SetUp(); + myGenesis.SerialNumber = lastSNTexts[index]; + ret = true; + } + } + index = index + 1; + } + + return ret; + } + catch (Exception ex) + { + log.Fatal(ex.Message, ex); + return false; + } + + } + } + /// + /// This component = instance of this class is a placeholder for a combined main watermeter + /// + public class GenesisHead : ComponentBase, IDevice, GenericDevices./*IRegisterReader*/IRegReader, IOperation + { + public List DetailedResults { get; set; } + private static readonly ILog log = LogManager.GetLogger(typeof(GenesisHead)); + public override string ToString() { return string.Format("Genesis({0})", Cfg.ToString(1)); } + + public RegisterReaderType RegisterReaderType { get { return RegisterReaderType.DataStream; } } + + private readonly GenesisHeadCfg genesisHeadCfg; + public int SlotNr { get { return genesisHeadCfg.SlotNr; } } + public double PulsesPerLtr { get { return 1000.0; } } + public double LtrsPerPulse { get { return 1 / PulsesPerLtr; } } + public string QuantityUnits { get; set; } + public int Position { get; }//...MF + double IRegReader.PulsesPerLtr { get; set; } + + // Adding the missing static method to resolve the error. ...MF + public static void ResetStaticProperties() + { + // Add logic to reset static properties here, if applicable. + // If no static properties exist, this method can remain empty. + } + +#if ORACLE_DB + public int WMType_ID { get { return iperlHeadCfg.ProcParams.WMType_ID; } } /// Required by Oracle DB + public int WMType_Rev { get { return iperlHeadCfg.ProcParams.WMType_Rev; } } /// Required by Oracle DB +#endif + public float CalibTarget { get { return (ushort)genesisHeadCfg.ProcParams.CalibTarget; } } + public ushort FactorLimitLo { get { return (ushort)genesisHeadCfg.ProcParams.FactorLimitLo; } } + public ushort FactorLimitHi { get { return (ushort)genesisHeadCfg.ProcParams.FactorLimitHi; } } + + /// Properties set by the Begin and the End form + //todo rd implement + public string SerialNr; + + + public string EndState + { + get { return endState; } + set { endState = value; } + } + + private string endState; + + public string BeginState + { + get { return beginState; } + set { beginState = value; } + } + + private string beginState; + + public bool Disabled + { + get { return disabled; } + set { disabled = value; } + } + + private bool disabled; + + public bool CommFailed + { + get { return commFailed; } + set { commFailed = value; } + } + + private bool commFailed; + + public int ResultCode + { + get { return resultCode; } + } + + private int resultCode; + + + /// ConfigStruct of the water meter obtained or updated by iPerlCommunication + public ConfigStruct ConfigStruct + { + get { return configStruct; } + set { configStruct = value; } + } + + private ConfigStruct configStruct; + + /// CalibrationStruct of the water meter obtained or updated by iPerlCommunication + public CalibrationStruct CalibrationStruct + { + get { return calibrationStruct; } + set { calibrationStruct = value; } + } + + private CalibrationStruct calibrationStruct; + + public ushort OrigCalibFactor; + public ushort CalibFactor { get { return (CalibrationStruct != null) ? CalibrationStruct.Calibration : (ushort)0; } } + + public double Q2ErrWOCorrection; + public bool Q2CorrectionDone; + public double Q2Correction; + public int Q2CorrRFlow; + public int Q2CorrLFlow; + + public double Diff2Hz8Hz; + public bool Hz2CorrectionDone; + public int Hz2Correction; + + public string FWVersion { get { return (CalibrationStruct != null) ? CalibrationStruct.FWVersionStr() : string.Empty; } } + + + /// Result of the last test used to calculate Q2 correction factors, etc + public Results.Entities.MeterTestRslt LastTestResult2; + public Results.Entities.MeterTestRslt LastTestResult; + public double NominalTestFlowLph; /// in liter per hour + + + /// + /// Required for IRegisterReader interface + /// + public int WMPulses { get { return wmPulses; } } + public int WMRefPulses { get { return wmRefPulses; } } + public double WMVolume { get { return wmVolume; } } + public double BeginWMState { get { return beginWMState; } } + public double EndWMState { get { return endWMState; } } + public double WMTestTime { get { return wmTestTime; } } + + private double beginWMState; + private double endWMState; + private double wmVolume; + private int wmPulses; + private int wmRefPulses; + private double wmTestTime; + + + /// Name set by the test, to be used as a part of the opto-data log file name + public string TestName; + + /// Name set by the test, to be used as a part of the opto-data log file name + public string BenchName; + + /// + /// Volume of water from the opto telegram + /// + private Int64 lastVolumeRaw; /// Last read raw volume + private double volumeLtr; /// + private double volumeLtr0; + + + /// + /// Timestamp from the opto telegram + /// + private double timestampSec; + private double timestampSec0; + + public bool NoSamples { get { return (timestampSecEnd - timestampSecStart) < float.Epsilon; } } + public double TimestampSecStart { get { return timestampSecStart; } } + public double TimestampSecEnd { get { return timestampSecEnd; } } + + private double timestampSecStart; + private double timestampSecEnd; + + public GenesisHead() + { + } + + public GenesisHead(Generic.IComponentCfg cfg) + : base(cfg) + { + ClearData(); + + genesisHeadCfg = cfg as GenesisHeadCfg; + + log.Debug(this.ToString()); + } + + private GenesisMeter myGenesis = null; + + + + + + public GenesisMeter SetUp() + { + try + { + Log("Call SetUp()"); + if (myGenesis != null) + { + myGenesis.DisposeMeter(); + } + //add for gen + + myGenesis = new GenesisMeter(); + myGenesis.SetupFromConfigFile(SlotNr); + Log("Add Meter to batch"); + GenesisHeadBatch.BatchHolder.Value.AddMeter(myGenesis); + Log("Log Raw Data"); + myGenesis.LogRawData(true); + return myGenesis; + } + catch (Exception e) + { + if (myGenesis != null) + { + Log(e.Message); + } + throw e; + } + + } + + /// + /// Clear data related to a specific water meter + /// + public void ClearData() + { + DetailedResults = new List(); + resultCode = 0; + + disabled = false; + commFailed = false; + endState = string.Empty; + beginState = string.Empty; + + configStruct = null; + calibrationStruct = null; + + LastTestResult = null; + NominalTestFlowLph = 0; + + OrigCalibFactor = 0; + Q2ErrWOCorrection = 0; + Q2CorrectionDone = false; + Q2CorrRFlow = 0; + } + + public override void Initialize() + { + ClearData(); + + if (DebugLevel == DebugMode.Normal) + { + + } + } + + public void RunDeviceBefore() + { + + + ////todo: RD- Login?? + //if (DebugLevel == DebugMode.Normal) + //{ + + + // if (myGenesis != null) + // { + // Log("TBF RunDeviceBefore"); + + // } + // else + // { + // //throw new Exception("No meter was bound!"); + // } + //} + //else if (DebugLevel == DebugMode.FailureDuringOperation) + //{ + //} + } + + public void RunDeviceAfter() { } + + public void StopDevice() + { + try + { + + if (DebugLevel == DebugMode.Normal && myGenesis != null) + { + myGenesis.DisposeMeter(); + + GenesisHeadBatch.BatchHolder.Value.RemoveMeter(myGenesis); + } + } + catch + { + } + } + + public void StopDevice2() { } + + /// + /// Events: Event.ReadRegisterDone, Event.Error + /// + /// ReadWaterMeter instance reference casted to IOperaton + public IOperation ReadRegisterOp() + { + return this; + } + + /// + /// Clear data/counters related to a specific tests + /// + public void Clear() + { + resultCode = 0; + + sampleNr = 0; + + volumeLtr = 0; + volumeLtr0 = 0; + timestampSec = 0; + timestampSec0 = 0; + + ReadPulses(); + } + + public void TestCompleted() + { + /// TODO: Implement + } + + private int sampleNr; /// This is to determine when the test start sample should be taken + + + private bool StoreStartPackage = false; + private bool StoreEndPackage = false; + private bool Enable = false; + public bool IsCalibration = false; + /// Start this operation + public void Start() + { + + + } + public void StartRead(string TestName, int batchNr, int repetitionNr) + { + StoreStartPackage = false; + StoreEndPackage = false; + //Start mesurement + if (DebugLevel == DebugMode.Normal) + { + if (myGenesis != null) + { + IsCalibration = false; + Log($"TBF Start Measurement {TestName}"); + myGenesis.CurrentActionText = $"Batch{batchNr}_Rep{repetitionNr}"; + + + if (TestName.ToLower().Contains("calib")) + { + IsCalibration = true; + //myGenesis.Login(); + myGenesis.StartCalibration(); + } + else if (TestName.ToLower().Contains("login")) + { + //myGenesis.Login(); + + myGenesis.InitMeasurement(); + } + else + { + DetailedResults = new List(); + + myGenesis.StartMeasurement(); + } + + StoreStartPackage = true; + } + } + } + + public void Log(string text) + { + if (DebugLevel == DebugMode.Normal) + { + if (myGenesis != null) + { + myGenesis.WriteLog(text); + } + } + } + + + /// Run this operation + /// eventDone + public Event Run() + { + if (DebugLevel == DebugMode.Normal) + { + if (myGenesis != null) + { + try + { + //var results = myGenesis.GetIntermediateMeasurementResult(); + //readOutResults(results); + } + catch (Exception) + { + + + } + + } + } + + return Event.ReadRegisterDone; + } + public double RefVolume = 0.0; + + public void Stop() + { + //Stop(null); + if (DebugLevel == DebugMode.Normal && myGenesis != null) + { + if (IsCalibration) + { + myGenesis.StopCalibration(); + } + else + { + myGenesis.StopMeasurement(); + } + } + } + + /// Stop this operation + public void Stop(Double? testTimeS = null, double? refVol = null) + { + + if (DebugLevel == DebugMode.Normal && myGenesis != null) + { + Log($"TBF Stop Measurement {IsCalibration} {testTimeS} {refVol }"); + if (IsCalibration) + { + //myGenesis.StopCalibration(); + int retryCounter = 400; + while (myGenesis.GetCalibrationState() != MeasurementStates.IsCompleted) + { + if (retryCounter < 0) + { + break; + } + Thread.Sleep(10); + retryCounter = retryCounter - 1; + } + try + { + var results = myGenesis.GetMainMeasurementResult(refVol, testTimeS, false); + + readOutResults(results, testTimeS); + if (refVol.HasValue && refVol.Value != 0.0) + { + + + myGenesis.BuildAndCheckCalibFactorsAllChannels(refVol.Value / 1000, testTimeS, Q2ErrWOCorrection); + myGenesis.SetCalibFactorsAllChannels(false); + } + + } + catch (Exception ex) + { + MarkAsError(); + Log("Error while Stop Calib " + ex.Message); + if (ex.InnerException != null) + { + Log("Inner Error:" + ex.InnerException.Message); + } + + } + } + else + { + int retryCounter = 4000; + //myGenesis.StopMeasurement(); + try + { + while (myGenesis.GetMeasurementState() != MeasurementStates.IsCompleted) + { + if (retryCounter < 0) + { + break; + } + Thread.Sleep(10); + retryCounter = retryCounter - 1; + } + + try + { + if (refVol.HasValue && testTimeS.HasValue) + { + Log("GetMainMeasurementResult V" + refVol.ToString() + " and S" + testTimeS.Value); + } + else + { + Log("GetMainMeasurementResult empty"); + } + + DetailedResults = myGenesis.GetAllMeasurementResults(refVol, testTimeS); + foreach (var item in DetailedResults) + { + Log("Detail Measurement Channel =" + item.Channel + "; CorrectedDutVolumeCm= " + item.CorrectedDutVolumeCm + "; DeviationDutToRefPer= " + item.DeviationDutToRefPer); + } + + + readOutResults(DetailedResults.First(), testTimeS); + } + catch (Exception ex) + { + MarkAsError(); + Log("Error while Stop Measurement " + ex.Message); + } + } + catch (Exception ex) + { + MarkAsError(); + Log("Error while GetMeasurementState " + ex.Message); + } + + + + } + + + StoreEndPackage = true; + + } + } + + private void readOutResults(MeasurementResults results, double? testTimeS) + { + volumeLtr = results.CorrectedDutVolumeCm * 1000; + timestampSec = results.DutStopRecord.GetTimeS(); + if (testTimeS.HasValue) + { + wmTestTime = testTimeS.Value; + } + else + { + wmTestTime = results.DutTimeS; + } + + wmVolume = results.CorrectedDutVolumeCm * 1000; + Log("DutFlowRateCmPh" + results.DutFlowRateCmPh.ToString()); + Log("CorrectedDutVolumeCm=" + results.CorrectedDutVolumeCm.ToString()); + Log("DutVolumeCm=" + results.DutVolumeCm.ToString()); + ReadPulses(); + } + + private void MarkAsError() + { + volumeLtr = 0; + timestampSec = 0; + wmTestTime = 0; + wmVolume = 0; + ReadPulses(); + } + + private void ReadPulses() + { + beginWMState = volumeLtr0; + endWMState = volumeLtr; + wmPulses = (int)(wmVolume * (double)PulsesPerLtr + 0.5); + wmRefPulses = StateMachine.ControlBoardMain.RefPulses;//EtPulses(0);//...MF + } + + private bool optoSerialPortParsingEnabled; + + + + + + } +} diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfg.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfg.cs new file mode 100644 index 000000000..a1ddd8226 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfg.cs @@ -0,0 +1,63 @@ +/// +/// Copyright (c) 2015-2017 Sensus Metering Systems +/// +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Xml.Serialization; +using Config.Entities; +using TBF.Rig.Generic; +using TBF.Resources; +using Common; + +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + public class GenesisHeadCfg : ComponentCfgBase, Generic.IComponentCfg + { + public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(GenesisHeadCfg) })[0]; + public override XmlSerializer GetSerializer() { return Serializer; } + + + public IComponentCfgCtrl GetControl(IList cmpntEntities) { return new GenesisHeadCfgCtrl(); }//...MF + + /// + /// Serialized parameters + /// + public int SlotNr; /// Number written to QuidoRS to connct the watermeter to RfidComPort, 1 .. 10 + + /// Procedure parameters + [XmlIgnore] + public ProcParams ProcParams; + public override IParamsProvider GetRuntimeProcParamsProvider() { return ProcParams; } + public override IParamsProvider CreateProcParamsProvider() { return new ProcParams(true); } + + [XmlIgnore] + public MeterType MeterType { get { return (ProcParams != null) ? ProcParams.MeterType : MeterType.AutoDetect; } } + + + /// Private parameterless constructor invoked by all other (public) constructors + GenesisHeadCfg() + { + Name = "Genesis"; + ParentName = string.Empty; + SlotNr = 0; + ProcParams = new ProcParams(true); + } + + public GenesisHeadCfg(IComponentFactory factory) + : this() + { + this.Factory = factory; + } + + public string ToString(int i) + { + return string.Format("{0} SlotNr={1}", + Name, + SlotNr + ); + } + } +} diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfgCtrl.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfgCtrl.cs new file mode 100644 index 000000000..14fc15a2d --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfgCtrl.cs @@ -0,0 +1,92 @@ +/// +/// Copyright (c) 2015-2017 Sensus Metering Systems +/// +using System; +using System.Net; +using System.Net.Sockets; +using System.Windows.Forms; +using log4net; +using TBF.Rig.Generic; +using TBF.Resources; +using Config.Entities; +using Common; + +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + public partial class GenesisHeadCfgCtrl : UserControl, IComponentCfgCtrl + { + static readonly ILog log = LogManager.GetLogger(typeof(GenesisHeadCfgCtrl)); + + public bool ShowMore { get { return false; } } + + GenesisHeadCfg config; + public IComponentCfg Config + { + get { return config as IComponentCfg; } + set + { + config = value as GenesisHeadCfg; + Redraw(); + } + } + + public GenesisHeadCfgCtrl() + { + InitializeComponent(); + } + + private void WaterMeterCfgCtrl_Load(object sender, EventArgs e) + { + nameLabel.Text = Strings.Name; + classNameLabel.Text = config.Factory.ClassName; + slotNrTextBox.Text = config.SlotNr.ToString(); + Redraw(); + } + + public void Closing() + { + } + + void Redraw() + { + if (config == null) return; /// Control was not loaded, settings were not changed + nameTextBox.Text = config.Name; + + + } + + public void Unlock() + { + nameTextBox.Enabled = true; + slotNrTextBox.Enabled = true; + } + + public CfgUpdateFlags VerifyCfg(ref string message) + { + CfgUpdateFlags flags = CfgUpdateFlags.None; + + int dummy; + + if (!int.TryParse(slotNrTextBox.Text, out dummy) || dummy < 1 || dummy > 7) + { + flags |= CfgUpdateFlags.Error; + message += Environment.NewLine + string.Format(Strings.Invalid_0, muxBoardNrLabel.Text); + } + + return flags; + } + + public CfgUpdateFlags UpdateCfg() + { + CfgUpdateFlags flags = CfgUpdateFlags.RestartRqrd; + + if (config == null) return CfgUpdateFlags.Error; /// Control was not loaded, settings were not changed + + config.Name = nameTextBox.Text; + + config.SlotNr = int.Parse(slotNrTextBox.Text); + + return flags; + } + } +} diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfgCtrl.designer.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfgCtrl.designer.cs new file mode 100644 index 000000000..a1e20abd2 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfgCtrl.designer.cs @@ -0,0 +1,121 @@ +/// +/// Copyright (c) 2015-2017 Sensus Metering Systems +/// +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + partial class GenesisHeadCfgCtrl : System.Windows.Forms.UserControl + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.nameTextBox = new System.Windows.Forms.TextBox(); + this.nameLabel = new System.Windows.Forms.Label(); + this.classNameLabel = new System.Windows.Forms.Label(); + this.slotNrTextBox = new System.Windows.Forms.TextBox(); + this.muxBoardNrLabel = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // nameTextBox + // + this.nameTextBox.Enabled = false; + this.nameTextBox.Location = new System.Drawing.Point(135, 40); + this.nameTextBox.Name = "nameTextBox"; + this.nameTextBox.Size = new System.Drawing.Size(121, 20); + this.nameTextBox.TabIndex = 2; + // + // nameLabel + // + this.nameLabel.AutoSize = true; + this.nameLabel.Location = new System.Drawing.Point(25, 43); + this.nameLabel.Name = "nameLabel"; + this.nameLabel.Size = new System.Drawing.Size(35, 13); + this.nameLabel.TabIndex = 1; + this.nameLabel.Text = "Name"; + // + // classNameLabel + // + this.classNameLabel.AutoSize = true; + this.classNameLabel.Location = new System.Drawing.Point(132, 16); + this.classNameLabel.Name = "classNameLabel"; + this.classNameLabel.Size = new System.Drawing.Size(60, 13); + this.classNameLabel.TabIndex = 0; + this.classNameLabel.Text = "ClassName"; + // + // slotNrTextBox + // + this.slotNrTextBox.Enabled = false; + this.slotNrTextBox.Location = new System.Drawing.Point(135, 63); + this.slotNrTextBox.Name = "slotNrTextBox"; + this.slotNrTextBox.Size = new System.Drawing.Size(34, 20); + this.slotNrTextBox.TabIndex = 9; + // + // muxBoardNrLabel + // + this.muxBoardNrLabel.AutoSize = true; + this.muxBoardNrLabel.Location = new System.Drawing.Point(25, 66); + this.muxBoardNrLabel.Name = "muxBoardNrLabel"; + this.muxBoardNrLabel.Size = new System.Drawing.Size(37, 13); + this.muxBoardNrLabel.TabIndex = 8; + this.muxBoardNrLabel.Text = "Slot nr"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(176, 66); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(31, 13); + this.label3.TabIndex = 13; + this.label3.Text = "1 .. 6"; + // + // GenesisHeadCfgCtrl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.label3); + this.Controls.Add(this.slotNrTextBox); + this.Controls.Add(this.muxBoardNrLabel); + this.Controls.Add(this.nameTextBox); + this.Controls.Add(this.nameLabel); + this.Controls.Add(this.classNameLabel); + this.Name = "GenesisHeadCfgCtrl"; + this.Size = new System.Drawing.Size(396, 123); + this.Load += new System.EventHandler(this.WaterMeterCfgCtrl_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox nameTextBox; + private System.Windows.Forms.Label nameLabel; + private System.Windows.Forms.Label classNameLabel; + private System.Windows.Forms.TextBox slotNrTextBox; + private System.Windows.Forms.Label muxBoardNrLabel; + private System.Windows.Forms.Label label3; + } +} diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfgCtrl.resx b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfgCtrl.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/GenesisHeadCfgCtrl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/OptoReceivedEventArgs.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/OptoReceivedEventArgs.cs new file mode 100644 index 000000000..8cd2ef105 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/OptoReceivedEventArgs.cs @@ -0,0 +1,20 @@ +/// +/// Copyright (c) 2015-2017 Sensus Metering Systems +/// +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + public class OptoReceivedEventArgs : EventArgs + { + public string Data; + + public OptoReceivedEventArgs(string data) + { + this.Data = data; + } + } +} diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/OptoTelegramRaw.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/OptoTelegramRaw.cs new file mode 100644 index 000000000..1ad44d775 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/OptoTelegramRaw.cs @@ -0,0 +1,295 @@ +/// +/// Copyright (c) 2015-2017 Sensus Metering Systems +/// +using System; +using System.Globalization; +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + public class OptoTelegramRaw + { + public static readonly int Length = 42; + private static CultureInfo culture; + + + /// + /// Strobed value + /// + public static decimal TestStartTimestampDec; + + /// + /// Stored values + /// + public OptoTelegramFlags Flags; + + public DateTime DateTime; /// From PC + public float RefFlow; /// [m3/h] + public int Counter; + + public UInt32 EmfRaw; /// From iPerl opto data + public Int16 MagneticFieldRaw; + public Int16 FlowRaw; + public UInt32 VolumeRaw; + public Int64 VolumeRawExt; + public Int16 Impedance; + public UInt32 Timestamp; + public Int64 TimestampExt; + public byte CheckSum; + + /// + /// Calculated values + /// + public double EMF() + { + Int32 signedEmf = (EmfRaw > 0x7FFFFF) ? ((int)EmfRaw - 0x1000000) : (int)EmfRaw; + return 0.000000333 * (double)signedEmf; + } + public double MagneticField() { return (double)MagneticFieldRaw; } + public double Flow(double scalingFactor) { return 0.225 * scalingFactor * (double)FlowRaw; } + public double Volume(double scalingFactor) { return 0.0000625 * scalingFactor * (double)VolumeRawExt; } + public Int32 FlipTime() { return Impedance; } + public decimal TimestampDec() { return (decimal)TimestampExt / (decimal)8192; } + public double VolumeDelta(double scalingFactor, OptoTelegramRaw previous) { return (previous == null) ? 0 : Volume(scalingFactor) - previous.Volume(scalingFactor); } + public decimal TimeDelta() { return TimestampDec() - TestStartTimestampDec; } + public string Label() + { + if (Flags == OptoTelegramFlags.OK_TestStart) return "#### start test ####"; + else if (Flags == OptoTelegramFlags.OK_TestEnd) return "#### end of test ####"; + else return string.Empty; + } + + + static OptoTelegramRaw() + { + culture = CultureInfo.CreateSpecificCulture("DE"); /// This is to use comma as decimal number separator + } + + public OptoTelegramRaw() + { + } + + /// + /// Parses optical telegram and returns OptoTelegramRaw object + /// + /// + /// Create a configuration structure from a complete byte array + /// + /// Telegram description: + /// + /// AAAAAA[tab]BBBB[tab]CCCC[tab]DDDDDD[tab]EEEE[tab]FFFFFFFF[tab]GG[cr][lf] (42 bytes) + /// + /// Data Comment Type Calculate to decimal + /// ---------------------------------------------------------------- + /// AAAAAA EMF Int24 Value * 0.000000333 + /// BBBB Magnetic field Int16 Value + /// CCCC Flow Int16 Value * 0.225 * Scalig factor + /// DDDDDD Volume Int24 Value / 16000 * Scaling factor + /// EEEE Impedance Int16 Value + /// FFFFFFFF Timestamp Uint32 Value / 8192 + /// GG Checksum Byte + /// ---------------------------------------------------------------- + /// + /// Example: + /// FFFFFE 51EA 0000 65324E 0087 F6319DFF 86 + /// FFDD3A 51F9 0000 65324E 0088 F631A60B 45 + /// ... + /// + /// A complete byte array data + /// true = telegram OK, false = telegram NOK + public bool UpdateFromString(string telegram, int counter, ref Int64 volumeRawExtLast, ref Int64 timestampExtLast) + { + DateTime = DateTime.Now; + Counter = counter; + RefFlow = (float)Sequences.ProcessData.RefFlow.Val; + + if ((telegram == null) || (telegram.Length < Length) || + (telegram[6] != '\t') || (telegram[11] != '\t') || (telegram[16] != '\t') || + (telegram[23] != '\t') || (telegram[28] != '\t') || (telegram[37] != '\t') || + (telegram[40] != '\r') || (telegram[41] != '\n')) + { + Flags = OptoTelegramFlags.InvalidTelegram; + return false; + } + + bool f1 = UInt32.TryParse(telegram.Substring(0, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out EmfRaw); + bool f2 = Int16.TryParse(telegram.Substring(7, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out MagneticFieldRaw); + bool f3 = Int16.TryParse(telegram.Substring(12, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out FlowRaw); + bool f4 = UInt32.TryParse(telegram.Substring(17, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out VolumeRaw); + bool f5 = Int16.TryParse(telegram.Substring(24, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out Impedance); + bool f6 = UInt32.TryParse(telegram.Substring(29, 8), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out Timestamp); + bool f7 = byte.TryParse(telegram.Substring(38, 2), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out CheckSum); + + bool allOk = f1 && f2 && f3 && f4 && f5 && f6 && f7; + Flags = allOk ? OptoTelegramFlags.OK : OptoTelegramFlags.InvalidTelegram; + + /// + /// Cope with 'VolumeRaw' overflow + /// + Int64 uncorrected = (Int64)(((UInt64)volumeRawExtLast & 0xFFFFFFFFFF000000UL) | VolumeRaw); + if (Math.Abs(uncorrected - volumeRawExtLast) <= 0x800000L) + { + VolumeRawExt = volumeRawExtLast = uncorrected; + } + else if (Math.Abs(uncorrected + 0x1000000L - volumeRawExtLast) <= 0x800000L) + { + VolumeRawExt = volumeRawExtLast = uncorrected + 0x1000000L; + } + else if (Math.Abs(uncorrected - 0x1000000L - volumeRawExtLast) <= 0x800000L) + { + VolumeRawExt = volumeRawExtLast = uncorrected - 0x1000000L; + } + else + { + VolumeRawExt = volumeRawExtLast = uncorrected; + } + + /// + /// Cope with 'Timestamp' overflow + /// + uncorrected = (Int64)(((UInt64)timestampExtLast & 0xFFFFFFFF00000000UL) | Timestamp); + if (Math.Abs(uncorrected - timestampExtLast) <= 0x80000000L) + { + TimestampExt = timestampExtLast = uncorrected; + } + else if (Math.Abs(uncorrected + 0x100000000L - timestampExtLast) <= 0x80000000L) + { + TimestampExt = timestampExtLast = uncorrected + 0x100000000L; + } + else if (Math.Abs(uncorrected - 0x100000000L - timestampExtLast) <= 0x80000000L) + { + TimestampExt = timestampExtLast = uncorrected - 0x100000000L; + } + else + { + TimestampExt = timestampExtLast = uncorrected; + } + + return allOk; + } + + /// + /// Alternative to UpdateFromString(...) when data are flushed + /// + public bool UpdateFromStringDummy(string telegram) + { + DateTime = DateTime.Now; + RefFlow = (float)Sequences.ProcessData.RefFlow.Val; + + if ((telegram == null) || (telegram.Length < Length) || + (telegram[6] != '\t') || (telegram[11] != '\t') || (telegram[16] != '\t') || + (telegram[23] != '\t') || (telegram[28] != '\t') || (telegram[37] != '\t') || + (telegram[40] != '\r') || (telegram[41] != '\n')) + { + Flags = OptoTelegramFlags.InvalidTelegram; + return false; + } + + //bool f1 = UInt32.TryParse(telegram.Substring(0, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out EmfRaw); + //bool f2 = Int16.TryParse(telegram.Substring(7, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out MagneticFieldRaw); + //bool f3 = Int16.TryParse(telegram.Substring(12, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out FlowRaw); + //bool f4 = UInt32.TryParse(telegram.Substring(17, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out VolumeRaw); + //bool f5 = Int16.TryParse(telegram.Substring(24, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out Impedance); + //bool f6 = UInt32.TryParse(telegram.Substring(29, 8), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out Timestamp); + //bool f7 = byte.TryParse(telegram.Substring(38, 2), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out CheckSum); + //return f1 && f2 && f3 && f4 && f5 && f6 && f7; + + return true; + } + + + public void SetFlags(OptoTelegramFlags flags) + { + this.Flags = flags; + } + + + public string ToString(double scalingFactor, OptoTelegramRaw previous) + { + if (Flags == OptoTelegramFlags.SyncError) + { + return "Sychronization error"; + } + else if (Flags == OptoTelegramFlags.InvalidTelegram) + { + return "Invalid telegram"; + } + else /// if (flags == OptoTelegramFlags.OK / OptoTelegramFlags.OK_TestStart / OptoTelegramFlags.OK_TestEnd) + { + return string.Format("{0}:{1}:{2}.{3}\t{4} :\t{5}\t{6}\t{7}\t{8}\t{9}\t{10}\t{11}\t{12}\t{13}\t{14}\t{15}\t{16}\t{17}\t{18}\t{19}\t{20}\t{21}\t{22}", + DateTime.Hour.ToString("D2"), + DateTime.Minute.ToString("D2"), + DateTime.Second.ToString("D2"), + DateTime.Millisecond.ToString("D4"), + Counter, + EmfRaw.ToString("X6"), + MagneticFieldRaw.ToString("X4"), + FlowRaw.ToString("X4"), + VolumeRaw.ToString("X6"), + Impedance.ToString("X4"), + Timestamp.ToString("X8"), + CheckSum.ToString("X2"), + EMF().ToString("F4", culture), + MagneticField().ToString("F0", culture), + Flow(scalingFactor).ToString("F2", culture), + Volume(scalingFactor).ToString("F4", culture), + FlipTime().ToString("F0", culture), + TimestampDec().ToString("F4", culture), + (RefFlow * 1000).ToString("F2", culture), + VolumeDelta(scalingFactor, previous).ToString("F4", culture), + TimeDelta().ToString("F3", culture), + scalingFactor.ToString("F1", culture), + Label()); + } + } + + /// + /// Filter RefFlow data in an array of OptoTelegramRaw objects by a FIR filter: + /// + /// kSize = 5, kSize2 = 2 + /// + /// i k + /// --------------------------------------------------------------------------- + /// 0 -5 filtered[0] = data[0] + /// 1 -4 filtered[1] = data[1] + /// 2 -3 filtered[2] = data[0]*k[0] + ... + data[4]*k[4] + /// 3 -2 filtered[3] = data[1]*k[0] + ... + data[5]*k[4] + /// 4 -1 filtered[4] = data[2]*k[0] + ... + data[6]*k[4] + /// 5 0 data[0] = filtered[0], filtered[0] = data[3]*k[0] + ... + data[7]*k[4] + /// 6 1 data[1] = filtered[1], filtered[1] = data[4]*k[0] + ... + data[8]*k[4] + /// 7 ... + /// + /// array of OptoTelegramRaw objects + /// number of objects to process + public static void FIRFilterFlow(OptoTelegramRaw[] optoData, int optoDataCount) + { + float[] kernel = new float[] { 0.1f, 0.2f, 0.4f, 0.2f, 0.1f }; + int kSize = kernel.Length; + int kSize2 = kernel.Length / 2; + + float[] filtered = new float[kSize]; + + for (int i = 0; i < optoDataCount; i++) + { + int k = i - kSize; + if (k >= 0) optoData[k].RefFlow = filtered[i % kSize]; + + if (i < kSize2 || i >= optoDataCount - kSize2) + { + filtered[i % kSize] = optoData[i].RefFlow; + } + else + { + float weoightedSum = 0; + for (int j = -kSize2; j <= kSize2; j++) + weoightedSum += optoData[i + j].RefFlow * kernel[j + kSize2]; + + filtered[i % kSize] = weoightedSum; + } + } + + for (int k = optoDataCount - kSize; k < optoDataCount; k++) + { + if (k >= 0) optoData[k].RefFlow = filtered[k % kSize]; + } + } + } +} diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/ProcParams.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/ProcParams.cs new file mode 100644 index 000000000..aba7c4fc7 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/ProcParams.cs @@ -0,0 +1,186 @@ +/// +/// Copyright (c) 2015-2017 Sensus Metering Systems +/// +using System; +using System.IO; +using System.Text; +using System.Xml.Serialization; +using Config.Entities; +using TBF.Rig.Generic; +using TBF.Resources; +using Common; + +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + public partial class ProcParams : ProcedureParamsBase, IParamsProvider, IProcedureParams + { + public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(ProcParams) })[0]; + public override XmlSerializer GetSerializer() { return Serializer; } + + public MeterType MeterType; + public float CalibTarget; /// Target error after calibration in [%] + public int FactorLimitLo; /// Lower limit for the calibration factor + public int FactorLimitHi; /// Upper limit for the calibration factor +#if ORACLE_DB + public int WMType_ID; /// Required for Oracle DB: ID_WZTyp in table VT_PRUEFPUNKT_SOLL_SD + public int WMType_Rev; /// Required for Oracle DB: Rev_WZTyp in table VT_PRUEFPUNKT_SOLL_SD +#endif + + + public override void InitializeAll() + { + MeterType = MeterType.AutoDetect; + CalibTarget = 0; + FactorLimitLo = 1000; + FactorLimitHi = 8000; +#if ORACLE_DB + WMType_ID = 2; /// Value for iPerl DN15 + WMType_Rev = 1; /// Value for iPerl DN15 +#endif + } + + string[] paramNames = new string[] + { + "iPerl type", + "Calib. target [%]", + "Calib. factor Lo", + "Calib. factor Hi", +#if ORACLE_DB + "WMType ID", + "WMType Rev.", +#endif + }; + public override string ParamName(int i) { return paramNames[i]; } + public override int ParamsCount() { return paramNames.Length; } + + public override string ToString(int i) + { + switch (i) + { + case 0: return MeterType.ToString(); + case 1: return CalibTarget.ToString(); + case 2: return FactorLimitLo.ToString(); + case 3: return FactorLimitHi.ToString(); +#if ORACLE_DB + case 4: return WMType_ID.ToString(); + case 5: return WMType_Rev.ToString(); +#endif + default: return string.Empty; + } + } + + public CfgUpdateFlags UpdateParam(int i, string strValue) + { + switch (i) + { + case 0: + for (MeterType mt = 0; mt < MeterType.Count; mt++) + { + if (mt.ToString().Equals(strValue)) { MeterType = mt; return CfgUpdateFlags.None; } + } + break; + case 1: CalibTarget = Utils.ParseSFloat(strValue); return CfgUpdateFlags.None; + case 2: FactorLimitLo = int.Parse(strValue); return CfgUpdateFlags.None; + case 3: FactorLimitHi = int.Parse(strValue); return CfgUpdateFlags.None; +#if ORACLE_DB + case 4: WMType_ID = int.Parse(strValue); return CfgUpdateFlags.None; + case 5: WMType_Rev = int.Parse(strValue); return CfgUpdateFlags.None; +#endif + default: return CfgUpdateFlags.None; + } + + return CfgUpdateFlags.None; + } + + public bool ValidateParam(int i, string strValue, out string message) + { + message = string.Empty; + + int iDummy; + float fDummy; + + switch (i) + { + case 0: + for (MeterType mt = 0; mt < MeterType.Count; mt++) if (mt.ToString().Equals(strValue)) return true; + break; + case 1: + if (Utils.TryParseSFloat(strValue, out fDummy) && fDummy >= -10.0f && fDummy <= 10.0f) return true; + break; + case 2: + case 3: + if (int.TryParse(strValue, out iDummy) && iDummy >= 1000 && iDummy <= 8000) return true; + break; + +#if ORACLE_DB + case 4: /// WMType_ID + case 5: /// WMType_Rev + if (int.TryParse(strValue, out iDummy)) return true; + break; +#endif + default: + message = "Invalid index"; + return false; + } + + message = ParamName(i) + " is invalid"; + return false; + } + + void CopyContentTo(ProcParams prms) + { + prms.MeterType = this.MeterType; + prms.CalibTarget = this.CalibTarget; + prms.FactorLimitLo = this.FactorLimitLo; + prms.FactorLimitHi = this.FactorLimitHi; +#if ORACLE_DB + prms.WMType_ID = this.WMType_ID; + prms.WMType_Rev = this.WMType_Rev; +#endif + } + + public IParamsProvider Clone() + { + ProcParams pars = new ProcParams(); + CopyContentTo(pars); + return pars; + } + + public virtual bool UpdateFromDbEntity(ComponentProcedure dbEntity) + { + if (dbEntity == null) return false; + try + { + ProcParams tmp = Serializer.Deserialize(new StringReader(dbEntity.Parameters)) as ProcParams; + + procedureParamsEntity = dbEntity; + componentName = dbEntity.CmpntName; + procedure = dbEntity.Procedure; + + if (tmp != null) tmp.CopyContentTo(this); + return true; + } + catch + { + } + return false; + } + + + public ProcParams() + { + } + + public ProcParams(bool initialize) + { + if (initialize) InitializeAll(); + } + + public ProcParams(ComponentProcedure procParamsEntity, string componentName, Procedure procedure) + { + this.procedureParamsEntity = procParamsEntity; + this.componentName = componentName; + this.procedure = procedure; + } + } +} diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/StatusStruct.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/StatusStruct.cs new file mode 100644 index 000000000..c02715a81 --- /dev/null +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisHead/StatusStruct.cs @@ -0,0 +1,160 @@ +/// +/// Copyright (c) 2015-2017 Sensus Metering Systems +/// +using System; + +namespace TBF.Rig.TestMethods.GenesisCommunication.GenesisHead +{ + public class StatusStruct + { + public static readonly int Length = 48; + + public Byte Version; + public FlowState FlowState; + public UInt32 BillingVolume; + public UInt32 ForwardVolume; + public UInt32 ReverseVolume; + public UInt32 SecondsActive; + public UInt32 SecondsIdle; + public UInt32 SecondsUsed; + public UInt32 UTC; + public Int32 ScaledAvgFlowRate; + public UInt16 PeakFlowRate; + public UInt16 AlarmState; + public byte RebootCount; + public byte[] AlarmCount; + public UInt16 FlipTime; + + + public StatusStruct() + { + AlarmCount = new byte[7]; + } + + public byte[] ToByteArray() + { + byte[] result = new byte[Length]; + + result[0] = Version; + result[1] = (byte)FlowState; + + result[2] = (byte)(BillingVolume & 0x000000FF); + result[3] = (byte)((BillingVolume >> 8) & 0x000000FF); + result[4] = (byte)((BillingVolume >> 16) & 0x000000FF); + result[5] = (byte)((BillingVolume >> 24) & 0x000000FF); + + result[6] = (byte)(ForwardVolume & 0x000000FF); + result[7] = (byte)((ForwardVolume >> 8) & 0x000000FF); + result[8] = (byte)((ForwardVolume >> 16) & 0x000000FF); + result[9] = (byte)((ForwardVolume >> 24) & 0x000000FF); + + result[10] = (byte)(ReverseVolume & 0x000000FF); + result[11] = (byte)((ReverseVolume >> 8) & 0x000000FF); + result[12] = (byte)((ReverseVolume >> 16) & 0x000000FF); + result[13] = (byte)((ReverseVolume >> 24) & 0x000000FF); + + result[14] = (byte)(SecondsActive & 0x000000FF); + result[15] = (byte)((SecondsActive >> 8) & 0x000000FF); + result[16] = (byte)((SecondsActive >> 16) & 0x000000FF); + result[17] = (byte)((SecondsActive >> 24) & 0x000000FF); + + result[18] = (byte)(SecondsIdle & 0x000000FF); + result[19] = (byte)((SecondsIdle >> 8) & 0x000000FF); + result[20] = (byte)((SecondsIdle >> 16) & 0x000000FF); + result[21] = (byte)((SecondsIdle >> 24) & 0x000000FF); + + result[22] = (byte)(SecondsUsed & 0x000000FF); + result[23] = (byte)((SecondsUsed >> 8) & 0x000000FF); + result[24] = (byte)((SecondsUsed >> 16) & 0x000000FF); + result[25] = (byte)((SecondsUsed >> 24) & 0x000000FF); + + result[26] = (byte)(UTC & 0x000000FF); + result[27] = (byte)((UTC >> 8) & 0x000000FF); + result[28] = (byte)((UTC >> 16) & 0x000000FF); + result[29] = (byte)((UTC >> 24) & 0x000000FF); + + result[30] = (byte)(ScaledAvgFlowRate & 0x000000FF); + result[31] = (byte)((ScaledAvgFlowRate >> 8) & 0x000000FF); + result[32] = (byte)((ScaledAvgFlowRate >> 16) & 0x000000FF); + result[33] = (byte)((ScaledAvgFlowRate >> 24) & 0x000000FF); /// TODO: test with negative value + + result[34] = (byte)(PeakFlowRate & 0x00FF); + result[35] = (byte)((PeakFlowRate >> 8) & 0x00FF); + + result[36] = (byte)(AlarmState & 0x00FF); + result[37] = (byte)((AlarmState >> 8) & 0x00FF); + + result[38] = RebootCount; + + result[39] = AlarmCount[0]; + result[40] = AlarmCount[1]; + result[41] = AlarmCount[2]; + result[42] = AlarmCount[3]; + result[43] = AlarmCount[4]; + result[44] = AlarmCount[5]; + result[45] = AlarmCount[6]; + + result[46] = (byte)(FlipTime & 0x00FF); + result[47] = (byte)((FlipTime >> 8) & 0x00FF); + + return result; + } + + public static StatusStruct FromByteArray(byte[] data) + { + if (data.Length != Length) return null; + + StatusStruct result = new StatusStruct(); + + result.Version = data[0]; + result.FlowState = (FlowState)data[1]; + result.BillingVolume = (((UInt32)data[5] * 256 + data[4]) * 256 + data[3]) * 256 + data[2]; + result.ForwardVolume = (((UInt32)data[9] * 256 + data[8]) * 256 + data[7]) * 256 + data[6]; + result.ReverseVolume = (((UInt32)data[13] * 256 + data[12]) * 256 + data[11]) * 256 + data[10]; + result.SecondsActive = (((UInt32)data[17] * 256 + data[16]) * 256 + data[15]) * 256 + data[14]; + result.SecondsIdle = (((UInt32)data[21] * 256 + data[20]) * 256 + data[19]) * 256 + data[18]; + result.SecondsUsed = (((UInt32)data[25] * 256 + data[24]) * 256 + data[23]) * 256 + data[22]; + result.UTC = (((UInt32)data[29] * 256 + data[28]) * 256 + data[27]) * 256 + data[26]; + result.ScaledAvgFlowRate = (((Int32)data[33] * 256 + data[32]) * 256 + data[31]) * 256 + data[30]; /// TODO: test with negative value + result.PeakFlowRate = (UInt16)(data[34] + 256 * data[35]); + result.AlarmState = (UInt16)(data[36] + 256 * data[37]); + result.RebootCount = data[38]; + result.AlarmCount[0] = data[39]; + result.AlarmCount[1] = data[40]; + result.AlarmCount[2] = data[41]; + result.AlarmCount[3] = data[42]; + result.AlarmCount[4] = data[43]; + result.AlarmCount[5] = data[44]; + result.AlarmCount[6] = data[45]; + result.FlipTime = (UInt16)(data[46] * 256 + data[47]); + + return result; + } + + public override string ToString() + { + return string.Format("Status: V{0} Flow={1} BillVol={2} ForwVol={3} RevVol={4} SecActive={5}s SecIdle={6}s SecUsed={7}s UTC={8} AvgFlowRate={9} PeekFlowRate={10} AlarmState={11} RebootCount={12} A0={13} A1={14} A2={15} A3={16} A4={17} A5={18} A6={19} FlipTime={20}", + Version, + FlowState, + BillingVolume, + ForwardVolume, + ReverseVolume, + SecondsActive, + SecondsIdle, + SecondsUsed, + UTC, + ScaledAvgFlowRate, + PeakFlowRate, + AlarmState, + RebootCount, + AlarmCount[0], + AlarmCount[1], + AlarmCount[2], + AlarmCount[3], + AlarmCount[4], + AlarmCount[5], + AlarmCount[6], + FlipTime); + } + } +} diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index f70b0bb3c..698267864 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -117,6 +117,9 @@ ..\packages\log4net.2.0.15\lib\net45\log4net.dll + + ..\packages\Common\Logic.ProductionToProductMapper.dll + ..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll @@ -167,6 +170,21 @@ + + ..\packages\Common\Xylem.Common.CommonCore.dll + + + ..\packages\Common\Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.dll + + + ..\packages\Common\Xylem.Common.Hardware.WaterMeter.WaterMeterCore.dll + + + ..\packages\Common\Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters.dll + + + ..\packages\Common\Xylem.Common.Metrology.Measurements.dll + @@ -1571,6 +1589,18 @@ TestMethodCfgCtrl.cs + + + + + + + + + + + + Component @@ -3488,6 +3518,7 @@ TestMethodCfgCtrl.cs + GrabImageCfgCtrl.cs diff --git a/packages/Antlr3.Runtime.3.5.1/.signature.p7s b/packages/Antlr3.Runtime.3.5.1/.signature.p7s new file mode 100644 index 000000000..186744ebd Binary files /dev/null and b/packages/Antlr3.Runtime.3.5.1/.signature.p7s differ diff --git a/packages/Antlr3.Runtime.3.5.1/Antlr3.Runtime.3.5.1.nupkg b/packages/Antlr3.Runtime.3.5.1/Antlr3.Runtime.3.5.1.nupkg new file mode 100644 index 000000000..b37b2f63c Binary files /dev/null and b/packages/Antlr3.Runtime.3.5.1/Antlr3.Runtime.3.5.1.nupkg differ diff --git a/packages/Antlr3.Runtime.3.5.1/lib/net20/Antlr3.Runtime.dll b/packages/Antlr3.Runtime.3.5.1/lib/net20/Antlr3.Runtime.dll new file mode 100644 index 000000000..2bf359a63 Binary files /dev/null and b/packages/Antlr3.Runtime.3.5.1/lib/net20/Antlr3.Runtime.dll differ diff --git a/packages/Antlr3.Runtime.3.5.1/lib/net20/Antlr3.Runtime.xml b/packages/Antlr3.Runtime.3.5.1/lib/net20/Antlr3.Runtime.xml new file mode 100644 index 000000000..565e15d57 --- /dev/null +++ b/packages/Antlr3.Runtime.3.5.1/lib/net20/Antlr3.Runtime.xml @@ -0,0 +1,3249 @@ + + + + Antlr3.Runtime + + + + + This is a char buffer stream that is loaded from a file + all at once when you construct the object. This looks very + much like an ANTLReader or ANTLRInputStream, but it's a special case + since we know the exact size of the object to load. We can avoid lots + of data copying. + + + + + A kind of ReaderStream that pulls from an InputStream. + Useful for reading from stdin and specifying file encodings etc... + + + + + Vacuum all input from a Reader and then treat it like a StringStream. + Manage the buffer manually to avoid unnecessary data copying. + + + + If you need encoding, use ANTLRInputStream. + + + + + A pretty quick CharStream that pulls all data from an array + directly. Every method call counts in the lexer. Java's + strings aren't very good so I'm avoiding. + + + + The data being scanned + + + How many characters are actually in the buffer + + + 0..n-1 index into string of next char + + + line number 1..n within the input + + + The index of the character relative to the beginning of the line 0..n-1 + + + tracks how deep mark() calls are nested + + + + A list of CharStreamState objects that tracks the stream state + values line, charPositionInLine, and p that can change as you + move through the input stream. Indexed from 1..markDepth. + A null is kept @ index 0. Create upon first call to mark(). + + + + Track the last mark() call result value for use in rewind(). + + + What is name or source of this char stream? + + + Copy data in string to a local char array + + + This is the preferred constructor as no data is copied + + + + Return the current input symbol index 0..n where n indicates the + last symbol has been read. The index is the index of char to + be returned from LA(1). + + + + + Reset the stream so that it's in the same state it was + when the object was created *except* the data array is not + touched. + + + + + consume() ahead until p==index; can't just set p=index as we must + update line and charPositionInLine. + + + + + A generic recognizer that can handle recognizers generated from + lexer, parser, and tree grammars. This is all the parsing + support code essentially; most of it is error recovery stuff and + backtracking. + + + + + State of a lexer, parser, or tree parser are collected into a state + object so the state can be shared. This sharing is needed to + have one grammar import others and share same error variables + and other state variables. It's a kind of explicit multiple + inheritance via delegation of methods and shared state. + + + + reset the parser's state; subclasses must rewinds the input stream + + + + Match current input symbol against ttype. Attempt + single token insertion or deletion error recovery. If + that fails, throw MismatchedTokenException. + + + + To turn off single token insertion or deletion error + recovery, override recoverFromMismatchedToken() and have it + throw an exception. See TreeParser.recoverFromMismatchedToken(). + This way any error in a rule will cause an exception and + immediate exit from rule. Rule would recover by resynchronizing + to the set of symbols that can follow rule ref. + + + + Match the wildcard: in a symbol + + + Report a recognition problem. + + + This method sets errorRecovery to indicate the parser is recovering + not parsing. Once in recovery mode, no errors are generated. + To get out of recovery mode, the parser must successfully match + a token (after a resync). So it will go: + + 1. error occurs + 2. enter recovery mode, report error + 3. consume until token found in resynch set + 4. try to resume parsing + 5. next match() will reset errorRecovery mode + + If you override, make sure to update syntaxErrors if you care about that. + + + + What error message should be generated for the various exception types? + + + Not very object-oriented code, but I like having all error message + generation within one method rather than spread among all of the + exception classes. This also makes it much easier for the exception + handling because the exception classes do not have to have pointers back + to this object to access utility routines and so on. Also, changing + the message for an exception type would be difficult because you + would have to subclassing exception, but then somehow get ANTLR + to make those kinds of exception objects instead of the default. + This looks weird, but trust me--it makes the most sense in terms + of flexibility. + + For grammar debugging, you will want to override this to add + more information such as the stack frame with + getRuleInvocationStack(e, this.getClass().getName()) and, + for no viable alts, the decision description and state etc... + + Override this to change the message generated for one or more + exception types. + + + + + Get number of recognition errors (lexer, parser, tree parser). Each + recognizer tracks its own number. So parser and lexer each have + separate count. Does not count the spurious errors found between + an error and next valid token match + + + + + + What is the error header, normally line/character position information? + + + + How should a token be displayed in an error message? The default + is to display just the text, but during development you might + want to have a lot of information spit out. Override in that case + to use t.ToString() (which, for CommonToken, dumps everything about + the token). This is better than forcing you to override a method in + your token objects because you don't have to go modify your lexer + so that it creates a new Java type. + + + + Override this method to change where error messages go + + + + Recover from an error found on the input stream. This is + for NoViableAlt and mismatched symbol exceptions. If you enable + single token insertion and deletion, this will usually not + handle mismatched symbol exceptions but there could be a mismatched + token that the match() routine could not recover from. + + + + + A hook to listen in on the token consumption during error recovery. + The DebugParser subclasses this to fire events to the listenter. + + + + + Compute the context-sensitive FOLLOW set for current rule. + This is set of token types that can follow a specific rule + reference given a specific call chain. You get the set of + viable tokens that can possibly come next (lookahead depth 1) + given the current call chain. Contrast this with the + definition of plain FOLLOW for rule r: + + + FOLLOW(r)={x | S=>*alpha r beta in G and x in FIRST(beta)} + + where x in T* and alpha, beta in V*; T is set of terminals and + V is the set of terminals and nonterminals. In other words, + FOLLOW(r) is the set of all tokens that can possibly follow + references to r in *any* sentential form (context). At + runtime, however, we know precisely which context applies as + we have the call chain. We may compute the exact (rather + than covering superset) set of following tokens. + + For example, consider grammar: + + stat : ID '=' expr ';' // FOLLOW(stat)=={EOF} + | "return" expr '.' + ; + expr : atom ('+' atom)* ; // FOLLOW(expr)=={';','.',')'} + atom : INT // FOLLOW(atom)=={'+',')',';','.'} + | '(' expr ')' + ; + + The FOLLOW sets are all inclusive whereas context-sensitive + FOLLOW sets are precisely what could follow a rule reference. + For input input "i=(3);", here is the derivation: + + stat => ID '=' expr ';' + => ID '=' atom ('+' atom)* ';' + => ID '=' '(' expr ')' ('+' atom)* ';' + => ID '=' '(' atom ')' ('+' atom)* ';' + => ID '=' '(' INT ')' ('+' atom)* ';' + => ID '=' '(' INT ')' ';' + + At the "3" token, you'd have a call chain of + + stat -> expr -> atom -> expr -> atom + + What can follow that specific nested ref to atom? Exactly ')' + as you can see by looking at the derivation of this specific + input. Contrast this with the FOLLOW(atom)={'+',')',';','.'}. + + You want the exact viable token set when recovering from a + token mismatch. Upon token mismatch, if LA(1) is member of + the viable next token set, then you know there is most likely + a missing token in the input stream. "Insert" one by just not + throwing an exception. + + + Attempt to recover from a single missing or extra token. + + EXTRA TOKEN + + LA(1) is not what we are looking for. If LA(2) has the right token, + however, then assume LA(1) is some extra spurious token. Delete it + and LA(2) as if we were doing a normal match(), which advances the + input. + + MISSING TOKEN + + If current token is consistent with what could come after + ttype then it is ok to "insert" the missing token, else throw + exception For example, Input "i=(3;" is clearly missing the + ')'. When the parser returns from the nested call to expr, it + will have call chain: + + stat -> expr -> atom + + and it will be trying to match the ')' at this point in the + derivation: + + => ID '=' '(' INT ')' ('+' atom)* ';' + ^ + match() will see that ';' doesn't match ')' and report a + mismatched token error. To recover, it sees that LA(1)==';' + is in the set of tokens that can follow the ')' token + reference in rule atom. It can assume that you forgot the ')'. + + + Not currently used + + + + Match needs to return the current input symbol, which gets put + into the label for the associated token ref; e.g., x=ID. Token + and tree parsers need to return different objects. Rather than test + for input stream type or change the IntStream interface, I use + a simple method to ask the recognizer to tell me what the current + input symbol is. + + + This is ignored for lexers. + + + Conjure up a missing token during error recovery. + + + The recognizer attempts to recover from single missing + symbols. But, actions might refer to that missing symbol. + For example, x=ID {f($x);}. The action clearly assumes + that there has been an identifier matched previously and that + $x points at that token. If that token is missing, but + the next token in the stream is what we want we assume that + this token is missing and we keep going. Because we + have to return some token to replace the missing token, + we have to conjure one up. This method gives the user control + over the tokens returned for missing tokens. Mostly, + you will want to create something special for identifier + tokens. For literals such as '{' and ',', the default + action in the parser or tree parser works. It simply creates + a CommonToken of the appropriate type. The text will be the token. + If you change what tokens must be created by the lexer, + override this method to create the appropriate tokens. + + + + Consume tokens until one matches the given token set + + + Push a rule's follow set using our own hardcoded stack + + + + Return of the rules in your parser instance + leading up to a call to this method. You could override if + you want more details such as the file/line info of where + in the parser java code a rule is invoked. + + + + This is very useful for error messages and for context-sensitive + error recovery. + + + + + A more general version of GetRuleInvocationStack where you can + pass in the StackTrace of, for example, a RecognitionException + to get it's rule stack trace. + + + + Return whether or not a backtracking attempt failed. + + + + Used to print out token names like ID during debugging and + error reporting. The generated parsers implement a method + that overrides this to point to their String[] tokenNames. + + + + + For debugging and other purposes, might want the grammar name. + Have ANTLR generate an implementation for this method. + + + + + A convenience method for use most often with template rewrites. + Convert a list of to a list of . + + + + + Given a rule number and a start token index number, return + MEMO_RULE_UNKNOWN if the rule has not parsed input starting from + start index. If this rule has parsed input starting from the + start index before, then return where the rule stopped parsing. + It returns the index of the last token matched by the rule. + + + + For now we use a hashtable and just the slow Object-based one. + Later, we can make a special one for ints and also one that + tosses out data after we commit past input position i. + + + + + Has this rule already parsed input at the current index in the + input stream? Return the stop token index or MEMO_RULE_UNKNOWN. + If we attempted but failed to parse properly before, return + MEMO_RULE_FAILED. + + + + This method has a side-effect: if we have seen this input for + this rule and successfully parsed before, then seek ahead to + 1 past the stop token matched for this rule last time. + + + + + Record whether or not this rule parsed the input at this position + successfully. Use a standard java hashtable for now. + + + + return how many rule/input-index pairs there are in total. + TODO: this includes synpreds. :( + + + + A stripped-down version of org.antlr.misc.BitSet that is just + good enough to handle runtime requirements such as FOLLOW sets + for automatic error recovery. + + + + + We will often need to do a mod operator (i mod nbits). Its + turns out that, for powers of two, this mod operation is + same as (i & (nbits-1)). Since mod is slow, we use a + precomputed mod mask to do the mod instead. + + + + The actual data bits + + + Construct a bitset of size one word (64 bits) + + + Construction from a static array of longs + + + Construction from a list of integers + + + Construct a bitset given the size + The size of the bitset in bits + + + return this | a in a new set + + + or this element into this set (grow as necessary to accommodate) + + + Grows the set to a larger number of bits. + element that must fit in set + + + Sets the size of a set. + how many words the new set should be + + + return how much space is being used by the bits array not how many actually have member bits on. + + + Is this contained within a? + + + Buffer all input tokens but do on-demand fetching of new tokens from + lexer. Useful when the parser or lexer has to set context/mode info before + proper lexing of future tokens. The ST template parser needs this, + for example, because it has to constantly flip back and forth between + inside/output templates. E.g., <names:{hi, <it>}> has to parse names + as part of an expression but "hi, <it>" as a nested template. + + You can't use this stream if you pass whitespace or other off-channel + tokens to the parser. The stream can't ignore off-channel tokens. + (UnbufferedTokenStream is the same way.) + + This is not a subclass of UnbufferedTokenStream because I don't want + to confuse small moving window of tokens it uses for the full buffer. + + + Record every single token pulled from the source so we can reproduce + chunks of it later. The buffer in LookaheadStream overlaps sometimes + as its moving window moves through the input. This list captures + everything so we can access complete input text. + + + Track the last mark() call result value for use in rewind(). + + + The index into the tokens list of the current token (next token + to consume). tokens[p] should be LT(1). p=-1 indicates need + to initialize with first token. The ctor doesn't get a token. + First call to LT(1) or whatever gets the first token and sets p=0; + + + + How deep have we gone? + + + + Move the input pointer to the next incoming token. The stream + must become active with LT(1) available. consume() simply + moves the input pointer so that LT(1) points at the next + input symbol. Consume at least one token. + + Walk past any token not on the channel the parser is listening to. + + + Make sure index i in tokens has a token. + + + add n elements to buffer + + + Given a start and stop index, return a List of all tokens in + the token type BitSet. Return null if no tokens were found. This + method looks at both on and off channel tokens. + + + + When walking ahead with cyclic DFA or for syntactic predicates, + we need to record the state of the input stream (char index, + line, etc...) so that we can rewind the state after scanning ahead. + + + This is the complete state of a stream. + + + Index into the char stream of next lookahead char + + + What line number is the scanner at before processing buffer[p]? + + + What char position 0..n-1 in line is scanner before processing buffer[p]? + + + + A Token object like we'd use in ANTLR 2.x; has an actual string created + and associated with this object. These objects are needed for imaginary + tree nodes that have payload objects. We need to create a Token object + that has a string; the tree node will point at this token. CommonToken + has indexes into a char stream and hence cannot be used to introduce + new strings. + + + + What token number is this from 0..n-1 tokens + + + + We need to be able to change the text once in a while. If + this is non-null, then getText should return this. Note that + start/stop are not affected by changing this. + + + + What token number is this from 0..n-1 tokens; < 0 implies invalid index + + + The char position into the input buffer where this token starts + + + The char position into the input buffer where this token stops + + + + The most common stream of tokens is one where every token is buffered up + and tokens are prefiltered for a certain channel (the parser will only + see these tokens and cannot change the filter channel number during the + parse). + + + TODO: how to access the full token stream? How to track all tokens matched per rule? + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + Reset this token stream by setting its token source. + + + Always leave p on an on-channel token. + + + Given a starting index, return the index of the first on-channel + token. + + + All debugging events that a recognizer can trigger. + + + I did not create a separate AST debugging interface as it would create + lots of extra classes and DebugParser has a dbg var defined, which makes + it hard to change to ASTDebugEventListener. I looked hard at this issue + and it is easier to understand as one monolithic event interface for all + possible events. Hopefully, adding ST debugging stuff won't be bad. Leave + for future. 4/26/2006. + + + + + The parser has just entered a rule. No decision has been made about + which alt is predicted. This is fired AFTER init actions have been + executed. Attributes are defined and available etc... + The grammarFileName allows composite grammars to jump around among + multiple grammar files. + + + + + Because rules can have lots of alternatives, it is very useful to + know which alt you are entering. This is 1..n for n alts. + + + + + This is the last thing executed before leaving a rule. It is + executed even if an exception is thrown. This is triggered after + error reporting and recovery have occurred (unless the exception is + not caught in this rule). This implies an "exitAlt" event. + The grammarFileName allows composite grammars to jump around among + multiple grammar files. + + + + Track entry into any (...) subrule other EBNF construct + + + + Every decision, fixed k or arbitrary, has an enter/exit event + so that a GUI can easily track what LT/consume events are + associated with prediction. You will see a single enter/exit + subrule but multiple enter/exit decision events, one for each + loop iteration. + + + + + An input token was consumed; matched by any kind of element. + Trigger after the token was matched by things like match(), matchAny(). + + + + + An off-channel input token was consumed. + Trigger after the token was matched by things like match(), matchAny(). + (unless of course the hidden token is first stuff in the input stream). + + + + + Somebody (anybody) looked ahead. Note that this actually gets + triggered by both LA and LT calls. The debugger will want to know + which Token object was examined. Like consumeToken, this indicates + what token was seen at that depth. A remote debugger cannot look + ahead into a file it doesn't have so LT events must pass the token + even if the info is redundant. + + + + + The parser is going to look arbitrarily ahead; mark this location, + the token stream's marker is sent in case you need it. + + + + + After an arbitrairly long lookahead as with a cyclic DFA (or with + any backtrack), this informs the debugger that stream should be + rewound to the position associated with marker. + + + + + Rewind to the input position of the last marker. + Used currently only after a cyclic DFA and just + before starting a sem/syn predicate to get the + input position back to the start of the decision. + Do not "pop" the marker off the state. mark(i) + and rewind(i) should balance still. + + + + + To watch a parser move through the grammar, the parser needs to + inform the debugger what line/charPos it is passing in the grammar. + For now, this does not know how to switch from one grammar to the + other and back for island grammars etc... + + + + This should also allow breakpoints because the debugger can stop + the parser whenever it hits this line/pos. + + + + + A recognition exception occurred such as NoViableAltException. I made + this a generic event so that I can alter the exception hierachy later + without having to alter all the debug objects. + + + + Upon error, the stack of enter rule/subrule must be properly unwound. + If no viable alt occurs it is within an enter/exit decision, which + also must be rewound. Even the rewind for each mark must be unwount. + In the Java target this is pretty easy using try/finally, if a bit + ugly in the generated code. The rewind is generated in DFA.predict() + actually so no code needs to be generated for that. For languages + w/o this "finally" feature (C++?), the target implementor will have + to build an event stack or something. + + Across a socket for remote debugging, only the RecognitionException + data fields are transmitted. The token object or whatever that + caused the problem was the last object referenced by LT. The + immediately preceding LT event should hold the unexpected Token or + char. + + Here is a sample event trace for grammar: + + b : C ({;}A|B) // {;} is there to prevent A|B becoming a set + | D + ; + + The sequence for this rule (with no viable alt in the subrule) for + input 'c c' (there are 3 tokens) is: + + commence + LT(1) + enterRule b + location 7 1 + enter decision 3 + LT(1) + exit decision 3 + enterAlt1 + location 7 5 + LT(1) + consumeToken [c/<4>,1:0] + location 7 7 + enterSubRule 2 + enter decision 2 + LT(1) + LT(1) + recognitionException NoViableAltException 2 1 2 + exit decision 2 + exitSubRule 2 + beginResync + LT(1) + consumeToken [c/<4>,1:1] + LT(1) + endResync + LT(-1) + exitRule b + terminate + + + + + Indicates the recognizer is about to consume tokens to resynchronize + the parser. Any consume events from here until the recovered event + are not part of the parse--they are dead tokens. + + + + + Indicates that the recognizer has finished consuming tokens in order + to resychronize. There may be multiple beginResync/endResync pairs + before the recognizer comes out of errorRecovery mode (in which + multiple errors are suppressed). This will be useful + in a gui where you want to probably grey out tokens that are consumed + but not matched to anything in grammar. Anything between + a beginResync/endResync pair was tossed out by the parser. + + + + A semantic predicate was evaluate with this result and action text + + + + Announce that parsing has begun. Not technically useful except for + sending events over a socket. A GUI for example will launch a thread + to connect and communicate with a remote parser. The thread will want + to notify the GUI when a connection is made. ANTLR parsers + trigger this upon entry to the first rule (the ruleLevel is used to + figure this out). + + + + + Parsing is over; successfully or not. Mostly useful for telling + remote debugging listeners that it's time to quit. When the rule + invocation level goes to zero at the end of a rule, we are done + parsing. + + + + + Input for a tree parser is an AST, but we know nothing for sure + about a node except its type and text (obtained from the adaptor). + This is the analog of the consumeToken method. Again, the ID is + the hashCode usually of the node so it only works if hashCode is + not implemented. If the type is UP or DOWN, then + the ID is not really meaningful as it's fixed--there is + just one UP node and one DOWN navigation node. + + + + + + + The tree parser lookedahead. If the type is UP or DOWN, + then the ID is not really meaningful as it's fixed--there is + just one UP node and one DOWN navigation node. + + + + + A nil was created (even nil nodes have a unique ID... + they are not "null" per se). As of 4/28/2006, this + seems to be uniquely triggered when starting a new subtree + such as when entering a subrule in automatic mode and when + building a tree in rewrite mode. + + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID is set. + + + + + Upon syntax error, recognizers bracket the error with an error node + if they are building ASTs. + + + + + + Announce a new node built from token elements such as type etc... + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID, type, text are + set. + + + + Announce a new node built from an existing token. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only node.ID and token.tokenIndex + are set. + + + + Make a node the new root of an existing root. See + + + Note: the newRootID parameter is possibly different + than the TreeAdaptor.becomeRoot() newRoot parameter. + In our case, it will always be the result of calling + TreeAdaptor.becomeRoot() and not root_n or whatever. + + The listener should assume that this event occurs + only when the current subrule (or rule) subtree is + being reset to newRootID. + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only IDs are set. + + + + + + Make childID a child of rootID. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only IDs are set. + + + + + + Set the token start/stop token index for a subtree root or node. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID is set. + + + + A DFA implemented as a set of transition tables. + + + Any state that has a semantic predicate edge is special; those states + are generated with if-then-else structures in a specialStateTransition() + which is generated by cyclicDFA template. + + There are at most 32767 states (16-bit signed short). + Could get away with byte sometimes but would have to generate different + types and the simulation code too. For a point of reference, the Java + lexer's Tokens rule DFA has 326 states roughly. + + + + Which recognizer encloses this DFA? Needed to check backtracking + + + + From the input stream, predict what alternative will succeed + using this DFA (representing the covering regular approximation + to the underlying CFL). Return an alternative number 1..n. Throw + an exception upon error. + + + + A hook for debugging interface + + + + Given a String that has a run-length-encoding of some unsigned shorts + like "\1\2\3\9", convert to short[] {2,9,9,9}. We do this to avoid + static short[] which generates so much init code that the class won't + compile. :( + + + + Hideous duplication of code, but I need different typed arrays out :( + + + The recognizer did not match anything for a (..)+ loop. + + + + A semantic predicate failed during validation. Validation of predicates + occurs when normally parsing the alternative just like matching a token. + Disambiguating predicate evaluation occurs when we hoist a predicate into + a prediction decision. + + + + AST rules have trees + + + Has a value potentially if output=AST; + + + AST rules have trees + + + Has a value potentially if output=AST; + + + A source of characters for an ANTLR lexer + + + + For infinite streams, you don't need this; primarily I'm providing + a useful interface for action code. Just make sure actions don't + use this on streams that don't support it. + + + + + Get the ith character of lookahead. This is the same usually as + LA(i). This will be used for labels in the generated + lexer code. I'd prefer to return a char here type-wise, but it's + probably better to be 32-bit clean and be consistent with LA. + + + + ANTLR tracks the line information automatically + Because this stream can rewind, we need to be able to reset the line + + + The index of the character relative to the beginning of the line 0..n-1 + + + + A simple stream of integers used when all I care about is the char + or token type sequence (such as interpretation). + + + + + Get int at current input pointer + i ahead where i=1 is next int. + Negative indexes are allowed. LA(-1) is previous token (token + just matched). LA(-i) where i is before first token should + yield -1, invalid char / EOF. + + + + + Tell the stream to start buffering if it hasn't already. Return + current input position, Index, or some other marker so that + when passed to rewind() you get back to the same spot. + rewind(mark()) should not affect the input cursor. The Lexer + track line/col info as well as input index so its markers are + not pure input indexes. Same for tree node streams. + + + + + Return the current input symbol index 0..n where n indicates the + last symbol has been read. The index is the symbol about to be + read not the most recently read symbol. + + + + + Reset the stream so that next call to index would return marker. + The marker will usually be Index but it doesn't have to be. It's + just a marker to indicate what state the stream was in. This is + essentially calling release() and seek(). If there are markers + created after this marker argument, this routine must unroll them + like a stack. Assume the state the stream was in when this marker + was created. + + + + + Rewind to the input position of the last marker. + Used currently only after a cyclic DFA and just + before starting a sem/syn predicate to get the + input position back to the start of the decision. + Do not "pop" the marker off the state. mark(i) + and rewind(i) should balance still. It is + like invoking rewind(last marker) but it should not "pop" + the marker off. It's like seek(last marker's input position). + + + + + You may want to commit to a backtrack but don't want to force the + stream to keep bookkeeping objects around for a marker that is + no longer necessary. This will have the same behavior as + rewind() except it releases resources without the backward seek. + This must throw away resources for all markers back to the marker + argument. So if you're nested 5 levels of mark(), and then release(2) + you have to release resources for depths 2..5. + + + + + Set the input cursor to the position indicated by index. This is + normally used to seek ahead in the input stream. No buffering is + required to do this unless you know your stream will use seek to + move backwards such as when backtracking. + + + + This is different from rewind in its multi-directional + requirement and in that its argument is strictly an input cursor (index). + + For char streams, seeking forward must update the stream state such + as line number. For seeking backwards, you will be presumably + backtracking using the mark/rewind mechanism that restores state and + so this method does not need to update state when seeking backwards. + + Currently, this method is only used for efficient backtracking using + memoization, but in the future it may be used for incremental parsing. + + The index is 0..n-1. A seek to position i means that LA(1) will + return the ith symbol. So, seeking to 0 means LA(1) will return the + first element in the stream. + + + + + Only makes sense for streams that buffer everything up probably, but + might be useful to display the entire stream or for testing. This + value includes a single EOF. + + + + + Where are you getting symbols from? Normally, implementations will + pass the buck all the way to the lexer who can ask its input stream + for the file name or whatever. + + + + + Rules can have start/stop info. + + + + + Gets the start element from the input stream + + + + + Gets the stop element from the input stream + + + + + Rules can have start/stop info. + + The element type of the input stream. + + + + Gets the start element from the input stream + + + + + Gets the stop element from the input stream + + + + Get the text of the token + + + The line number on which this token was matched; line=1..n + + + The index of the first character relative to the beginning of the line 0..n-1 + + + + An index from 0..n-1 of the token object in the input stream. + This must be valid in order to use the ANTLRWorks debugger. + + + + + From what character stream was this token created? You don't have to + implement but it's nice to know where a Token comes from if you have + include files etc... on the input. + + + + + A source of tokens must provide a sequence of tokens via nextToken() + and also must reveal it's source of characters; CommonToken's text is + computed from a CharStream; it only store indices into the char stream. + + + + Errors from the lexer are never passed to the parser. Either you want + to keep going or you do not upon token recognition error. If you do not + want to continue lexing then you do not want to continue parsing. Just + throw an exception not under RecognitionException and Java will naturally + toss you all the way out of the recognizers. If you want to continue + lexing then you should not throw an exception to the parser--it has already + requested a token. Keep lexing until you get a valid one. Just report + errors and keep going, looking for a valid token. + + + + + Return a Token object from your input stream (usually a CharStream). + Do not fail/return upon lexing error; keep chewing on the characters + until you get a good one; errors are not passed through to the parser. + + + + + Where are you getting tokens from? normally the implication will simply + ask lexers input stream. + + + + A stream of tokens accessing tokens from a TokenSource + + + Get Token at current input pointer + i ahead where i=1 is next Token. + i<0 indicates tokens in the past. So -1 is previous token and -2 is + two tokens ago. LT(0) is undefined. For i>=n, return Token.EOFToken. + Return null for LT(0) and any index that results in an absolute address + that is negative. + + + + How far ahead has the stream been asked to look? The return + value is a valid index from 0..n-1. + + + + + Get a token at an absolute index i; 0..n-1. This is really only + needed for profiling and debugging and token stream rewriting. + If you don't want to buffer up tokens, then this method makes no + sense for you. Naturally you can't use the rewrite stream feature. + I believe DebugTokenStream can easily be altered to not use + this method, removing the dependency. + + + + + Where is this stream pulling tokens from? This is not the name, but + the object that provides Token objects. + + + + + Return the text of all tokens from start to stop, inclusive. + If the stream does not buffer all the tokens then it can just + return "" or null; Users should not access $ruleLabel.text in + an action of course in that case. + + + + + Because the user is not required to use a token with an index stored + in it, we must provide a means for two token objects themselves to + indicate the start/end location. Most often this will just delegate + to the other toString(int,int). This is also parallel with + the TreeNodeStream.toString(Object,Object). + + + + + The most common stream of tokens is one where every token is buffered up + and tokens are prefiltered for a certain channel (the parser will only + see these tokens and cannot change the filter channel number during the + parse). + + + TODO: how to access the full token stream? How to track all tokens matched per rule? + + + + Record every single token pulled from the source so we can reproduce + chunks of it later. + + + + Map from token type to channel to override some Tokens' channel numbers + + + Set of token types; discard any tokens with this type + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + By default, track all incoming tokens + + + Track the last mark() call result value for use in rewind(). + + + + The index into the tokens list of the current token (next token + to consume). p==-1 indicates that the tokens list is empty + + + + + How deep have we gone? + + + + Reset this token stream by setting its token source. + + + + Load all tokens from the token source and put in tokens. + This is done upon first LT request because you might want to + set some token type / channel overrides before filling buffer. + + + + + Move the input pointer to the next incoming token. The stream + must become active with LT(1) available. consume() simply + moves the input pointer so that LT(1) points at the next + input symbol. Consume at least one token. + + + + Walk past any token not on the channel the parser is listening to. + + + + Given a starting index, return the index of the first on-channel token. + + + + A simple filter mechanism whereby you can tell this token stream + to force all tokens of type ttype to be on channel. For example, + when interpreting, we cannot exec actions so we need to tell + the stream to force all WS and NEWLINE to be a different, ignored + channel. + + + + + Given a start and stop index, return a List of all tokens in + the token type BitSet. Return null if no tokens were found. This + method looks at both on and off channel tokens. + + + + + Get the ith token from the current position 1..n where k=1 is the + first symbol of lookahead. + + + + Look backwards k tokens on-channel tokens + + + + Return absolute token i; ignore which channel the tokens are on; + that is, count all tokens not just on-channel tokens. + + + + + A lexer is recognizer that draws input symbols from a character stream. + lexer grammars result in a subclass of this object. A Lexer object + uses simplified match() and error recovery mechanisms in the interest + of speed. + + + + Where is the lexer drawing characters from? + + + + Gets or sets the text matched so far for the current token or any text override. + + + Setting this value replaces any previously set value, and overrides the original text. + + + + Return a token from this source; i.e., match a token on the char stream. + + + Returns the EOF token (default), if you need + to return a custom token instead override this method. + + + + Instruct the lexer to skip creating a token for current lexer rule + and look for another token. nextToken() knows to keep looking when + a lexer rule finishes with token set to SKIP_TOKEN. Recall that + if token==null at end of any token rule, it creates one for you + and emits it. + + + + This is the lexer entry point that sets instance var 'token' + + + + Currently does not support multiple emits per nextToken invocation + for efficiency reasons. Subclass and override this method and + nextToken (to push tokens into a list and pull from that list rather + than a single variable as this implementation does). + + + + + The standard method called to automatically emit a token at the + outermost lexical rule. The token object should point into the + char buffer start..stop. If there is a text override in 'text', + use that to set the token's text. Override this method to emit + custom Token objects. + + + + If you are building trees, then you should also override + Parser or TreeParser.getMissingSymbol(). + + + + What is the index of the current character of lookahead? + + + + Lexers can normally match any char in it's vocabulary after matching + a token, so do the easy thing and just kill a character and hope + it all works out. You can instead use the rule invocation stack + to do sophisticated error recovery if you are in a fragment rule. + + + + A queue that can dequeue and get(i) in O(1) and grow arbitrarily large. + A linked list is fast at dequeue but slow at get(i). An array is + the reverse. This is O(1) for both operations. + + List grows until you dequeue last element at end of buffer. Then + it resets to start filling at 0 again. If adds/removes are balanced, the + buffer will not grow too large. + + No iterator stuff as that's not how we'll use it. + + + dynamically-sized buffer of elements + + + index of next element to fill + + + + How deep have we gone? + + + + + Return element {@code i} elements ahead of current element. {@code i==0} + gets current element. This is not an absolute index into {@link #data} + since {@code p} defines the start of the real list. + + + + Get and remove first element in queue + + + Return string of current buffer contents; non-destructive + + + + A lookahead queue that knows how to mark/release locations in the buffer for + backtracking purposes. Any markers force the {@link FastQueue} superclass to + keep all elements until no more markers; then can reset to avoid growing a + huge buffer. + + + + Absolute token index. It's the index of the symbol about to be + read via {@code LT(1)}. Goes from 0 to numtokens. + + + This is the {@code LT(-1)} element for the first element in {@link #data}. + + + Track object returned by nextElement upon end of stream; + Return it later when they ask for LT passed end of input. + + + Track the last mark() call result value for use in rewind(). + + + tracks how deep mark() calls are nested + + + + Implement nextElement to supply a stream of elements to this + lookahead buffer. Return EOF upon end of the stream we're pulling from. + + + + + Get and remove first element in queue; override + {@link FastQueue#remove()}; it's the same, just checks for backtracking. + + + + Make sure we have at least one element to remove, even if EOF + + + + Make sure we have 'need' elements from current position p. Last valid + p index is data.size()-1. p+need-1 is the data index 'need' elements + ahead. If we need 1 element, (p+1-1)==p must be < data.size(). + + + + add n elements to buffer + + + Size of entire stream is unknown; we only know buffer size from FastQueue + + + + Seek to a 0-indexed absolute token index. Normally used to seek backwards + in the buffer. Does not force loading of nodes. + + + To preserve backward compatibility, this method allows seeking past the + end of the currently buffered data. In this case, the input pointer will + be moved but the data will only actually be loaded upon the next call to + {@link #consume} or {@link #LT} for {@code k>0}. + + + + A mismatched char or Token or tree node + + + + We were expecting a token but it's not found. The current token + is actually what we wanted next. Used for tree node errors too. + + + + + A parser for TokenStreams. "parser grammars" result in a subclass + of this. + + + + Gets or sets the token stream; resets the parser upon a set. + + + + Rules that return more than a single value must return an object + containing all the values. Besides the properties defined in + RuleLabelScope.predefinedRulePropertiesScope there may be user-defined + return values. This class simply defines the minimum properties that + are always defined and methods to access the others that might be + available depending on output option such as template and tree. + + + + Note text is not an actual property of the return value, it is computed + from start and stop using the input stream's toString() method. I + could add a ctor to this so that we can pass in and store the input + stream, but I'm not sure we want to do that. It would seem to be undefined + to get the .text property anyway if the rule matches tokens from multiple + input streams. + + I do not use getters for fields of objects that are used simply to + group values such as this aggregate. The getters/setters are there to + satisfy the superclass interface. + + + + The root of the ANTLR exception hierarchy. + + + To avoid English-only error messages and to generally make things + as flexible as possible, these exceptions are not created with strings, + but rather the information necessary to generate an error. Then + the various reporting methods in Parser and Lexer can be overridden + to generate a localized error message. For example, MismatchedToken + exceptions are built with the expected token type. + So, don't expect getMessage() to return anything. + + Note that as of Java 1.4, you can access the stack trace, which means + that you can compute the complete trace of rules from the start symbol. + This gives you considerable context information with which to generate + useful error messages. + + ANTLR generates code that throws exceptions upon recognition error and + also generates code to catch these exceptions in each rule. If you + want to quit upon first error, you can turn off the automatic error + handling mechanism using rulecatch action, but you still need to + override methods mismatch and recoverFromMismatchSet. + + In general, the recognition exceptions can track where in a grammar a + problem occurred and/or what was the expected input. While the parser + knows its state (such as current input symbol and line info) that + state can change before the exception is reported so current token index + is computed and stored at exception time. From this info, you can + perhaps print an entire line of input not just a single token, for example. + Better to just say the recognizer had a problem and then let the parser + figure out a fancy report. + + + + What input stream did the error occur in? + + + + What was the lookahead index when this exception was thrown? + + + + What is index of token/char were we looking at when the error occurred? + + + + The current Token when an error occurred. Since not all streams + can retrieve the ith Token, we have to track the Token object. + For parsers. Even when it's a tree parser, token might be set. + + + + + If this is a tree parser exception, node is set to the node with + the problem. + + + + The current char when an error occurred. For lexers. + + + + Track the line (1-based) at which the error occurred in case this is + generated from a lexer. We need to track this since the + unexpected char doesn't carry the line info. + + + + + The 0-based index into the line where the error occurred. + + + + + If you are parsing a tree node stream, you will encounter som + imaginary nodes w/o line/col info. We now search backwards looking + for most recent token with line/col info, but notify getErrorHeader() + that info is approximate. + + + + Used for remote debugger deserialization + + + Return the token type or char of the unexpected input element + + + + The set of fields needed by an abstract recognizer to recognize input + and recover from errors etc... As a separate state object, it can be + shared among multiple grammars; e.g., when one grammar imports another. + + + + These fields are publically visible but the actual state pointer per + parser is protected. + + + + + Track the set of token types that can follow any rule invocation. + Stack grows upwards. When it hits the max, it grows 2x in size + and keeps going. + + + + + This is true when we see an error and before having successfully + matched a token. Prevents generation of more than one error message + per error. + + + + + The index into the input stream where the last error occurred. + This is used to prevent infinite loops where an error is found + but no token is consumed during recovery...another error is found, + ad naseum. This is a failsafe mechanism to guarantee that at least + one token/tree node is consumed for two errors. + + + + + In lieu of a return value, this indicates that a rule or token + has failed to match. Reset to false upon valid token match. + + + + Did the recognizer encounter a syntax error? Track how many. + + + + If 0, no backtracking is going on. Safe to exec actions etc... + If >0 then it's the level of backtracking. + + + + + An array[size num rules] of dictionaries that tracks + the stop token index for each rule. ruleMemo[ruleIndex] is + the memoization table for ruleIndex. For key ruleStartIndex, you + get back the stop token for associated rule or MEMO_RULE_FAILED. + + + This is only used if rule memoization is on (which it is by default). + + + + The goal of all lexer rules/methods is to create a token object. + This is an instance variable as multiple rules may collaborate to + create a single token. nextToken will return this object after + matching lexer rule(s). If you subclass to allow multiple token + emissions, then set this to the last token to be matched or + something nonnull so that the auto token emit mechanism will not + emit another token. + + + + + What character index in the stream did the current token start at? + Needed, for example, to get the text for current token. Set at + the start of nextToken. + + + + The line on which the first character of the token resides + + + The character position of first character within the line + + + The channel number for the current token + + + The token type for the current token + + + + You can set the text for the current token to override what is in + the input char buffer. Use setText() or can set this instance var. + + + + + All tokens go to the parser (unless skip() is called in that rule) + on a particular "channel". The parser tunes to a particular channel + so that whitespace etc... can go to the parser on a "hidden" channel. + + + + + Anything on different channel than DEFAULT_CHANNEL is not parsed + by parser. + + + + Useful for dumping out the input stream after doing some + augmentation or other manipulations. + + You can insert stuff, replace, and delete chunks. Note that the + operations are done lazily--only if you convert the buffer to a + String. This is very efficient because you are not moving data around + all the time. As the buffer of tokens is converted to strings, the + toString() method(s) check to see if there is an operation at the + current index. If so, the operation is done and then normal String + rendering continues on the buffer. This is like having multiple Turing + machine instruction streams (programs) operating on a single input tape. :) + + Since the operations are done lazily at toString-time, operations do not + screw up the token index values. That is, an insert operation at token + index i does not change the index values for tokens i+1..n-1. + + Because operations never actually alter the buffer, you may always get + the original token stream back without undoing anything. Since + the instructions are queued up, you can easily simulate transactions and + roll back any changes if there is an error just by removing instructions. + For example, + + CharStream input = new ANTLRFileStream("input"); + TLexer lex = new TLexer(input); + TokenRewriteStream tokens = new TokenRewriteStream(lex); + T parser = new T(tokens); + parser.startRule(); + + Then in the rules, you can execute + Token t,u; + ... + input.insertAfter(t, "text to put after t");} + input.insertAfter(u, "text after u");} + System.out.println(tokens.toString()); + + Actually, you have to cast the 'input' to a TokenRewriteStream. :( + + You can also have multiple "instruction streams" and get multiple + rewrites from a single pass over the input. Just name the instruction + streams and use that name again when printing the buffer. This could be + useful for generating a C file and also its header file--all from the + same buffer: + + tokens.insertAfter("pass1", t, "text to put after t");} + tokens.insertAfter("pass2", u, "text after u");} + System.out.println(tokens.toString("pass1")); + System.out.println(tokens.toString("pass2")); + + If you don't use named rewrite streams, a "default" stream is used as + the first example shows. + + + What index into rewrites List are we? + + + Token buffer index. + + + + Execute the rewrite operation by possibly adding to the buffer. + Return the index of the next token to operate on. + + + + + I'm going to try replacing range from x..y with (y-x)+1 ReplaceOp + instructions. + + + + + You may have multiple, named streams of rewrite operations. + I'm calling these things "programs." + Maps String (name) -> rewrite (List) + + + + Map String (program name) -> Integer index + + + + Rollback the instruction stream for a program so that + the indicated instruction (via instructionIndex) is no + longer in the stream. UNTESTED! + + + + Reset the program so that no instructions exist + + + We need to combine operations and report invalid operations (like + overlapping replaces that are not completed nested). Inserts to + same index need to be combined etc... Here are the cases: + + I.i.u I.j.v leave alone, nonoverlapping + I.i.u I.i.v combine: Iivu + + R.i-j.u R.x-y.v | i-j in x-y delete first R + R.i-j.u R.i-j.v delete first R + R.i-j.u R.x-y.v | x-y in i-j ERROR + R.i-j.u R.x-y.v | boundaries overlap ERROR + + Delete special case of replace (text==null): + D.i-j.u D.x-y.v | boundaries overlap combine to max(min)..max(right) + + I.i.u R.x-y.v | i in (x+1)-y delete I (since insert before + we're not deleting i) + I.i.u R.x-y.v | i not in (x+1)-y leave alone, nonoverlapping + R.x-y.v I.i.u | i in x-y ERROR + R.x-y.v I.x.u R.x-y.uv (combine, delete I) + R.x-y.v I.i.u | i not in x-y leave alone, nonoverlapping + + I.i.u = insert u before op @ index i + R.x-y.u = replace x-y indexed tokens with u + + First we need to examine replaces. For any replace op: + + 1. wipe out any insertions before op within that range. + 2. Drop any replace op before that is contained completely within + that range. + 3. Throw exception upon boundary overlap with any previous replace. + + Then we can deal with inserts: + + 1. for any inserts to same index, combine even if not adjacent. + 2. for any prior replace with same left boundary, combine this + insert with replace and delete this replace. + 3. throw exception if index in same range as previous replace + + Don't actually delete; make op null in list. Easier to walk list. + Later we can throw as we add to index -> op map. + + Note that I.2 R.2-2 will wipe out I.2 even though, technically, the + inserted stuff would be before the replace range. But, if you + add tokens in front of a method body '{' and then delete the method + body, I think the stuff before the '{' you added should disappear too. + + Return a map from token index to operation. + + + Get all operations before an index of a particular kind + + + + In an action, a lexer rule can set token to this SKIP_TOKEN and ANTLR + will avoid creating a token for this symbol and try to fetch another. + + + + imaginary tree navigation type; traverse "get child" link + + + imaginary tree navigation type; finish with a child list + + + + A generic tree implementation with no payload. You must subclass to + actually have any user data. ANTLR v3 uses a list of children approach + instead of the child-sibling approach in v2. A flat tree (a list) is + an empty node whose children represent the list. An empty, but + non-null node is called "nil". + + + + + Create a new node from an existing node does nothing for BaseTree + as there are no fields other than the children list, which cannot + be copied as the children are not considered part of this node. + + + + + Get the children internal List; note that if you directly mess with + the list, do so at your own risk. + + + + BaseTree doesn't track parent pointers. + + + BaseTree doesn't track child indexes. + + + Add t as child of this node. + + + Warning: if t has no children, but child does + and child isNil then this routine moves children to t via + t.children = child.children; i.e., without copying the array. + + + + Add all elements of kids list as children of this node + + + Insert child t at child position i (0..n-1) by shifting children + i+1..n-1 to the right one position. Set parent / indexes properly + but does NOT collapse nil-rooted t's that come in here like addChild. + + + + Delete children from start to stop and replace with t even if t is + a list (nil-root tree). num of children can increase or decrease. + For huge child lists, inserting children can force walking rest of + children to set their childindex; could be slow. + + + + Override in a subclass to change the impl of children list + + + Set the parent and child index values for all child of t + + + Walk upwards looking for ancestor with this token type. + + + Walk upwards and get first ancestor with this token type. + + + + Return a list of all ancestors of this node. The first node of + list is the root and the last is the parent of this node. + + + + Print out a whole tree not just a node + + + Override to say how a node (not a tree) should look as text + + + A TreeAdaptor that works with any Tree implementation. + + + + System.identityHashCode() is not always unique; we have to + track ourselves. That's ok, it's only for debugging, though it's + expensive: we have to create a hashtable with all tree nodes in it. + + + + + Create tree node that holds the start and stop tokens associated + with an error. + + + + If you specify your own kind of tree nodes, you will likely have to + override this method. CommonTree returns Token.INVALID_TOKEN_TYPE + if no token payload but you might have to set token type for diff + node type. + + You don't have to subclass CommonErrorNode; you will likely need to + subclass your own tree node class to avoid class cast exception. + + + + + This is generic in the sense that it will work with any kind of + tree (not just ITree interface). It invokes the adaptor routines + not the tree node routines to do the construction. + + + + + Add a child to the tree t. If child is a flat tree (a list), make all + in list children of t. Warning: if t has no children, but child does + and child isNil then you can decide it is ok to move children to t via + t.children = child.children; i.e., without copying the array. Just + make sure that this is consistent with have the user will build + ASTs. + + + + + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + old=^(nil a b c), new=r yields ^(r a b c) + old=^(a b c), new=r yields ^(r ^(a b c)) + + If newRoot is a nil-rooted single child tree, use the single + child as the new root node. + + old=^(nil a b c), new=^(nil r) yields ^(r a b c) + old=^(a b c), new=^(nil r) yields ^(r ^(a b c)) + + If oldRoot was null, it's ok, just return newRoot (even if isNil). + + old=null, new=r yields r + old=null, new=^(nil r) yields ^(nil r) + + Return newRoot. Throw an exception if newRoot is not a + simple node or nil root with a single child node--it must be a root + node. If newRoot is ^(nil x) return x as newRoot. + + Be advised that it's ok for newRoot to point at oldRoot's + children; i.e., you don't have to copy the list. We are + constructing these nodes so we should have this control for + efficiency. + + + + Transform ^(nil x) to x and nil to null + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + This is a variant of createToken where the new token is derived from + an actual real input token. Typically this is for converting '{' + tokens to BLOCK etc... You'll see + + r : lc='{' ID+ '}' -> ^(BLOCK[$lc] ID+) ; + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Duplicate a node. This is part of the factory; + override if you want another kind of node to be built. + + + + I could use reflection to prevent having to override this + but reflection is slow. + + + + + Track start/stop token for subtree root created for a rule. + Only works with Tree nodes. For rules that match nothing, + seems like this will yield start=i and stop=i-1 in a nil node. + Might be useful info so I'll not force to be i..i. + + + + A buffered stream of tree nodes. Nodes can be from a tree of ANY kind. + + This node stream sucks all nodes out of the tree specified in + the constructor during construction and makes pointers into + the tree using an array of Object pointers. The stream necessarily + includes pointers to DOWN and UP and EOF nodes. + + This stream knows how to mark/release for backtracking. + + This stream is most suitable for tree interpreters that need to + jump around a lot or for tree parsers requiring speed (at cost of memory). + There is some duplicated functionality here with UnBufferedTreeNodeStream + but just in bookkeeping, not tree walking etc... + + TARGET DEVELOPERS: + + This is the old CommonTreeNodeStream that buffered up entire node stream. + No need to implement really as new CommonTreeNodeStream is much better + and covers what we need. + + @see CommonTreeNodeStream + + + The complete mapping from stream index to tree node. + This buffer includes pointers to DOWN, UP, and EOF nodes. + It is built upon ctor invocation. The elements are type + Object as we don't what the trees look like. + + Load upon first need of the buffer so we can set token types + of interest for reverseIndexing. Slows us down a wee bit to + do all of the if p==-1 testing everywhere though. + + + Pull nodes from which tree? + + + IF this tree (root) was created from a token stream, track it. + + + What tree adaptor was used to build these trees + + + Reuse same DOWN, UP navigation nodes unless this is true + + + The index into the nodes list of the current node (next node + to consume). If -1, nodes array not filled yet. + + + Track the last mark() call result value for use in rewind(). + + + Stack of indexes used for push/pop calls + + + Walk tree with depth-first-search and fill nodes buffer. + Don't do DOWN, UP nodes if its a list (t is isNil). + + + What is the stream index for node? 0..n-1 + Return -1 if node not found. + + + As we flatten the tree, we use UP, DOWN nodes to represent + the tree structure. When debugging we need unique nodes + so instantiate new ones when uniqueNavigationNodes is true. + + + Look backwards k nodes + + + + Make stream jump to a new location, saving old location. + Switch back with pop(). + + + + + Seek back to previous index saved during last push() call. + Return top of stack (return index). + + + + Used for testing, just return the token type stream + + + Debugging + + + A node representing erroneous token range in token stream + + + + A tree node that is wrapper for a Token object. After 3.0 release + while building tree rewrite stuff, it became clear that computing + parent and child index is very difficult and cumbersome. Better to + spend the space in every tree node. If you don't want these extra + fields, it's easy to cut them out in your own BaseTree subclass. + + + + A single token is the payload + + + + What token indexes bracket all tokens associated with this node + and below? + + + + Who is the parent node of this node; if null, implies node is root + + + What index is this node in the child list? Range: 0..n-1 + + + + For every node in this subtree, make sure it's start/stop token's + are set. Walk depth first, visit bottom up. Only updates nodes + with at least one token index < 0. + + + + + A TreeAdaptor that works with any Tree implementation. It provides + really just factory methods; all the work is done by BaseTreeAdaptor. + If you would like to have different tokens created than ClassicToken + objects, you need to override this and then set the parser tree adaptor to + use your subclass. + + + + To get your parser to build nodes of a different type, override + create(Token), errorNode(), and to be safe, YourTreeClass.dupNode(). + dupNode is called to duplicate nodes during rewrite operations. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + This is a variant of createToken where the new token is derived from + an actual real input token. Typically this is for converting '{' + tokens to BLOCK etc... You'll see + + r : lc='{' ID+ '}' -> ^(BLOCK[$lc] ID+) ; + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + What is the Token associated with this node? If + you are not using CommonTree, then you must + override this in your own adaptor. + + + + Pull nodes from which tree? + + + If this tree (root) was created from a token stream, track it. + + + What tree adaptor was used to build these trees + + + The tree iterator we are using + + + Stack of indexes used for push/pop calls + + + Tree (nil A B C) trees like flat A B C streams + + + Tracks tree depth. Level=0 means we're at root node level. + + + Tracks the last node before the start of {@link #data} which contains + position information to provide information for error reporting. This is + tracked in addition to {@link #prevElement} which may or may not contain + position information. + + @see #hasPositionInformation + @see RecognitionException#extractInformationFromTreeNodeStream + + + Make stream jump to a new location, saving old location. + Switch back with pop(). + + + Seek back to previous index saved during last push() call. + Return top of stack (return index). + + + Returns an element containing position information. If {@code allowApproximateLocation} is {@code false}, then + this method will return the {@code LT(1)} element if it contains position information, and otherwise return {@code null}. + If {@code allowApproximateLocation} is {@code true}, then this method will return the last known element containing position information. + + @see #hasPositionInformation + + + For debugging; destructive: moves tree iterator to end. + + + A utility class to generate DOT diagrams (graphviz) from + arbitrary trees. You can pass in your own templates and + can pass in any kind of tree or use Tree interface method. + I wanted this separator so that you don't have to include + ST just to use the org.antlr.runtime.tree.* package. + This is a set of non-static methods so you can subclass + to override. For example, here is an invocation: + + CharStream input = new ANTLRInputStream(System.in); + TLexer lex = new TLexer(input); + CommonTokenStream tokens = new CommonTokenStream(lex); + TParser parser = new TParser(tokens); + TParser.e_return r = parser.e(); + Tree t = (Tree)r.tree; + System.out.println(t.toStringTree()); + DOTTreeGenerator gen = new DOTTreeGenerator(); + StringTemplate st = gen.toDOT(t); + System.out.println(st); + + + Track node to number mapping so we can get proper node name back + + + Track node number so we can get unique node names + + + Generate DOT (graphviz) for a whole tree not just a node. + For example, 3+4*5 should generate: + + digraph { + node [shape=plaintext, fixedsize=true, fontsize=11, fontname="Courier", + width=.4, height=.2]; + edge [arrowsize=.7] + "+"->3 + "+"->"*" + "*"->4 + "*"->5 + } + + Takes a Tree interface object. + + + + @author Sam Harwell + + + Returns an element containing concrete information about the current + position in the stream. + + @param allowApproximateLocation if {@code false}, this method returns + {@code null} if an element containing exact information about the current + position is not available + + + Determines if the specified {@code element} contains concrete position + information. + + @param element the element to check + @return {@code true} if {@code element} contains concrete position + information, otherwise {@code false} + + + + What does a tree look like? ANTLR has a number of support classes + such as CommonTreeNodeStream that work on these kinds of trees. You + don't have to make your trees implement this interface, but if you do, + you'll be able to use more support code. + + + + NOTE: When constructing trees, ANTLR can build any kind of tree; it can + even use Token objects as trees if you add a child list to your tokens. + + This is a tree node without any payload; just navigation and factory stuff. + + + + Is there is a node above with token type ttype? + + + Walk upwards and get first ancestor with this token type. + + + + Return a list of all ancestors of this node. The first node of + list is the root and the last is the parent of this node. + + + + This node is what child index? 0..n-1 + + + Set the parent and child index values for all children + + + + Add t as a child to this node. If t is null, do nothing. If t + is nil, add all children of t to this' children. + + + + Set ith child (0..n-1) to t; t must be non-null and non-nil node + + + + Delete children from start to stop and replace with t even if t is + a list (nil-root tree). num of children can increase or decrease. + For huge child lists, inserting children can force walking rest of + children to set their childindex; could be slow. + + + + + Indicates the node is a nil node but may still have children, meaning + the tree is a flat list. + + + + + What is the smallest token index (indexing from 0) for this node + and its children? + + + + + What is the largest token index (indexing from 0) for this node + and its children? + + + + Return a token type; needed for tree parsing + + + In case we don't have a token payload, what is the line for errors? + + + + How to create and navigate trees. Rather than have a separate factory + and adaptor, I've merged them. Makes sense to encapsulate. + + + + This takes the place of the tree construction code generated in the + generated code in 2.x and the ASTFactory. + + I do not need to know the type of a tree at all so they are all + generic Objects. This may increase the amount of typecasting needed. :( + + + + + Create a tree node from Token object; for CommonTree type trees, + then the token just becomes the payload. This is the most + common create call. + + + + Override if you want another kind of node to be built. + + + + + Create a new node derived from a token, with a new token type. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG[$tokenLabel]. + + + + This should invoke createToken(Token). + + + + + Same as create(tokenType,fromToken) except set the text too. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG[$tokenLabel, "IMAG"]. + + + + This should invoke createToken(Token). + + + + + Same as create(fromToken) except set the text too. + This is invoked when the text terminal option is set, as in + IMAG<text='IMAG'>. + + + + This should invoke createToken(Token). + + + + + Create a new node derived from a token, with a new token type. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG["IMAG"]. + + + + This should invoke createToken(int,String). + + + + Duplicate a single tree node. + Override if you want another kind of node to be built. + + + Duplicate tree recursively, using dupNode() for each node + + + + Return a nil node (an empty but non-null node) that can hold + a list of element as the children. If you want a flat tree (a list) + use "t=adaptor.nil(); t.addChild(x); t.addChild(y);" + + + + + Return a tree node representing an error. This node records the + tokens consumed during error recovery. The start token indicates the + input symbol at which the error was detected. The stop token indicates + the last symbol consumed during recovery. + + + + You must specify the input stream so that the erroneous text can + be packaged up in the error node. The exception could be useful + to some applications; default implementation stores ptr to it in + the CommonErrorNode. + + This only makes sense during token parsing, not tree parsing. + Tree parsing should happen only when parsing and tree construction + succeed. + + + + Is tree considered a nil node used to make lists of child nodes? + + + + Add a child to the tree t. If child is a flat tree (a list), make all + in list children of t. Warning: if t has no children, but child does + and child isNil then you can decide it is ok to move children to t via + t.children = child.children; i.e., without copying the array. Just + make sure that this is consistent with have the user will build + ASTs. Do nothing if t or child is null. + + + + + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + old=^(nil a b c), new=r yields ^(r a b c) + old=^(a b c), new=r yields ^(r ^(a b c)) + + If newRoot is a nil-rooted single child tree, use the single + child as the new root node. + + old=^(nil a b c), new=^(nil r) yields ^(r a b c) + old=^(a b c), new=^(nil r) yields ^(r ^(a b c)) + + If oldRoot was null, it's ok, just return newRoot (even if isNil). + + old=null, new=r yields r + old=null, new=^(nil r) yields ^(nil r) + + Return newRoot. Throw an exception if newRoot is not a + simple node or nil root with a single child node--it must be a root + node. If newRoot is ^(nil x) return x as newRoot. + + Be advised that it's ok for newRoot to point at oldRoot's + children; i.e., you don't have to copy the list. We are + constructing these nodes so we should have this control for + efficiency. + + + + + Given the root of the subtree created for this rule, post process + it to do any simplifications or whatever you want. A required + behavior is to convert ^(nil singleSubtree) to singleSubtree + as the setting of start/stop indexes relies on a single non-nil root + for non-flat trees. + + + + Flat trees such as for lists like "idlist : ID+ ;" are left alone + unless there is only one ID. For a list, the start/stop indexes + are set in the nil node. + + This method is executed after all rule tree construction and right + before setTokenBoundaries(). + + + + For identifying trees. + + + How to identify nodes so we can say "add node to a prior node"? + Even becomeRoot is an issue. Use System.identityHashCode(node) + usually. + + + + + Create a node for newRoot make it the root of oldRoot. + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + Return node created for newRoot. + + + + Be advised: when debugging ASTs, the DebugTreeAdaptor manually + calls create(Token child) and then plain becomeRoot(node, node) + because it needs to trap calls to create, but it can't since it delegates + to not inherits from the TreeAdaptor. + + + + For tree parsing, I need to know the token type of a node + + + Node constructors can set the type of a node + + + Node constructors can set the text of a node + + + + Return the token object from which this node was created. + Currently used only for printing an error message. + The error display routine in BaseRecognizer needs to + display where the input the error occurred. If your + tree of limitation does not store information that can + lead you to the token, you can create a token filled with + the appropriate information and pass that back. See + BaseRecognizer.getErrorMessage(). + + + + + Where are the bounds in the input token stream for this node and + all children? Each rule that creates AST nodes will call this + method right before returning. Flat trees (i.e., lists) will + still usually have a nil root node just to hold the children list. + That node would contain the start/stop indexes then. + + + + Get the token start index for this subtree; return -1 if no such index + + + Get the token stop index for this subtree; return -1 if no such index + + + Get a child 0..n-1 node + + + Set ith child (0..n-1) to t; t must be non-null and non-nil node + + + Remove ith child and shift children down from right. + + + How many children? If 0, then this is a leaf node + + + + Who is the parent node of this node; if null, implies node is root. + If your node type doesn't handle this, it's ok but the tree rewrites + in tree parsers need this functionality. + + + + + What index is this node in the child list? Range: 0..n-1 + If your node type doesn't handle this, it's ok but the tree rewrites + in tree parsers need this functionality. + + + + + Replace from start to stop child index of parent with t, which might + be a list. Number of children may be different after this call. + + + + If parent is null, don't do anything; must be at root of overall tree. + Can't replace whatever points to the parent externally. Do nothing. + + + + A stream of tree nodes, accessing nodes from a tree of some kind + + + + Get a tree node at an absolute index i; 0..n-1. + If you don't want to buffer up nodes, then this method makes no + sense for you. + + + + + Get tree node at current input pointer + ahead where + ==1 is next node. <0 indicates nodes in the past. So + {@code LT(-1)} is previous node, but implementations are not required to + provide results for < -1. {@code LT(0)} is undefined. For + <=n, return . Return for {@code LT(0)} + and any index that results in an absolute address that is negative. + + + + This is analogous to , but this returns a tree node + instead of a . Makes code generation identical for both + parser and tree grammars. + + + + + Where is this stream pulling nodes from? This is not the name, but + the object that provides node objects. + + + + + If the tree associated with this stream was created from a + {@link TokenStream}, you can specify it here. Used to do rule + {@code $text} attribute in tree parser. Optional unless you use tree + parser rule {@code $text} attribute or {@code output=template} and + {@code rewrite=true} options. + + + + + What adaptor can tell me how to interpret/navigate nodes and + trees. E.g., get text of a node. + + + + + As we flatten the tree, we use {@link Token#UP}, {@link Token#DOWN} nodes + to represent the tree structure. When debugging we need unique nodes so + we have to instantiate new ones. When doing normal tree parsing, it's + slow and a waste of memory to create unique navigation nodes. Default + should be {@code false}. + + + + + Return the text of all nodes from {@code start} to {@code stop}, + inclusive. If the stream does not buffer all the nodes then it can still + walk recursively from start until stop. You can always return + {@code null} or {@code ""} too, but users should not access + {@code $ruleLabel.text} in an action of course in that case. + + + + + Replace children of {@code parent} from index {@code startChildIndex} to + {@code stopChildIndex} with {@code t}, which might be a list. Number of + children may be different after this call. The stream is notified because + it is walking the tree and might need to know you are monkeying with the + underlying tree. Also, it might be able to modify the node stream to + avoid restreaming for future phases. + + + + If {@code parent} is {@code null}, don't do anything; must be at root of + overall tree. Can't replace whatever points to the parent externally. Do + nothing. + + + + + How to execute code for node t when a visitor visits node t. Execute + pre() before visiting children and execute post() after visiting children. + + + + + Execute an action before visiting children of t. Return t or + a rewritten t. It is up to the visitor to decide what to do + with the return value. Children of returned value will be + visited if using TreeVisitor.visit(). + + + + + Execute an action after visiting children of t. Return t or + a rewritten t. It is up to the visitor to decide what to do + with the return value. + + + + + A record of the rules used to match a token sequence. The tokens + end up as the leaves of this tree and rule nodes are the interior nodes. + This really adds no functionality, it is just an alias for CommonTree + that is more meaningful (specific) and holds a String to display for a node. + + + + + Emit a token and all hidden nodes before. EOF node holds all + hidden tokens after last real token. + + + + + Print out the leaves of this tree, which means printing original + input back out. + + + + + Base class for all exceptions thrown during AST rewrite construction. + This signifies a case where the cardinality of two or more elements + in a subrule are different: (ID INT)+ where |ID|!=|INT| + + + + No elements within a (...)+ in a rewrite rule + + + Ref to ID or expr but no tokens in ID stream or subtrees in expr stream + + + + A generic list of elements tracked in an alternative to be used in + a -> rewrite rule. We need to subclass to fill in the next() method, + which returns either an AST node wrapped around a token payload or + an existing subtree. + + + + Once you start next()ing, do not try to add more elements. It will + break the cursor tracking I believe. + + TODO: add mechanism to detect/puke on modification after reading from stream + + + + + + + + Cursor 0..n-1. If singleElement!=null, cursor is 0 until you next(), + which bumps it to 1 meaning no more elements. + + + + Track single elements w/o creating a list. Upon 2nd add, alloc list + + + The list of tokens or subtrees we are tracking + + + Once a node / subtree has been used in a stream, it must be dup'd + from then on. Streams are reset after subrules so that the streams + can be reused in future subrules. So, reset must set a dirty bit. + If dirty, then next() always returns a dup. + + + The element or stream description; usually has name of the token or + rule reference that this list tracks. Can include rulename too, but + the exception would track that info. + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + + Reset the condition of this stream so that it appears we have + not consumed any of its elements. Elements themselves are untouched. + Once we reset the stream, any future use will need duplicates. Set + the dirty bit. + + + + + Return the next element in the stream. If out of elements, throw + an exception unless size()==1. If size is 1, then return elements[0]. + Return a duplicate node/subtree if stream is out of elements and + size==1. If we've already used the element, dup (dirty bit set). + + + + + Do the work of getting the next element, making sure that it's + a tree node or subtree. Deal with the optimization of single- + element list versus list of size > 1. Throw an exception + if the stream is empty or we're out of elements and size>1. + protected so you can override in a subclass if necessary. + + + + + When constructing trees, sometimes we need to dup a token or AST + subtree. Dup'ing a token means just creating another AST node + around it. For trees, you must call the adaptor.dupTree() unless + the element is for a tree root; then it must be a node dup. + + + + + Ensure stream emits trees; tokens must be converted to AST nodes. + AST nodes can be passed through unmolested. + + + + + Queues up nodes matched on left side of -> in a tree parser. This is + the analog of RewriteRuleTokenStream for normal parsers. + + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + + Treat next element as a single node even if it's a subtree. + This is used instead of next() when the result has to be a + tree root node. Also prevents us from duplicating recently-added + children; e.g., ^(type ID)+ adds ID to type and then 2nd iteration + must dup the type node, but ID has been added. + + + + Referencing a rule result twice is ok; dup entire tree as + we can't be adding trees as root; e.g., expr expr. + + Hideous code duplication here with super.next(). Can't think of + a proper way to refactor. This needs to always call dup node + and super.next() doesn't know which to call: dup node or dup tree. + + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + Get next token from stream and make a node for it + + + + Don't convert to a tree unless they explicitly call nextTree. + This way we can do hetero tree nodes in rewrite. + + + + Return a node stream from a doubly-linked tree whose nodes + know what child index they are. No remove() is supported. + + Emit navigation nodes (DOWN, UP, and EOF) to let show tree structure. + + + If we emit UP/DOWN nodes, we need to spit out multiple nodes per + next() call. + + + + A parser for a stream of tree nodes. "tree grammars" result in a subclass + of this. All the error reporting and recovery is shared with Parser via + the BaseRecognizer superclass. + + + + Set the input stream + + + + Match '.' in tree parser has special meaning. Skip node or + entire tree if node has children. If children, scan until + corresponding UP node. + + + + + We have DOWN/UP nodes in the stream that have no line info; override. + plus we want to alter the exception type. Don't try to recover + from tree parser errors inline... + + + + + Prefix error message with the grammar name because message is + always intended for the programmer because the parser built + the input tree not the user. + + + + + Tree parsers parse nodes they usually have a token object as + payload. Set the exception token and do the default behavior. + + + + The tree pattern to lex like "(A B C)" + + + Index into input string + + + Current char + + + How long is the pattern in char? + + + Set when token type is ID or ARG (name mimics Java's StreamTokenizer) + + + Override this if you need transformation tracing to go somewhere + other than stdout or if you're not using ITree-derived trees. + + + + This is identical to the ParserRuleReturnScope except that + the start property is a tree nodes not Token object + when you are parsing trees. + + + + Gets the first node or root node of tree matched for this rule. + + + Do a depth first walk of a tree, applying pre() and post() actions as we go. + + + + Visit every node in tree t and trigger an action for each node + before/after having visited all of its children. Bottom up walk. + Execute both actions even if t has no children. Ignore return + results from transforming children since they will have altered + the child list of this node (their parent). Return result of + applying post action to this node. + + + + + Build and navigate trees with this object. Must know about the names + of tokens so you have to pass in a map or array of token names (from which + this class can build the map). I.e., Token DECL means nothing unless the + class can translate it to a token type. + + + + In order to create nodes and navigate, this class needs a TreeAdaptor. + + This class can build a token type -> node index for repeated use or for + iterating over the various nodes with a particular type. + + This class works in conjunction with the TreeAdaptor rather than moving + all this functionality into the adaptor. An adaptor helps build and + navigate trees using methods. This class helps you do it with string + patterns like "(A B C)". You can create a tree from that pattern or + match subtrees against it. + + + + + When using %label:TOKENNAME in a tree for parse(), we must + track the label. + + + + This adaptor creates TreePattern objects for use during scan() + + + + Compute a Map<String, Integer> that is an inverted index of + tokenNames (which maps int token types to names). + + + + Using the map of token names to token types, return the type. + + + + Walk the entire tree and make a node name to nodes mapping. + For now, use recursion but later nonrecursive version may be + more efficient. Returns Map<Integer, List> where the List is + of your AST node type. The Integer is the token type of the node. + + + + TODO: save this index so that find and visit are faster + + + + Do the work for index + + + Return a List of tree nodes with token type ttype + + + Return a List of subtrees matching pattern. + + + + Visit every ttype node in t, invoking the visitor. This is a quicker + version of the general visit(t, pattern) method. The labels arg + of the visitor action method is never set (it's null) since using + a token type rather than a pattern doesn't let us set a label. + + + + Do the recursive work for visit + + + + For all subtrees that match the pattern, execute the visit action. + The implementation uses the root node of the pattern in combination + with visit(t, ttype, visitor) so nil-rooted patterns are not allowed. + Patterns with wildcard roots are also not allowed. + + + + + Given a pattern like (ASSIGN %lhs:ID %rhs:.) with optional labels + on the various nodes and '.' (dot) as the node/subtree wildcard, + return true if the pattern matches and fill the labels Map with + the labels pointing at the appropriate nodes. Return false if + the pattern is malformed or the tree does not match. + + + + If a node specifies a text arg in pattern, then that must match + for that node in t. + + TODO: what's a better way to indicate bad pattern? Exceptions are a hassle + + + + + Do the work for parse. Check to see if the t2 pattern fits the + structure and token types in t1. Check text if the pattern has + text arguments on nodes. Fill labels map with pointers to nodes + in tree matched against nodes in pattern with labels. + + + + + Create a tree or node from the indicated tree pattern that closely + follows ANTLR tree grammar tree element syntax: + + (root child1 ... child2). + + + + You can also just pass in a node: ID + + Any node can have a text argument: ID[foo] + (notice there are no quotes around foo--it's clear it's a string). + + nil is a special name meaning "give me a nil node". Useful for + making lists: (nil A B C) is a list of A B C. + + + + + Compare t1 and t2; return true if token types/text, structure match exactly. + The trees are examined in their entirety so that (A B) does not match + (A B C) nor (A (B C)). + + + + TODO: allow them to pass in a comparator + TODO: have a version that is nonstatic so it can use instance adaptor + + I cannot rely on the tree node's equals() implementation as I make + no constraints at all on the node types nor interface etc... + + + + + Compare type, structure, and text of two trees, assuming adaptor in + this instance of a TreeWizard. + + + + A token stream that pulls tokens from the code source on-demand and + without tracking a complete buffer of the tokens. This stream buffers + the minimum number of tokens possible. It's the same as + OnDemandTokenStream except that OnDemandTokenStream buffers all tokens. + + You can't use this stream if you pass whitespace or other off-channel + tokens to the parser. The stream can't ignore off-channel tokens. + + You can only look backwards 1 token: LT(-1). + + Use this when you need to read from a socket or other infinite stream. + + @see BufferedTokenStream + @see CommonTokenStream + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + An extra token while parsing a TokenStream + + + diff --git a/packages/Antlr3.Runtime.3.5.1/lib/net40-client/Antlr3.Runtime.dll b/packages/Antlr3.Runtime.3.5.1/lib/net40-client/Antlr3.Runtime.dll new file mode 100644 index 000000000..55c8fbd6a Binary files /dev/null and b/packages/Antlr3.Runtime.3.5.1/lib/net40-client/Antlr3.Runtime.dll differ diff --git a/packages/Antlr3.Runtime.3.5.1/lib/net40-client/Antlr3.Runtime.xml b/packages/Antlr3.Runtime.3.5.1/lib/net40-client/Antlr3.Runtime.xml new file mode 100644 index 000000000..565e15d57 --- /dev/null +++ b/packages/Antlr3.Runtime.3.5.1/lib/net40-client/Antlr3.Runtime.xml @@ -0,0 +1,3249 @@ + + + + Antlr3.Runtime + + + + + This is a char buffer stream that is loaded from a file + all at once when you construct the object. This looks very + much like an ANTLReader or ANTLRInputStream, but it's a special case + since we know the exact size of the object to load. We can avoid lots + of data copying. + + + + + A kind of ReaderStream that pulls from an InputStream. + Useful for reading from stdin and specifying file encodings etc... + + + + + Vacuum all input from a Reader and then treat it like a StringStream. + Manage the buffer manually to avoid unnecessary data copying. + + + + If you need encoding, use ANTLRInputStream. + + + + + A pretty quick CharStream that pulls all data from an array + directly. Every method call counts in the lexer. Java's + strings aren't very good so I'm avoiding. + + + + The data being scanned + + + How many characters are actually in the buffer + + + 0..n-1 index into string of next char + + + line number 1..n within the input + + + The index of the character relative to the beginning of the line 0..n-1 + + + tracks how deep mark() calls are nested + + + + A list of CharStreamState objects that tracks the stream state + values line, charPositionInLine, and p that can change as you + move through the input stream. Indexed from 1..markDepth. + A null is kept @ index 0. Create upon first call to mark(). + + + + Track the last mark() call result value for use in rewind(). + + + What is name or source of this char stream? + + + Copy data in string to a local char array + + + This is the preferred constructor as no data is copied + + + + Return the current input symbol index 0..n where n indicates the + last symbol has been read. The index is the index of char to + be returned from LA(1). + + + + + Reset the stream so that it's in the same state it was + when the object was created *except* the data array is not + touched. + + + + + consume() ahead until p==index; can't just set p=index as we must + update line and charPositionInLine. + + + + + A generic recognizer that can handle recognizers generated from + lexer, parser, and tree grammars. This is all the parsing + support code essentially; most of it is error recovery stuff and + backtracking. + + + + + State of a lexer, parser, or tree parser are collected into a state + object so the state can be shared. This sharing is needed to + have one grammar import others and share same error variables + and other state variables. It's a kind of explicit multiple + inheritance via delegation of methods and shared state. + + + + reset the parser's state; subclasses must rewinds the input stream + + + + Match current input symbol against ttype. Attempt + single token insertion or deletion error recovery. If + that fails, throw MismatchedTokenException. + + + + To turn off single token insertion or deletion error + recovery, override recoverFromMismatchedToken() and have it + throw an exception. See TreeParser.recoverFromMismatchedToken(). + This way any error in a rule will cause an exception and + immediate exit from rule. Rule would recover by resynchronizing + to the set of symbols that can follow rule ref. + + + + Match the wildcard: in a symbol + + + Report a recognition problem. + + + This method sets errorRecovery to indicate the parser is recovering + not parsing. Once in recovery mode, no errors are generated. + To get out of recovery mode, the parser must successfully match + a token (after a resync). So it will go: + + 1. error occurs + 2. enter recovery mode, report error + 3. consume until token found in resynch set + 4. try to resume parsing + 5. next match() will reset errorRecovery mode + + If you override, make sure to update syntaxErrors if you care about that. + + + + What error message should be generated for the various exception types? + + + Not very object-oriented code, but I like having all error message + generation within one method rather than spread among all of the + exception classes. This also makes it much easier for the exception + handling because the exception classes do not have to have pointers back + to this object to access utility routines and so on. Also, changing + the message for an exception type would be difficult because you + would have to subclassing exception, but then somehow get ANTLR + to make those kinds of exception objects instead of the default. + This looks weird, but trust me--it makes the most sense in terms + of flexibility. + + For grammar debugging, you will want to override this to add + more information such as the stack frame with + getRuleInvocationStack(e, this.getClass().getName()) and, + for no viable alts, the decision description and state etc... + + Override this to change the message generated for one or more + exception types. + + + + + Get number of recognition errors (lexer, parser, tree parser). Each + recognizer tracks its own number. So parser and lexer each have + separate count. Does not count the spurious errors found between + an error and next valid token match + + + + + + What is the error header, normally line/character position information? + + + + How should a token be displayed in an error message? The default + is to display just the text, but during development you might + want to have a lot of information spit out. Override in that case + to use t.ToString() (which, for CommonToken, dumps everything about + the token). This is better than forcing you to override a method in + your token objects because you don't have to go modify your lexer + so that it creates a new Java type. + + + + Override this method to change where error messages go + + + + Recover from an error found on the input stream. This is + for NoViableAlt and mismatched symbol exceptions. If you enable + single token insertion and deletion, this will usually not + handle mismatched symbol exceptions but there could be a mismatched + token that the match() routine could not recover from. + + + + + A hook to listen in on the token consumption during error recovery. + The DebugParser subclasses this to fire events to the listenter. + + + + + Compute the context-sensitive FOLLOW set for current rule. + This is set of token types that can follow a specific rule + reference given a specific call chain. You get the set of + viable tokens that can possibly come next (lookahead depth 1) + given the current call chain. Contrast this with the + definition of plain FOLLOW for rule r: + + + FOLLOW(r)={x | S=>*alpha r beta in G and x in FIRST(beta)} + + where x in T* and alpha, beta in V*; T is set of terminals and + V is the set of terminals and nonterminals. In other words, + FOLLOW(r) is the set of all tokens that can possibly follow + references to r in *any* sentential form (context). At + runtime, however, we know precisely which context applies as + we have the call chain. We may compute the exact (rather + than covering superset) set of following tokens. + + For example, consider grammar: + + stat : ID '=' expr ';' // FOLLOW(stat)=={EOF} + | "return" expr '.' + ; + expr : atom ('+' atom)* ; // FOLLOW(expr)=={';','.',')'} + atom : INT // FOLLOW(atom)=={'+',')',';','.'} + | '(' expr ')' + ; + + The FOLLOW sets are all inclusive whereas context-sensitive + FOLLOW sets are precisely what could follow a rule reference. + For input input "i=(3);", here is the derivation: + + stat => ID '=' expr ';' + => ID '=' atom ('+' atom)* ';' + => ID '=' '(' expr ')' ('+' atom)* ';' + => ID '=' '(' atom ')' ('+' atom)* ';' + => ID '=' '(' INT ')' ('+' atom)* ';' + => ID '=' '(' INT ')' ';' + + At the "3" token, you'd have a call chain of + + stat -> expr -> atom -> expr -> atom + + What can follow that specific nested ref to atom? Exactly ')' + as you can see by looking at the derivation of this specific + input. Contrast this with the FOLLOW(atom)={'+',')',';','.'}. + + You want the exact viable token set when recovering from a + token mismatch. Upon token mismatch, if LA(1) is member of + the viable next token set, then you know there is most likely + a missing token in the input stream. "Insert" one by just not + throwing an exception. + + + Attempt to recover from a single missing or extra token. + + EXTRA TOKEN + + LA(1) is not what we are looking for. If LA(2) has the right token, + however, then assume LA(1) is some extra spurious token. Delete it + and LA(2) as if we were doing a normal match(), which advances the + input. + + MISSING TOKEN + + If current token is consistent with what could come after + ttype then it is ok to "insert" the missing token, else throw + exception For example, Input "i=(3;" is clearly missing the + ')'. When the parser returns from the nested call to expr, it + will have call chain: + + stat -> expr -> atom + + and it will be trying to match the ')' at this point in the + derivation: + + => ID '=' '(' INT ')' ('+' atom)* ';' + ^ + match() will see that ';' doesn't match ')' and report a + mismatched token error. To recover, it sees that LA(1)==';' + is in the set of tokens that can follow the ')' token + reference in rule atom. It can assume that you forgot the ')'. + + + Not currently used + + + + Match needs to return the current input symbol, which gets put + into the label for the associated token ref; e.g., x=ID. Token + and tree parsers need to return different objects. Rather than test + for input stream type or change the IntStream interface, I use + a simple method to ask the recognizer to tell me what the current + input symbol is. + + + This is ignored for lexers. + + + Conjure up a missing token during error recovery. + + + The recognizer attempts to recover from single missing + symbols. But, actions might refer to that missing symbol. + For example, x=ID {f($x);}. The action clearly assumes + that there has been an identifier matched previously and that + $x points at that token. If that token is missing, but + the next token in the stream is what we want we assume that + this token is missing and we keep going. Because we + have to return some token to replace the missing token, + we have to conjure one up. This method gives the user control + over the tokens returned for missing tokens. Mostly, + you will want to create something special for identifier + tokens. For literals such as '{' and ',', the default + action in the parser or tree parser works. It simply creates + a CommonToken of the appropriate type. The text will be the token. + If you change what tokens must be created by the lexer, + override this method to create the appropriate tokens. + + + + Consume tokens until one matches the given token set + + + Push a rule's follow set using our own hardcoded stack + + + + Return of the rules in your parser instance + leading up to a call to this method. You could override if + you want more details such as the file/line info of where + in the parser java code a rule is invoked. + + + + This is very useful for error messages and for context-sensitive + error recovery. + + + + + A more general version of GetRuleInvocationStack where you can + pass in the StackTrace of, for example, a RecognitionException + to get it's rule stack trace. + + + + Return whether or not a backtracking attempt failed. + + + + Used to print out token names like ID during debugging and + error reporting. The generated parsers implement a method + that overrides this to point to their String[] tokenNames. + + + + + For debugging and other purposes, might want the grammar name. + Have ANTLR generate an implementation for this method. + + + + + A convenience method for use most often with template rewrites. + Convert a list of to a list of . + + + + + Given a rule number and a start token index number, return + MEMO_RULE_UNKNOWN if the rule has not parsed input starting from + start index. If this rule has parsed input starting from the + start index before, then return where the rule stopped parsing. + It returns the index of the last token matched by the rule. + + + + For now we use a hashtable and just the slow Object-based one. + Later, we can make a special one for ints and also one that + tosses out data after we commit past input position i. + + + + + Has this rule already parsed input at the current index in the + input stream? Return the stop token index or MEMO_RULE_UNKNOWN. + If we attempted but failed to parse properly before, return + MEMO_RULE_FAILED. + + + + This method has a side-effect: if we have seen this input for + this rule and successfully parsed before, then seek ahead to + 1 past the stop token matched for this rule last time. + + + + + Record whether or not this rule parsed the input at this position + successfully. Use a standard java hashtable for now. + + + + return how many rule/input-index pairs there are in total. + TODO: this includes synpreds. :( + + + + A stripped-down version of org.antlr.misc.BitSet that is just + good enough to handle runtime requirements such as FOLLOW sets + for automatic error recovery. + + + + + We will often need to do a mod operator (i mod nbits). Its + turns out that, for powers of two, this mod operation is + same as (i & (nbits-1)). Since mod is slow, we use a + precomputed mod mask to do the mod instead. + + + + The actual data bits + + + Construct a bitset of size one word (64 bits) + + + Construction from a static array of longs + + + Construction from a list of integers + + + Construct a bitset given the size + The size of the bitset in bits + + + return this | a in a new set + + + or this element into this set (grow as necessary to accommodate) + + + Grows the set to a larger number of bits. + element that must fit in set + + + Sets the size of a set. + how many words the new set should be + + + return how much space is being used by the bits array not how many actually have member bits on. + + + Is this contained within a? + + + Buffer all input tokens but do on-demand fetching of new tokens from + lexer. Useful when the parser or lexer has to set context/mode info before + proper lexing of future tokens. The ST template parser needs this, + for example, because it has to constantly flip back and forth between + inside/output templates. E.g., <names:{hi, <it>}> has to parse names + as part of an expression but "hi, <it>" as a nested template. + + You can't use this stream if you pass whitespace or other off-channel + tokens to the parser. The stream can't ignore off-channel tokens. + (UnbufferedTokenStream is the same way.) + + This is not a subclass of UnbufferedTokenStream because I don't want + to confuse small moving window of tokens it uses for the full buffer. + + + Record every single token pulled from the source so we can reproduce + chunks of it later. The buffer in LookaheadStream overlaps sometimes + as its moving window moves through the input. This list captures + everything so we can access complete input text. + + + Track the last mark() call result value for use in rewind(). + + + The index into the tokens list of the current token (next token + to consume). tokens[p] should be LT(1). p=-1 indicates need + to initialize with first token. The ctor doesn't get a token. + First call to LT(1) or whatever gets the first token and sets p=0; + + + + How deep have we gone? + + + + Move the input pointer to the next incoming token. The stream + must become active with LT(1) available. consume() simply + moves the input pointer so that LT(1) points at the next + input symbol. Consume at least one token. + + Walk past any token not on the channel the parser is listening to. + + + Make sure index i in tokens has a token. + + + add n elements to buffer + + + Given a start and stop index, return a List of all tokens in + the token type BitSet. Return null if no tokens were found. This + method looks at both on and off channel tokens. + + + + When walking ahead with cyclic DFA or for syntactic predicates, + we need to record the state of the input stream (char index, + line, etc...) so that we can rewind the state after scanning ahead. + + + This is the complete state of a stream. + + + Index into the char stream of next lookahead char + + + What line number is the scanner at before processing buffer[p]? + + + What char position 0..n-1 in line is scanner before processing buffer[p]? + + + + A Token object like we'd use in ANTLR 2.x; has an actual string created + and associated with this object. These objects are needed for imaginary + tree nodes that have payload objects. We need to create a Token object + that has a string; the tree node will point at this token. CommonToken + has indexes into a char stream and hence cannot be used to introduce + new strings. + + + + What token number is this from 0..n-1 tokens + + + + We need to be able to change the text once in a while. If + this is non-null, then getText should return this. Note that + start/stop are not affected by changing this. + + + + What token number is this from 0..n-1 tokens; < 0 implies invalid index + + + The char position into the input buffer where this token starts + + + The char position into the input buffer where this token stops + + + + The most common stream of tokens is one where every token is buffered up + and tokens are prefiltered for a certain channel (the parser will only + see these tokens and cannot change the filter channel number during the + parse). + + + TODO: how to access the full token stream? How to track all tokens matched per rule? + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + Reset this token stream by setting its token source. + + + Always leave p on an on-channel token. + + + Given a starting index, return the index of the first on-channel + token. + + + All debugging events that a recognizer can trigger. + + + I did not create a separate AST debugging interface as it would create + lots of extra classes and DebugParser has a dbg var defined, which makes + it hard to change to ASTDebugEventListener. I looked hard at this issue + and it is easier to understand as one monolithic event interface for all + possible events. Hopefully, adding ST debugging stuff won't be bad. Leave + for future. 4/26/2006. + + + + + The parser has just entered a rule. No decision has been made about + which alt is predicted. This is fired AFTER init actions have been + executed. Attributes are defined and available etc... + The grammarFileName allows composite grammars to jump around among + multiple grammar files. + + + + + Because rules can have lots of alternatives, it is very useful to + know which alt you are entering. This is 1..n for n alts. + + + + + This is the last thing executed before leaving a rule. It is + executed even if an exception is thrown. This is triggered after + error reporting and recovery have occurred (unless the exception is + not caught in this rule). This implies an "exitAlt" event. + The grammarFileName allows composite grammars to jump around among + multiple grammar files. + + + + Track entry into any (...) subrule other EBNF construct + + + + Every decision, fixed k or arbitrary, has an enter/exit event + so that a GUI can easily track what LT/consume events are + associated with prediction. You will see a single enter/exit + subrule but multiple enter/exit decision events, one for each + loop iteration. + + + + + An input token was consumed; matched by any kind of element. + Trigger after the token was matched by things like match(), matchAny(). + + + + + An off-channel input token was consumed. + Trigger after the token was matched by things like match(), matchAny(). + (unless of course the hidden token is first stuff in the input stream). + + + + + Somebody (anybody) looked ahead. Note that this actually gets + triggered by both LA and LT calls. The debugger will want to know + which Token object was examined. Like consumeToken, this indicates + what token was seen at that depth. A remote debugger cannot look + ahead into a file it doesn't have so LT events must pass the token + even if the info is redundant. + + + + + The parser is going to look arbitrarily ahead; mark this location, + the token stream's marker is sent in case you need it. + + + + + After an arbitrairly long lookahead as with a cyclic DFA (or with + any backtrack), this informs the debugger that stream should be + rewound to the position associated with marker. + + + + + Rewind to the input position of the last marker. + Used currently only after a cyclic DFA and just + before starting a sem/syn predicate to get the + input position back to the start of the decision. + Do not "pop" the marker off the state. mark(i) + and rewind(i) should balance still. + + + + + To watch a parser move through the grammar, the parser needs to + inform the debugger what line/charPos it is passing in the grammar. + For now, this does not know how to switch from one grammar to the + other and back for island grammars etc... + + + + This should also allow breakpoints because the debugger can stop + the parser whenever it hits this line/pos. + + + + + A recognition exception occurred such as NoViableAltException. I made + this a generic event so that I can alter the exception hierachy later + without having to alter all the debug objects. + + + + Upon error, the stack of enter rule/subrule must be properly unwound. + If no viable alt occurs it is within an enter/exit decision, which + also must be rewound. Even the rewind for each mark must be unwount. + In the Java target this is pretty easy using try/finally, if a bit + ugly in the generated code. The rewind is generated in DFA.predict() + actually so no code needs to be generated for that. For languages + w/o this "finally" feature (C++?), the target implementor will have + to build an event stack or something. + + Across a socket for remote debugging, only the RecognitionException + data fields are transmitted. The token object or whatever that + caused the problem was the last object referenced by LT. The + immediately preceding LT event should hold the unexpected Token or + char. + + Here is a sample event trace for grammar: + + b : C ({;}A|B) // {;} is there to prevent A|B becoming a set + | D + ; + + The sequence for this rule (with no viable alt in the subrule) for + input 'c c' (there are 3 tokens) is: + + commence + LT(1) + enterRule b + location 7 1 + enter decision 3 + LT(1) + exit decision 3 + enterAlt1 + location 7 5 + LT(1) + consumeToken [c/<4>,1:0] + location 7 7 + enterSubRule 2 + enter decision 2 + LT(1) + LT(1) + recognitionException NoViableAltException 2 1 2 + exit decision 2 + exitSubRule 2 + beginResync + LT(1) + consumeToken [c/<4>,1:1] + LT(1) + endResync + LT(-1) + exitRule b + terminate + + + + + Indicates the recognizer is about to consume tokens to resynchronize + the parser. Any consume events from here until the recovered event + are not part of the parse--they are dead tokens. + + + + + Indicates that the recognizer has finished consuming tokens in order + to resychronize. There may be multiple beginResync/endResync pairs + before the recognizer comes out of errorRecovery mode (in which + multiple errors are suppressed). This will be useful + in a gui where you want to probably grey out tokens that are consumed + but not matched to anything in grammar. Anything between + a beginResync/endResync pair was tossed out by the parser. + + + + A semantic predicate was evaluate with this result and action text + + + + Announce that parsing has begun. Not technically useful except for + sending events over a socket. A GUI for example will launch a thread + to connect and communicate with a remote parser. The thread will want + to notify the GUI when a connection is made. ANTLR parsers + trigger this upon entry to the first rule (the ruleLevel is used to + figure this out). + + + + + Parsing is over; successfully or not. Mostly useful for telling + remote debugging listeners that it's time to quit. When the rule + invocation level goes to zero at the end of a rule, we are done + parsing. + + + + + Input for a tree parser is an AST, but we know nothing for sure + about a node except its type and text (obtained from the adaptor). + This is the analog of the consumeToken method. Again, the ID is + the hashCode usually of the node so it only works if hashCode is + not implemented. If the type is UP or DOWN, then + the ID is not really meaningful as it's fixed--there is + just one UP node and one DOWN navigation node. + + + + + + + The tree parser lookedahead. If the type is UP or DOWN, + then the ID is not really meaningful as it's fixed--there is + just one UP node and one DOWN navigation node. + + + + + A nil was created (even nil nodes have a unique ID... + they are not "null" per se). As of 4/28/2006, this + seems to be uniquely triggered when starting a new subtree + such as when entering a subrule in automatic mode and when + building a tree in rewrite mode. + + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID is set. + + + + + Upon syntax error, recognizers bracket the error with an error node + if they are building ASTs. + + + + + + Announce a new node built from token elements such as type etc... + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID, type, text are + set. + + + + Announce a new node built from an existing token. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only node.ID and token.tokenIndex + are set. + + + + Make a node the new root of an existing root. See + + + Note: the newRootID parameter is possibly different + than the TreeAdaptor.becomeRoot() newRoot parameter. + In our case, it will always be the result of calling + TreeAdaptor.becomeRoot() and not root_n or whatever. + + The listener should assume that this event occurs + only when the current subrule (or rule) subtree is + being reset to newRootID. + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only IDs are set. + + + + + + Make childID a child of rootID. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only IDs are set. + + + + + + Set the token start/stop token index for a subtree root or node. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID is set. + + + + A DFA implemented as a set of transition tables. + + + Any state that has a semantic predicate edge is special; those states + are generated with if-then-else structures in a specialStateTransition() + which is generated by cyclicDFA template. + + There are at most 32767 states (16-bit signed short). + Could get away with byte sometimes but would have to generate different + types and the simulation code too. For a point of reference, the Java + lexer's Tokens rule DFA has 326 states roughly. + + + + Which recognizer encloses this DFA? Needed to check backtracking + + + + From the input stream, predict what alternative will succeed + using this DFA (representing the covering regular approximation + to the underlying CFL). Return an alternative number 1..n. Throw + an exception upon error. + + + + A hook for debugging interface + + + + Given a String that has a run-length-encoding of some unsigned shorts + like "\1\2\3\9", convert to short[] {2,9,9,9}. We do this to avoid + static short[] which generates so much init code that the class won't + compile. :( + + + + Hideous duplication of code, but I need different typed arrays out :( + + + The recognizer did not match anything for a (..)+ loop. + + + + A semantic predicate failed during validation. Validation of predicates + occurs when normally parsing the alternative just like matching a token. + Disambiguating predicate evaluation occurs when we hoist a predicate into + a prediction decision. + + + + AST rules have trees + + + Has a value potentially if output=AST; + + + AST rules have trees + + + Has a value potentially if output=AST; + + + A source of characters for an ANTLR lexer + + + + For infinite streams, you don't need this; primarily I'm providing + a useful interface for action code. Just make sure actions don't + use this on streams that don't support it. + + + + + Get the ith character of lookahead. This is the same usually as + LA(i). This will be used for labels in the generated + lexer code. I'd prefer to return a char here type-wise, but it's + probably better to be 32-bit clean and be consistent with LA. + + + + ANTLR tracks the line information automatically + Because this stream can rewind, we need to be able to reset the line + + + The index of the character relative to the beginning of the line 0..n-1 + + + + A simple stream of integers used when all I care about is the char + or token type sequence (such as interpretation). + + + + + Get int at current input pointer + i ahead where i=1 is next int. + Negative indexes are allowed. LA(-1) is previous token (token + just matched). LA(-i) where i is before first token should + yield -1, invalid char / EOF. + + + + + Tell the stream to start buffering if it hasn't already. Return + current input position, Index, or some other marker so that + when passed to rewind() you get back to the same spot. + rewind(mark()) should not affect the input cursor. The Lexer + track line/col info as well as input index so its markers are + not pure input indexes. Same for tree node streams. + + + + + Return the current input symbol index 0..n where n indicates the + last symbol has been read. The index is the symbol about to be + read not the most recently read symbol. + + + + + Reset the stream so that next call to index would return marker. + The marker will usually be Index but it doesn't have to be. It's + just a marker to indicate what state the stream was in. This is + essentially calling release() and seek(). If there are markers + created after this marker argument, this routine must unroll them + like a stack. Assume the state the stream was in when this marker + was created. + + + + + Rewind to the input position of the last marker. + Used currently only after a cyclic DFA and just + before starting a sem/syn predicate to get the + input position back to the start of the decision. + Do not "pop" the marker off the state. mark(i) + and rewind(i) should balance still. It is + like invoking rewind(last marker) but it should not "pop" + the marker off. It's like seek(last marker's input position). + + + + + You may want to commit to a backtrack but don't want to force the + stream to keep bookkeeping objects around for a marker that is + no longer necessary. This will have the same behavior as + rewind() except it releases resources without the backward seek. + This must throw away resources for all markers back to the marker + argument. So if you're nested 5 levels of mark(), and then release(2) + you have to release resources for depths 2..5. + + + + + Set the input cursor to the position indicated by index. This is + normally used to seek ahead in the input stream. No buffering is + required to do this unless you know your stream will use seek to + move backwards such as when backtracking. + + + + This is different from rewind in its multi-directional + requirement and in that its argument is strictly an input cursor (index). + + For char streams, seeking forward must update the stream state such + as line number. For seeking backwards, you will be presumably + backtracking using the mark/rewind mechanism that restores state and + so this method does not need to update state when seeking backwards. + + Currently, this method is only used for efficient backtracking using + memoization, but in the future it may be used for incremental parsing. + + The index is 0..n-1. A seek to position i means that LA(1) will + return the ith symbol. So, seeking to 0 means LA(1) will return the + first element in the stream. + + + + + Only makes sense for streams that buffer everything up probably, but + might be useful to display the entire stream or for testing. This + value includes a single EOF. + + + + + Where are you getting symbols from? Normally, implementations will + pass the buck all the way to the lexer who can ask its input stream + for the file name or whatever. + + + + + Rules can have start/stop info. + + + + + Gets the start element from the input stream + + + + + Gets the stop element from the input stream + + + + + Rules can have start/stop info. + + The element type of the input stream. + + + + Gets the start element from the input stream + + + + + Gets the stop element from the input stream + + + + Get the text of the token + + + The line number on which this token was matched; line=1..n + + + The index of the first character relative to the beginning of the line 0..n-1 + + + + An index from 0..n-1 of the token object in the input stream. + This must be valid in order to use the ANTLRWorks debugger. + + + + + From what character stream was this token created? You don't have to + implement but it's nice to know where a Token comes from if you have + include files etc... on the input. + + + + + A source of tokens must provide a sequence of tokens via nextToken() + and also must reveal it's source of characters; CommonToken's text is + computed from a CharStream; it only store indices into the char stream. + + + + Errors from the lexer are never passed to the parser. Either you want + to keep going or you do not upon token recognition error. If you do not + want to continue lexing then you do not want to continue parsing. Just + throw an exception not under RecognitionException and Java will naturally + toss you all the way out of the recognizers. If you want to continue + lexing then you should not throw an exception to the parser--it has already + requested a token. Keep lexing until you get a valid one. Just report + errors and keep going, looking for a valid token. + + + + + Return a Token object from your input stream (usually a CharStream). + Do not fail/return upon lexing error; keep chewing on the characters + until you get a good one; errors are not passed through to the parser. + + + + + Where are you getting tokens from? normally the implication will simply + ask lexers input stream. + + + + A stream of tokens accessing tokens from a TokenSource + + + Get Token at current input pointer + i ahead where i=1 is next Token. + i<0 indicates tokens in the past. So -1 is previous token and -2 is + two tokens ago. LT(0) is undefined. For i>=n, return Token.EOFToken. + Return null for LT(0) and any index that results in an absolute address + that is negative. + + + + How far ahead has the stream been asked to look? The return + value is a valid index from 0..n-1. + + + + + Get a token at an absolute index i; 0..n-1. This is really only + needed for profiling and debugging and token stream rewriting. + If you don't want to buffer up tokens, then this method makes no + sense for you. Naturally you can't use the rewrite stream feature. + I believe DebugTokenStream can easily be altered to not use + this method, removing the dependency. + + + + + Where is this stream pulling tokens from? This is not the name, but + the object that provides Token objects. + + + + + Return the text of all tokens from start to stop, inclusive. + If the stream does not buffer all the tokens then it can just + return "" or null; Users should not access $ruleLabel.text in + an action of course in that case. + + + + + Because the user is not required to use a token with an index stored + in it, we must provide a means for two token objects themselves to + indicate the start/end location. Most often this will just delegate + to the other toString(int,int). This is also parallel with + the TreeNodeStream.toString(Object,Object). + + + + + The most common stream of tokens is one where every token is buffered up + and tokens are prefiltered for a certain channel (the parser will only + see these tokens and cannot change the filter channel number during the + parse). + + + TODO: how to access the full token stream? How to track all tokens matched per rule? + + + + Record every single token pulled from the source so we can reproduce + chunks of it later. + + + + Map from token type to channel to override some Tokens' channel numbers + + + Set of token types; discard any tokens with this type + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + By default, track all incoming tokens + + + Track the last mark() call result value for use in rewind(). + + + + The index into the tokens list of the current token (next token + to consume). p==-1 indicates that the tokens list is empty + + + + + How deep have we gone? + + + + Reset this token stream by setting its token source. + + + + Load all tokens from the token source and put in tokens. + This is done upon first LT request because you might want to + set some token type / channel overrides before filling buffer. + + + + + Move the input pointer to the next incoming token. The stream + must become active with LT(1) available. consume() simply + moves the input pointer so that LT(1) points at the next + input symbol. Consume at least one token. + + + + Walk past any token not on the channel the parser is listening to. + + + + Given a starting index, return the index of the first on-channel token. + + + + A simple filter mechanism whereby you can tell this token stream + to force all tokens of type ttype to be on channel. For example, + when interpreting, we cannot exec actions so we need to tell + the stream to force all WS and NEWLINE to be a different, ignored + channel. + + + + + Given a start and stop index, return a List of all tokens in + the token type BitSet. Return null if no tokens were found. This + method looks at both on and off channel tokens. + + + + + Get the ith token from the current position 1..n where k=1 is the + first symbol of lookahead. + + + + Look backwards k tokens on-channel tokens + + + + Return absolute token i; ignore which channel the tokens are on; + that is, count all tokens not just on-channel tokens. + + + + + A lexer is recognizer that draws input symbols from a character stream. + lexer grammars result in a subclass of this object. A Lexer object + uses simplified match() and error recovery mechanisms in the interest + of speed. + + + + Where is the lexer drawing characters from? + + + + Gets or sets the text matched so far for the current token or any text override. + + + Setting this value replaces any previously set value, and overrides the original text. + + + + Return a token from this source; i.e., match a token on the char stream. + + + Returns the EOF token (default), if you need + to return a custom token instead override this method. + + + + Instruct the lexer to skip creating a token for current lexer rule + and look for another token. nextToken() knows to keep looking when + a lexer rule finishes with token set to SKIP_TOKEN. Recall that + if token==null at end of any token rule, it creates one for you + and emits it. + + + + This is the lexer entry point that sets instance var 'token' + + + + Currently does not support multiple emits per nextToken invocation + for efficiency reasons. Subclass and override this method and + nextToken (to push tokens into a list and pull from that list rather + than a single variable as this implementation does). + + + + + The standard method called to automatically emit a token at the + outermost lexical rule. The token object should point into the + char buffer start..stop. If there is a text override in 'text', + use that to set the token's text. Override this method to emit + custom Token objects. + + + + If you are building trees, then you should also override + Parser or TreeParser.getMissingSymbol(). + + + + What is the index of the current character of lookahead? + + + + Lexers can normally match any char in it's vocabulary after matching + a token, so do the easy thing and just kill a character and hope + it all works out. You can instead use the rule invocation stack + to do sophisticated error recovery if you are in a fragment rule. + + + + A queue that can dequeue and get(i) in O(1) and grow arbitrarily large. + A linked list is fast at dequeue but slow at get(i). An array is + the reverse. This is O(1) for both operations. + + List grows until you dequeue last element at end of buffer. Then + it resets to start filling at 0 again. If adds/removes are balanced, the + buffer will not grow too large. + + No iterator stuff as that's not how we'll use it. + + + dynamically-sized buffer of elements + + + index of next element to fill + + + + How deep have we gone? + + + + + Return element {@code i} elements ahead of current element. {@code i==0} + gets current element. This is not an absolute index into {@link #data} + since {@code p} defines the start of the real list. + + + + Get and remove first element in queue + + + Return string of current buffer contents; non-destructive + + + + A lookahead queue that knows how to mark/release locations in the buffer for + backtracking purposes. Any markers force the {@link FastQueue} superclass to + keep all elements until no more markers; then can reset to avoid growing a + huge buffer. + + + + Absolute token index. It's the index of the symbol about to be + read via {@code LT(1)}. Goes from 0 to numtokens. + + + This is the {@code LT(-1)} element for the first element in {@link #data}. + + + Track object returned by nextElement upon end of stream; + Return it later when they ask for LT passed end of input. + + + Track the last mark() call result value for use in rewind(). + + + tracks how deep mark() calls are nested + + + + Implement nextElement to supply a stream of elements to this + lookahead buffer. Return EOF upon end of the stream we're pulling from. + + + + + Get and remove first element in queue; override + {@link FastQueue#remove()}; it's the same, just checks for backtracking. + + + + Make sure we have at least one element to remove, even if EOF + + + + Make sure we have 'need' elements from current position p. Last valid + p index is data.size()-1. p+need-1 is the data index 'need' elements + ahead. If we need 1 element, (p+1-1)==p must be < data.size(). + + + + add n elements to buffer + + + Size of entire stream is unknown; we only know buffer size from FastQueue + + + + Seek to a 0-indexed absolute token index. Normally used to seek backwards + in the buffer. Does not force loading of nodes. + + + To preserve backward compatibility, this method allows seeking past the + end of the currently buffered data. In this case, the input pointer will + be moved but the data will only actually be loaded upon the next call to + {@link #consume} or {@link #LT} for {@code k>0}. + + + + A mismatched char or Token or tree node + + + + We were expecting a token but it's not found. The current token + is actually what we wanted next. Used for tree node errors too. + + + + + A parser for TokenStreams. "parser grammars" result in a subclass + of this. + + + + Gets or sets the token stream; resets the parser upon a set. + + + + Rules that return more than a single value must return an object + containing all the values. Besides the properties defined in + RuleLabelScope.predefinedRulePropertiesScope there may be user-defined + return values. This class simply defines the minimum properties that + are always defined and methods to access the others that might be + available depending on output option such as template and tree. + + + + Note text is not an actual property of the return value, it is computed + from start and stop using the input stream's toString() method. I + could add a ctor to this so that we can pass in and store the input + stream, but I'm not sure we want to do that. It would seem to be undefined + to get the .text property anyway if the rule matches tokens from multiple + input streams. + + I do not use getters for fields of objects that are used simply to + group values such as this aggregate. The getters/setters are there to + satisfy the superclass interface. + + + + The root of the ANTLR exception hierarchy. + + + To avoid English-only error messages and to generally make things + as flexible as possible, these exceptions are not created with strings, + but rather the information necessary to generate an error. Then + the various reporting methods in Parser and Lexer can be overridden + to generate a localized error message. For example, MismatchedToken + exceptions are built with the expected token type. + So, don't expect getMessage() to return anything. + + Note that as of Java 1.4, you can access the stack trace, which means + that you can compute the complete trace of rules from the start symbol. + This gives you considerable context information with which to generate + useful error messages. + + ANTLR generates code that throws exceptions upon recognition error and + also generates code to catch these exceptions in each rule. If you + want to quit upon first error, you can turn off the automatic error + handling mechanism using rulecatch action, but you still need to + override methods mismatch and recoverFromMismatchSet. + + In general, the recognition exceptions can track where in a grammar a + problem occurred and/or what was the expected input. While the parser + knows its state (such as current input symbol and line info) that + state can change before the exception is reported so current token index + is computed and stored at exception time. From this info, you can + perhaps print an entire line of input not just a single token, for example. + Better to just say the recognizer had a problem and then let the parser + figure out a fancy report. + + + + What input stream did the error occur in? + + + + What was the lookahead index when this exception was thrown? + + + + What is index of token/char were we looking at when the error occurred? + + + + The current Token when an error occurred. Since not all streams + can retrieve the ith Token, we have to track the Token object. + For parsers. Even when it's a tree parser, token might be set. + + + + + If this is a tree parser exception, node is set to the node with + the problem. + + + + The current char when an error occurred. For lexers. + + + + Track the line (1-based) at which the error occurred in case this is + generated from a lexer. We need to track this since the + unexpected char doesn't carry the line info. + + + + + The 0-based index into the line where the error occurred. + + + + + If you are parsing a tree node stream, you will encounter som + imaginary nodes w/o line/col info. We now search backwards looking + for most recent token with line/col info, but notify getErrorHeader() + that info is approximate. + + + + Used for remote debugger deserialization + + + Return the token type or char of the unexpected input element + + + + The set of fields needed by an abstract recognizer to recognize input + and recover from errors etc... As a separate state object, it can be + shared among multiple grammars; e.g., when one grammar imports another. + + + + These fields are publically visible but the actual state pointer per + parser is protected. + + + + + Track the set of token types that can follow any rule invocation. + Stack grows upwards. When it hits the max, it grows 2x in size + and keeps going. + + + + + This is true when we see an error and before having successfully + matched a token. Prevents generation of more than one error message + per error. + + + + + The index into the input stream where the last error occurred. + This is used to prevent infinite loops where an error is found + but no token is consumed during recovery...another error is found, + ad naseum. This is a failsafe mechanism to guarantee that at least + one token/tree node is consumed for two errors. + + + + + In lieu of a return value, this indicates that a rule or token + has failed to match. Reset to false upon valid token match. + + + + Did the recognizer encounter a syntax error? Track how many. + + + + If 0, no backtracking is going on. Safe to exec actions etc... + If >0 then it's the level of backtracking. + + + + + An array[size num rules] of dictionaries that tracks + the stop token index for each rule. ruleMemo[ruleIndex] is + the memoization table for ruleIndex. For key ruleStartIndex, you + get back the stop token for associated rule or MEMO_RULE_FAILED. + + + This is only used if rule memoization is on (which it is by default). + + + + The goal of all lexer rules/methods is to create a token object. + This is an instance variable as multiple rules may collaborate to + create a single token. nextToken will return this object after + matching lexer rule(s). If you subclass to allow multiple token + emissions, then set this to the last token to be matched or + something nonnull so that the auto token emit mechanism will not + emit another token. + + + + + What character index in the stream did the current token start at? + Needed, for example, to get the text for current token. Set at + the start of nextToken. + + + + The line on which the first character of the token resides + + + The character position of first character within the line + + + The channel number for the current token + + + The token type for the current token + + + + You can set the text for the current token to override what is in + the input char buffer. Use setText() or can set this instance var. + + + + + All tokens go to the parser (unless skip() is called in that rule) + on a particular "channel". The parser tunes to a particular channel + so that whitespace etc... can go to the parser on a "hidden" channel. + + + + + Anything on different channel than DEFAULT_CHANNEL is not parsed + by parser. + + + + Useful for dumping out the input stream after doing some + augmentation or other manipulations. + + You can insert stuff, replace, and delete chunks. Note that the + operations are done lazily--only if you convert the buffer to a + String. This is very efficient because you are not moving data around + all the time. As the buffer of tokens is converted to strings, the + toString() method(s) check to see if there is an operation at the + current index. If so, the operation is done and then normal String + rendering continues on the buffer. This is like having multiple Turing + machine instruction streams (programs) operating on a single input tape. :) + + Since the operations are done lazily at toString-time, operations do not + screw up the token index values. That is, an insert operation at token + index i does not change the index values for tokens i+1..n-1. + + Because operations never actually alter the buffer, you may always get + the original token stream back without undoing anything. Since + the instructions are queued up, you can easily simulate transactions and + roll back any changes if there is an error just by removing instructions. + For example, + + CharStream input = new ANTLRFileStream("input"); + TLexer lex = new TLexer(input); + TokenRewriteStream tokens = new TokenRewriteStream(lex); + T parser = new T(tokens); + parser.startRule(); + + Then in the rules, you can execute + Token t,u; + ... + input.insertAfter(t, "text to put after t");} + input.insertAfter(u, "text after u");} + System.out.println(tokens.toString()); + + Actually, you have to cast the 'input' to a TokenRewriteStream. :( + + You can also have multiple "instruction streams" and get multiple + rewrites from a single pass over the input. Just name the instruction + streams and use that name again when printing the buffer. This could be + useful for generating a C file and also its header file--all from the + same buffer: + + tokens.insertAfter("pass1", t, "text to put after t");} + tokens.insertAfter("pass2", u, "text after u");} + System.out.println(tokens.toString("pass1")); + System.out.println(tokens.toString("pass2")); + + If you don't use named rewrite streams, a "default" stream is used as + the first example shows. + + + What index into rewrites List are we? + + + Token buffer index. + + + + Execute the rewrite operation by possibly adding to the buffer. + Return the index of the next token to operate on. + + + + + I'm going to try replacing range from x..y with (y-x)+1 ReplaceOp + instructions. + + + + + You may have multiple, named streams of rewrite operations. + I'm calling these things "programs." + Maps String (name) -> rewrite (List) + + + + Map String (program name) -> Integer index + + + + Rollback the instruction stream for a program so that + the indicated instruction (via instructionIndex) is no + longer in the stream. UNTESTED! + + + + Reset the program so that no instructions exist + + + We need to combine operations and report invalid operations (like + overlapping replaces that are not completed nested). Inserts to + same index need to be combined etc... Here are the cases: + + I.i.u I.j.v leave alone, nonoverlapping + I.i.u I.i.v combine: Iivu + + R.i-j.u R.x-y.v | i-j in x-y delete first R + R.i-j.u R.i-j.v delete first R + R.i-j.u R.x-y.v | x-y in i-j ERROR + R.i-j.u R.x-y.v | boundaries overlap ERROR + + Delete special case of replace (text==null): + D.i-j.u D.x-y.v | boundaries overlap combine to max(min)..max(right) + + I.i.u R.x-y.v | i in (x+1)-y delete I (since insert before + we're not deleting i) + I.i.u R.x-y.v | i not in (x+1)-y leave alone, nonoverlapping + R.x-y.v I.i.u | i in x-y ERROR + R.x-y.v I.x.u R.x-y.uv (combine, delete I) + R.x-y.v I.i.u | i not in x-y leave alone, nonoverlapping + + I.i.u = insert u before op @ index i + R.x-y.u = replace x-y indexed tokens with u + + First we need to examine replaces. For any replace op: + + 1. wipe out any insertions before op within that range. + 2. Drop any replace op before that is contained completely within + that range. + 3. Throw exception upon boundary overlap with any previous replace. + + Then we can deal with inserts: + + 1. for any inserts to same index, combine even if not adjacent. + 2. for any prior replace with same left boundary, combine this + insert with replace and delete this replace. + 3. throw exception if index in same range as previous replace + + Don't actually delete; make op null in list. Easier to walk list. + Later we can throw as we add to index -> op map. + + Note that I.2 R.2-2 will wipe out I.2 even though, technically, the + inserted stuff would be before the replace range. But, if you + add tokens in front of a method body '{' and then delete the method + body, I think the stuff before the '{' you added should disappear too. + + Return a map from token index to operation. + + + Get all operations before an index of a particular kind + + + + In an action, a lexer rule can set token to this SKIP_TOKEN and ANTLR + will avoid creating a token for this symbol and try to fetch another. + + + + imaginary tree navigation type; traverse "get child" link + + + imaginary tree navigation type; finish with a child list + + + + A generic tree implementation with no payload. You must subclass to + actually have any user data. ANTLR v3 uses a list of children approach + instead of the child-sibling approach in v2. A flat tree (a list) is + an empty node whose children represent the list. An empty, but + non-null node is called "nil". + + + + + Create a new node from an existing node does nothing for BaseTree + as there are no fields other than the children list, which cannot + be copied as the children are not considered part of this node. + + + + + Get the children internal List; note that if you directly mess with + the list, do so at your own risk. + + + + BaseTree doesn't track parent pointers. + + + BaseTree doesn't track child indexes. + + + Add t as child of this node. + + + Warning: if t has no children, but child does + and child isNil then this routine moves children to t via + t.children = child.children; i.e., without copying the array. + + + + Add all elements of kids list as children of this node + + + Insert child t at child position i (0..n-1) by shifting children + i+1..n-1 to the right one position. Set parent / indexes properly + but does NOT collapse nil-rooted t's that come in here like addChild. + + + + Delete children from start to stop and replace with t even if t is + a list (nil-root tree). num of children can increase or decrease. + For huge child lists, inserting children can force walking rest of + children to set their childindex; could be slow. + + + + Override in a subclass to change the impl of children list + + + Set the parent and child index values for all child of t + + + Walk upwards looking for ancestor with this token type. + + + Walk upwards and get first ancestor with this token type. + + + + Return a list of all ancestors of this node. The first node of + list is the root and the last is the parent of this node. + + + + Print out a whole tree not just a node + + + Override to say how a node (not a tree) should look as text + + + A TreeAdaptor that works with any Tree implementation. + + + + System.identityHashCode() is not always unique; we have to + track ourselves. That's ok, it's only for debugging, though it's + expensive: we have to create a hashtable with all tree nodes in it. + + + + + Create tree node that holds the start and stop tokens associated + with an error. + + + + If you specify your own kind of tree nodes, you will likely have to + override this method. CommonTree returns Token.INVALID_TOKEN_TYPE + if no token payload but you might have to set token type for diff + node type. + + You don't have to subclass CommonErrorNode; you will likely need to + subclass your own tree node class to avoid class cast exception. + + + + + This is generic in the sense that it will work with any kind of + tree (not just ITree interface). It invokes the adaptor routines + not the tree node routines to do the construction. + + + + + Add a child to the tree t. If child is a flat tree (a list), make all + in list children of t. Warning: if t has no children, but child does + and child isNil then you can decide it is ok to move children to t via + t.children = child.children; i.e., without copying the array. Just + make sure that this is consistent with have the user will build + ASTs. + + + + + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + old=^(nil a b c), new=r yields ^(r a b c) + old=^(a b c), new=r yields ^(r ^(a b c)) + + If newRoot is a nil-rooted single child tree, use the single + child as the new root node. + + old=^(nil a b c), new=^(nil r) yields ^(r a b c) + old=^(a b c), new=^(nil r) yields ^(r ^(a b c)) + + If oldRoot was null, it's ok, just return newRoot (even if isNil). + + old=null, new=r yields r + old=null, new=^(nil r) yields ^(nil r) + + Return newRoot. Throw an exception if newRoot is not a + simple node or nil root with a single child node--it must be a root + node. If newRoot is ^(nil x) return x as newRoot. + + Be advised that it's ok for newRoot to point at oldRoot's + children; i.e., you don't have to copy the list. We are + constructing these nodes so we should have this control for + efficiency. + + + + Transform ^(nil x) to x and nil to null + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + This is a variant of createToken where the new token is derived from + an actual real input token. Typically this is for converting '{' + tokens to BLOCK etc... You'll see + + r : lc='{' ID+ '}' -> ^(BLOCK[$lc] ID+) ; + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Duplicate a node. This is part of the factory; + override if you want another kind of node to be built. + + + + I could use reflection to prevent having to override this + but reflection is slow. + + + + + Track start/stop token for subtree root created for a rule. + Only works with Tree nodes. For rules that match nothing, + seems like this will yield start=i and stop=i-1 in a nil node. + Might be useful info so I'll not force to be i..i. + + + + A buffered stream of tree nodes. Nodes can be from a tree of ANY kind. + + This node stream sucks all nodes out of the tree specified in + the constructor during construction and makes pointers into + the tree using an array of Object pointers. The stream necessarily + includes pointers to DOWN and UP and EOF nodes. + + This stream knows how to mark/release for backtracking. + + This stream is most suitable for tree interpreters that need to + jump around a lot or for tree parsers requiring speed (at cost of memory). + There is some duplicated functionality here with UnBufferedTreeNodeStream + but just in bookkeeping, not tree walking etc... + + TARGET DEVELOPERS: + + This is the old CommonTreeNodeStream that buffered up entire node stream. + No need to implement really as new CommonTreeNodeStream is much better + and covers what we need. + + @see CommonTreeNodeStream + + + The complete mapping from stream index to tree node. + This buffer includes pointers to DOWN, UP, and EOF nodes. + It is built upon ctor invocation. The elements are type + Object as we don't what the trees look like. + + Load upon first need of the buffer so we can set token types + of interest for reverseIndexing. Slows us down a wee bit to + do all of the if p==-1 testing everywhere though. + + + Pull nodes from which tree? + + + IF this tree (root) was created from a token stream, track it. + + + What tree adaptor was used to build these trees + + + Reuse same DOWN, UP navigation nodes unless this is true + + + The index into the nodes list of the current node (next node + to consume). If -1, nodes array not filled yet. + + + Track the last mark() call result value for use in rewind(). + + + Stack of indexes used for push/pop calls + + + Walk tree with depth-first-search and fill nodes buffer. + Don't do DOWN, UP nodes if its a list (t is isNil). + + + What is the stream index for node? 0..n-1 + Return -1 if node not found. + + + As we flatten the tree, we use UP, DOWN nodes to represent + the tree structure. When debugging we need unique nodes + so instantiate new ones when uniqueNavigationNodes is true. + + + Look backwards k nodes + + + + Make stream jump to a new location, saving old location. + Switch back with pop(). + + + + + Seek back to previous index saved during last push() call. + Return top of stack (return index). + + + + Used for testing, just return the token type stream + + + Debugging + + + A node representing erroneous token range in token stream + + + + A tree node that is wrapper for a Token object. After 3.0 release + while building tree rewrite stuff, it became clear that computing + parent and child index is very difficult and cumbersome. Better to + spend the space in every tree node. If you don't want these extra + fields, it's easy to cut them out in your own BaseTree subclass. + + + + A single token is the payload + + + + What token indexes bracket all tokens associated with this node + and below? + + + + Who is the parent node of this node; if null, implies node is root + + + What index is this node in the child list? Range: 0..n-1 + + + + For every node in this subtree, make sure it's start/stop token's + are set. Walk depth first, visit bottom up. Only updates nodes + with at least one token index < 0. + + + + + A TreeAdaptor that works with any Tree implementation. It provides + really just factory methods; all the work is done by BaseTreeAdaptor. + If you would like to have different tokens created than ClassicToken + objects, you need to override this and then set the parser tree adaptor to + use your subclass. + + + + To get your parser to build nodes of a different type, override + create(Token), errorNode(), and to be safe, YourTreeClass.dupNode(). + dupNode is called to duplicate nodes during rewrite operations. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + This is a variant of createToken where the new token is derived from + an actual real input token. Typically this is for converting '{' + tokens to BLOCK etc... You'll see + + r : lc='{' ID+ '}' -> ^(BLOCK[$lc] ID+) ; + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + What is the Token associated with this node? If + you are not using CommonTree, then you must + override this in your own adaptor. + + + + Pull nodes from which tree? + + + If this tree (root) was created from a token stream, track it. + + + What tree adaptor was used to build these trees + + + The tree iterator we are using + + + Stack of indexes used for push/pop calls + + + Tree (nil A B C) trees like flat A B C streams + + + Tracks tree depth. Level=0 means we're at root node level. + + + Tracks the last node before the start of {@link #data} which contains + position information to provide information for error reporting. This is + tracked in addition to {@link #prevElement} which may or may not contain + position information. + + @see #hasPositionInformation + @see RecognitionException#extractInformationFromTreeNodeStream + + + Make stream jump to a new location, saving old location. + Switch back with pop(). + + + Seek back to previous index saved during last push() call. + Return top of stack (return index). + + + Returns an element containing position information. If {@code allowApproximateLocation} is {@code false}, then + this method will return the {@code LT(1)} element if it contains position information, and otherwise return {@code null}. + If {@code allowApproximateLocation} is {@code true}, then this method will return the last known element containing position information. + + @see #hasPositionInformation + + + For debugging; destructive: moves tree iterator to end. + + + A utility class to generate DOT diagrams (graphviz) from + arbitrary trees. You can pass in your own templates and + can pass in any kind of tree or use Tree interface method. + I wanted this separator so that you don't have to include + ST just to use the org.antlr.runtime.tree.* package. + This is a set of non-static methods so you can subclass + to override. For example, here is an invocation: + + CharStream input = new ANTLRInputStream(System.in); + TLexer lex = new TLexer(input); + CommonTokenStream tokens = new CommonTokenStream(lex); + TParser parser = new TParser(tokens); + TParser.e_return r = parser.e(); + Tree t = (Tree)r.tree; + System.out.println(t.toStringTree()); + DOTTreeGenerator gen = new DOTTreeGenerator(); + StringTemplate st = gen.toDOT(t); + System.out.println(st); + + + Track node to number mapping so we can get proper node name back + + + Track node number so we can get unique node names + + + Generate DOT (graphviz) for a whole tree not just a node. + For example, 3+4*5 should generate: + + digraph { + node [shape=plaintext, fixedsize=true, fontsize=11, fontname="Courier", + width=.4, height=.2]; + edge [arrowsize=.7] + "+"->3 + "+"->"*" + "*"->4 + "*"->5 + } + + Takes a Tree interface object. + + + + @author Sam Harwell + + + Returns an element containing concrete information about the current + position in the stream. + + @param allowApproximateLocation if {@code false}, this method returns + {@code null} if an element containing exact information about the current + position is not available + + + Determines if the specified {@code element} contains concrete position + information. + + @param element the element to check + @return {@code true} if {@code element} contains concrete position + information, otherwise {@code false} + + + + What does a tree look like? ANTLR has a number of support classes + such as CommonTreeNodeStream that work on these kinds of trees. You + don't have to make your trees implement this interface, but if you do, + you'll be able to use more support code. + + + + NOTE: When constructing trees, ANTLR can build any kind of tree; it can + even use Token objects as trees if you add a child list to your tokens. + + This is a tree node without any payload; just navigation and factory stuff. + + + + Is there is a node above with token type ttype? + + + Walk upwards and get first ancestor with this token type. + + + + Return a list of all ancestors of this node. The first node of + list is the root and the last is the parent of this node. + + + + This node is what child index? 0..n-1 + + + Set the parent and child index values for all children + + + + Add t as a child to this node. If t is null, do nothing. If t + is nil, add all children of t to this' children. + + + + Set ith child (0..n-1) to t; t must be non-null and non-nil node + + + + Delete children from start to stop and replace with t even if t is + a list (nil-root tree). num of children can increase or decrease. + For huge child lists, inserting children can force walking rest of + children to set their childindex; could be slow. + + + + + Indicates the node is a nil node but may still have children, meaning + the tree is a flat list. + + + + + What is the smallest token index (indexing from 0) for this node + and its children? + + + + + What is the largest token index (indexing from 0) for this node + and its children? + + + + Return a token type; needed for tree parsing + + + In case we don't have a token payload, what is the line for errors? + + + + How to create and navigate trees. Rather than have a separate factory + and adaptor, I've merged them. Makes sense to encapsulate. + + + + This takes the place of the tree construction code generated in the + generated code in 2.x and the ASTFactory. + + I do not need to know the type of a tree at all so they are all + generic Objects. This may increase the amount of typecasting needed. :( + + + + + Create a tree node from Token object; for CommonTree type trees, + then the token just becomes the payload. This is the most + common create call. + + + + Override if you want another kind of node to be built. + + + + + Create a new node derived from a token, with a new token type. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG[$tokenLabel]. + + + + This should invoke createToken(Token). + + + + + Same as create(tokenType,fromToken) except set the text too. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG[$tokenLabel, "IMAG"]. + + + + This should invoke createToken(Token). + + + + + Same as create(fromToken) except set the text too. + This is invoked when the text terminal option is set, as in + IMAG<text='IMAG'>. + + + + This should invoke createToken(Token). + + + + + Create a new node derived from a token, with a new token type. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG["IMAG"]. + + + + This should invoke createToken(int,String). + + + + Duplicate a single tree node. + Override if you want another kind of node to be built. + + + Duplicate tree recursively, using dupNode() for each node + + + + Return a nil node (an empty but non-null node) that can hold + a list of element as the children. If you want a flat tree (a list) + use "t=adaptor.nil(); t.addChild(x); t.addChild(y);" + + + + + Return a tree node representing an error. This node records the + tokens consumed during error recovery. The start token indicates the + input symbol at which the error was detected. The stop token indicates + the last symbol consumed during recovery. + + + + You must specify the input stream so that the erroneous text can + be packaged up in the error node. The exception could be useful + to some applications; default implementation stores ptr to it in + the CommonErrorNode. + + This only makes sense during token parsing, not tree parsing. + Tree parsing should happen only when parsing and tree construction + succeed. + + + + Is tree considered a nil node used to make lists of child nodes? + + + + Add a child to the tree t. If child is a flat tree (a list), make all + in list children of t. Warning: if t has no children, but child does + and child isNil then you can decide it is ok to move children to t via + t.children = child.children; i.e., without copying the array. Just + make sure that this is consistent with have the user will build + ASTs. Do nothing if t or child is null. + + + + + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + old=^(nil a b c), new=r yields ^(r a b c) + old=^(a b c), new=r yields ^(r ^(a b c)) + + If newRoot is a nil-rooted single child tree, use the single + child as the new root node. + + old=^(nil a b c), new=^(nil r) yields ^(r a b c) + old=^(a b c), new=^(nil r) yields ^(r ^(a b c)) + + If oldRoot was null, it's ok, just return newRoot (even if isNil). + + old=null, new=r yields r + old=null, new=^(nil r) yields ^(nil r) + + Return newRoot. Throw an exception if newRoot is not a + simple node or nil root with a single child node--it must be a root + node. If newRoot is ^(nil x) return x as newRoot. + + Be advised that it's ok for newRoot to point at oldRoot's + children; i.e., you don't have to copy the list. We are + constructing these nodes so we should have this control for + efficiency. + + + + + Given the root of the subtree created for this rule, post process + it to do any simplifications or whatever you want. A required + behavior is to convert ^(nil singleSubtree) to singleSubtree + as the setting of start/stop indexes relies on a single non-nil root + for non-flat trees. + + + + Flat trees such as for lists like "idlist : ID+ ;" are left alone + unless there is only one ID. For a list, the start/stop indexes + are set in the nil node. + + This method is executed after all rule tree construction and right + before setTokenBoundaries(). + + + + For identifying trees. + + + How to identify nodes so we can say "add node to a prior node"? + Even becomeRoot is an issue. Use System.identityHashCode(node) + usually. + + + + + Create a node for newRoot make it the root of oldRoot. + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + Return node created for newRoot. + + + + Be advised: when debugging ASTs, the DebugTreeAdaptor manually + calls create(Token child) and then plain becomeRoot(node, node) + because it needs to trap calls to create, but it can't since it delegates + to not inherits from the TreeAdaptor. + + + + For tree parsing, I need to know the token type of a node + + + Node constructors can set the type of a node + + + Node constructors can set the text of a node + + + + Return the token object from which this node was created. + Currently used only for printing an error message. + The error display routine in BaseRecognizer needs to + display where the input the error occurred. If your + tree of limitation does not store information that can + lead you to the token, you can create a token filled with + the appropriate information and pass that back. See + BaseRecognizer.getErrorMessage(). + + + + + Where are the bounds in the input token stream for this node and + all children? Each rule that creates AST nodes will call this + method right before returning. Flat trees (i.e., lists) will + still usually have a nil root node just to hold the children list. + That node would contain the start/stop indexes then. + + + + Get the token start index for this subtree; return -1 if no such index + + + Get the token stop index for this subtree; return -1 if no such index + + + Get a child 0..n-1 node + + + Set ith child (0..n-1) to t; t must be non-null and non-nil node + + + Remove ith child and shift children down from right. + + + How many children? If 0, then this is a leaf node + + + + Who is the parent node of this node; if null, implies node is root. + If your node type doesn't handle this, it's ok but the tree rewrites + in tree parsers need this functionality. + + + + + What index is this node in the child list? Range: 0..n-1 + If your node type doesn't handle this, it's ok but the tree rewrites + in tree parsers need this functionality. + + + + + Replace from start to stop child index of parent with t, which might + be a list. Number of children may be different after this call. + + + + If parent is null, don't do anything; must be at root of overall tree. + Can't replace whatever points to the parent externally. Do nothing. + + + + A stream of tree nodes, accessing nodes from a tree of some kind + + + + Get a tree node at an absolute index i; 0..n-1. + If you don't want to buffer up nodes, then this method makes no + sense for you. + + + + + Get tree node at current input pointer + ahead where + ==1 is next node. <0 indicates nodes in the past. So + {@code LT(-1)} is previous node, but implementations are not required to + provide results for < -1. {@code LT(0)} is undefined. For + <=n, return . Return for {@code LT(0)} + and any index that results in an absolute address that is negative. + + + + This is analogous to , but this returns a tree node + instead of a . Makes code generation identical for both + parser and tree grammars. + + + + + Where is this stream pulling nodes from? This is not the name, but + the object that provides node objects. + + + + + If the tree associated with this stream was created from a + {@link TokenStream}, you can specify it here. Used to do rule + {@code $text} attribute in tree parser. Optional unless you use tree + parser rule {@code $text} attribute or {@code output=template} and + {@code rewrite=true} options. + + + + + What adaptor can tell me how to interpret/navigate nodes and + trees. E.g., get text of a node. + + + + + As we flatten the tree, we use {@link Token#UP}, {@link Token#DOWN} nodes + to represent the tree structure. When debugging we need unique nodes so + we have to instantiate new ones. When doing normal tree parsing, it's + slow and a waste of memory to create unique navigation nodes. Default + should be {@code false}. + + + + + Return the text of all nodes from {@code start} to {@code stop}, + inclusive. If the stream does not buffer all the nodes then it can still + walk recursively from start until stop. You can always return + {@code null} or {@code ""} too, but users should not access + {@code $ruleLabel.text} in an action of course in that case. + + + + + Replace children of {@code parent} from index {@code startChildIndex} to + {@code stopChildIndex} with {@code t}, which might be a list. Number of + children may be different after this call. The stream is notified because + it is walking the tree and might need to know you are monkeying with the + underlying tree. Also, it might be able to modify the node stream to + avoid restreaming for future phases. + + + + If {@code parent} is {@code null}, don't do anything; must be at root of + overall tree. Can't replace whatever points to the parent externally. Do + nothing. + + + + + How to execute code for node t when a visitor visits node t. Execute + pre() before visiting children and execute post() after visiting children. + + + + + Execute an action before visiting children of t. Return t or + a rewritten t. It is up to the visitor to decide what to do + with the return value. Children of returned value will be + visited if using TreeVisitor.visit(). + + + + + Execute an action after visiting children of t. Return t or + a rewritten t. It is up to the visitor to decide what to do + with the return value. + + + + + A record of the rules used to match a token sequence. The tokens + end up as the leaves of this tree and rule nodes are the interior nodes. + This really adds no functionality, it is just an alias for CommonTree + that is more meaningful (specific) and holds a String to display for a node. + + + + + Emit a token and all hidden nodes before. EOF node holds all + hidden tokens after last real token. + + + + + Print out the leaves of this tree, which means printing original + input back out. + + + + + Base class for all exceptions thrown during AST rewrite construction. + This signifies a case where the cardinality of two or more elements + in a subrule are different: (ID INT)+ where |ID|!=|INT| + + + + No elements within a (...)+ in a rewrite rule + + + Ref to ID or expr but no tokens in ID stream or subtrees in expr stream + + + + A generic list of elements tracked in an alternative to be used in + a -> rewrite rule. We need to subclass to fill in the next() method, + which returns either an AST node wrapped around a token payload or + an existing subtree. + + + + Once you start next()ing, do not try to add more elements. It will + break the cursor tracking I believe. + + TODO: add mechanism to detect/puke on modification after reading from stream + + + + + + + + Cursor 0..n-1. If singleElement!=null, cursor is 0 until you next(), + which bumps it to 1 meaning no more elements. + + + + Track single elements w/o creating a list. Upon 2nd add, alloc list + + + The list of tokens or subtrees we are tracking + + + Once a node / subtree has been used in a stream, it must be dup'd + from then on. Streams are reset after subrules so that the streams + can be reused in future subrules. So, reset must set a dirty bit. + If dirty, then next() always returns a dup. + + + The element or stream description; usually has name of the token or + rule reference that this list tracks. Can include rulename too, but + the exception would track that info. + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + + Reset the condition of this stream so that it appears we have + not consumed any of its elements. Elements themselves are untouched. + Once we reset the stream, any future use will need duplicates. Set + the dirty bit. + + + + + Return the next element in the stream. If out of elements, throw + an exception unless size()==1. If size is 1, then return elements[0]. + Return a duplicate node/subtree if stream is out of elements and + size==1. If we've already used the element, dup (dirty bit set). + + + + + Do the work of getting the next element, making sure that it's + a tree node or subtree. Deal with the optimization of single- + element list versus list of size > 1. Throw an exception + if the stream is empty or we're out of elements and size>1. + protected so you can override in a subclass if necessary. + + + + + When constructing trees, sometimes we need to dup a token or AST + subtree. Dup'ing a token means just creating another AST node + around it. For trees, you must call the adaptor.dupTree() unless + the element is for a tree root; then it must be a node dup. + + + + + Ensure stream emits trees; tokens must be converted to AST nodes. + AST nodes can be passed through unmolested. + + + + + Queues up nodes matched on left side of -> in a tree parser. This is + the analog of RewriteRuleTokenStream for normal parsers. + + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + + Treat next element as a single node even if it's a subtree. + This is used instead of next() when the result has to be a + tree root node. Also prevents us from duplicating recently-added + children; e.g., ^(type ID)+ adds ID to type and then 2nd iteration + must dup the type node, but ID has been added. + + + + Referencing a rule result twice is ok; dup entire tree as + we can't be adding trees as root; e.g., expr expr. + + Hideous code duplication here with super.next(). Can't think of + a proper way to refactor. This needs to always call dup node + and super.next() doesn't know which to call: dup node or dup tree. + + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + Get next token from stream and make a node for it + + + + Don't convert to a tree unless they explicitly call nextTree. + This way we can do hetero tree nodes in rewrite. + + + + Return a node stream from a doubly-linked tree whose nodes + know what child index they are. No remove() is supported. + + Emit navigation nodes (DOWN, UP, and EOF) to let show tree structure. + + + If we emit UP/DOWN nodes, we need to spit out multiple nodes per + next() call. + + + + A parser for a stream of tree nodes. "tree grammars" result in a subclass + of this. All the error reporting and recovery is shared with Parser via + the BaseRecognizer superclass. + + + + Set the input stream + + + + Match '.' in tree parser has special meaning. Skip node or + entire tree if node has children. If children, scan until + corresponding UP node. + + + + + We have DOWN/UP nodes in the stream that have no line info; override. + plus we want to alter the exception type. Don't try to recover + from tree parser errors inline... + + + + + Prefix error message with the grammar name because message is + always intended for the programmer because the parser built + the input tree not the user. + + + + + Tree parsers parse nodes they usually have a token object as + payload. Set the exception token and do the default behavior. + + + + The tree pattern to lex like "(A B C)" + + + Index into input string + + + Current char + + + How long is the pattern in char? + + + Set when token type is ID or ARG (name mimics Java's StreamTokenizer) + + + Override this if you need transformation tracing to go somewhere + other than stdout or if you're not using ITree-derived trees. + + + + This is identical to the ParserRuleReturnScope except that + the start property is a tree nodes not Token object + when you are parsing trees. + + + + Gets the first node or root node of tree matched for this rule. + + + Do a depth first walk of a tree, applying pre() and post() actions as we go. + + + + Visit every node in tree t and trigger an action for each node + before/after having visited all of its children. Bottom up walk. + Execute both actions even if t has no children. Ignore return + results from transforming children since they will have altered + the child list of this node (their parent). Return result of + applying post action to this node. + + + + + Build and navigate trees with this object. Must know about the names + of tokens so you have to pass in a map or array of token names (from which + this class can build the map). I.e., Token DECL means nothing unless the + class can translate it to a token type. + + + + In order to create nodes and navigate, this class needs a TreeAdaptor. + + This class can build a token type -> node index for repeated use or for + iterating over the various nodes with a particular type. + + This class works in conjunction with the TreeAdaptor rather than moving + all this functionality into the adaptor. An adaptor helps build and + navigate trees using methods. This class helps you do it with string + patterns like "(A B C)". You can create a tree from that pattern or + match subtrees against it. + + + + + When using %label:TOKENNAME in a tree for parse(), we must + track the label. + + + + This adaptor creates TreePattern objects for use during scan() + + + + Compute a Map<String, Integer> that is an inverted index of + tokenNames (which maps int token types to names). + + + + Using the map of token names to token types, return the type. + + + + Walk the entire tree and make a node name to nodes mapping. + For now, use recursion but later nonrecursive version may be + more efficient. Returns Map<Integer, List> where the List is + of your AST node type. The Integer is the token type of the node. + + + + TODO: save this index so that find and visit are faster + + + + Do the work for index + + + Return a List of tree nodes with token type ttype + + + Return a List of subtrees matching pattern. + + + + Visit every ttype node in t, invoking the visitor. This is a quicker + version of the general visit(t, pattern) method. The labels arg + of the visitor action method is never set (it's null) since using + a token type rather than a pattern doesn't let us set a label. + + + + Do the recursive work for visit + + + + For all subtrees that match the pattern, execute the visit action. + The implementation uses the root node of the pattern in combination + with visit(t, ttype, visitor) so nil-rooted patterns are not allowed. + Patterns with wildcard roots are also not allowed. + + + + + Given a pattern like (ASSIGN %lhs:ID %rhs:.) with optional labels + on the various nodes and '.' (dot) as the node/subtree wildcard, + return true if the pattern matches and fill the labels Map with + the labels pointing at the appropriate nodes. Return false if + the pattern is malformed or the tree does not match. + + + + If a node specifies a text arg in pattern, then that must match + for that node in t. + + TODO: what's a better way to indicate bad pattern? Exceptions are a hassle + + + + + Do the work for parse. Check to see if the t2 pattern fits the + structure and token types in t1. Check text if the pattern has + text arguments on nodes. Fill labels map with pointers to nodes + in tree matched against nodes in pattern with labels. + + + + + Create a tree or node from the indicated tree pattern that closely + follows ANTLR tree grammar tree element syntax: + + (root child1 ... child2). + + + + You can also just pass in a node: ID + + Any node can have a text argument: ID[foo] + (notice there are no quotes around foo--it's clear it's a string). + + nil is a special name meaning "give me a nil node". Useful for + making lists: (nil A B C) is a list of A B C. + + + + + Compare t1 and t2; return true if token types/text, structure match exactly. + The trees are examined in their entirety so that (A B) does not match + (A B C) nor (A (B C)). + + + + TODO: allow them to pass in a comparator + TODO: have a version that is nonstatic so it can use instance adaptor + + I cannot rely on the tree node's equals() implementation as I make + no constraints at all on the node types nor interface etc... + + + + + Compare type, structure, and text of two trees, assuming adaptor in + this instance of a TreeWizard. + + + + A token stream that pulls tokens from the code source on-demand and + without tracking a complete buffer of the tokens. This stream buffers + the minimum number of tokens possible. It's the same as + OnDemandTokenStream except that OnDemandTokenStream buffers all tokens. + + You can't use this stream if you pass whitespace or other off-channel + tokens to the parser. The stream can't ignore off-channel tokens. + + You can only look backwards 1 token: LT(-1). + + Use this when you need to read from a socket or other infinite stream. + + @see BufferedTokenStream + @see CommonTokenStream + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + An extra token while parsing a TokenStream + + + diff --git a/packages/Antlr3.Runtime.3.5.1/lib/netstandard1.1/Antlr3.Runtime.dll b/packages/Antlr3.Runtime.3.5.1/lib/netstandard1.1/Antlr3.Runtime.dll new file mode 100644 index 000000000..1bab12edd Binary files /dev/null and b/packages/Antlr3.Runtime.3.5.1/lib/netstandard1.1/Antlr3.Runtime.dll differ diff --git a/packages/Antlr3.Runtime.3.5.1/lib/netstandard1.1/Antlr3.Runtime.xml b/packages/Antlr3.Runtime.3.5.1/lib/netstandard1.1/Antlr3.Runtime.xml new file mode 100644 index 000000000..31d731fa3 --- /dev/null +++ b/packages/Antlr3.Runtime.3.5.1/lib/netstandard1.1/Antlr3.Runtime.xml @@ -0,0 +1,3220 @@ + + + + Antlr3.Runtime + + + + + A kind of ReaderStream that pulls from an InputStream. + Useful for reading from stdin and specifying file encodings etc... + + + + + Vacuum all input from a Reader and then treat it like a StringStream. + Manage the buffer manually to avoid unnecessary data copying. + + + + If you need encoding, use ANTLRInputStream. + + + + + A pretty quick CharStream that pulls all data from an array + directly. Every method call counts in the lexer. Java's + strings aren't very good so I'm avoiding. + + + + The data being scanned + + + How many characters are actually in the buffer + + + 0..n-1 index into string of next char + + + line number 1..n within the input + + + The index of the character relative to the beginning of the line 0..n-1 + + + tracks how deep mark() calls are nested + + + + A list of CharStreamState objects that tracks the stream state + values line, charPositionInLine, and p that can change as you + move through the input stream. Indexed from 1..markDepth. + A null is kept @ index 0. Create upon first call to mark(). + + + + Track the last mark() call result value for use in rewind(). + + + What is name or source of this char stream? + + + Copy data in string to a local char array + + + This is the preferred constructor as no data is copied + + + + Return the current input symbol index 0..n where n indicates the + last symbol has been read. The index is the index of char to + be returned from LA(1). + + + + + Reset the stream so that it's in the same state it was + when the object was created *except* the data array is not + touched. + + + + + consume() ahead until p==index; can't just set p=index as we must + update line and charPositionInLine. + + + + + A generic recognizer that can handle recognizers generated from + lexer, parser, and tree grammars. This is all the parsing + support code essentially; most of it is error recovery stuff and + backtracking. + + + + + State of a lexer, parser, or tree parser are collected into a state + object so the state can be shared. This sharing is needed to + have one grammar import others and share same error variables + and other state variables. It's a kind of explicit multiple + inheritance via delegation of methods and shared state. + + + + reset the parser's state; subclasses must rewinds the input stream + + + + Match current input symbol against ttype. Attempt + single token insertion or deletion error recovery. If + that fails, throw MismatchedTokenException. + + + + To turn off single token insertion or deletion error + recovery, override recoverFromMismatchedToken() and have it + throw an exception. See TreeParser.recoverFromMismatchedToken(). + This way any error in a rule will cause an exception and + immediate exit from rule. Rule would recover by resynchronizing + to the set of symbols that can follow rule ref. + + + + Match the wildcard: in a symbol + + + Report a recognition problem. + + + This method sets errorRecovery to indicate the parser is recovering + not parsing. Once in recovery mode, no errors are generated. + To get out of recovery mode, the parser must successfully match + a token (after a resync). So it will go: + + 1. error occurs + 2. enter recovery mode, report error + 3. consume until token found in resynch set + 4. try to resume parsing + 5. next match() will reset errorRecovery mode + + If you override, make sure to update syntaxErrors if you care about that. + + + + What error message should be generated for the various exception types? + + + Not very object-oriented code, but I like having all error message + generation within one method rather than spread among all of the + exception classes. This also makes it much easier for the exception + handling because the exception classes do not have to have pointers back + to this object to access utility routines and so on. Also, changing + the message for an exception type would be difficult because you + would have to subclassing exception, but then somehow get ANTLR + to make those kinds of exception objects instead of the default. + This looks weird, but trust me--it makes the most sense in terms + of flexibility. + + For grammar debugging, you will want to override this to add + more information such as the stack frame with + getRuleInvocationStack(e, this.getClass().getName()) and, + for no viable alts, the decision description and state etc... + + Override this to change the message generated for one or more + exception types. + + + + + Get number of recognition errors (lexer, parser, tree parser). Each + recognizer tracks its own number. So parser and lexer each have + separate count. Does not count the spurious errors found between + an error and next valid token match + + + + + + What is the error header, normally line/character position information? + + + + How should a token be displayed in an error message? The default + is to display just the text, but during development you might + want to have a lot of information spit out. Override in that case + to use t.ToString() (which, for CommonToken, dumps everything about + the token). This is better than forcing you to override a method in + your token objects because you don't have to go modify your lexer + so that it creates a new Java type. + + + + Override this method to change where error messages go + + + + Recover from an error found on the input stream. This is + for NoViableAlt and mismatched symbol exceptions. If you enable + single token insertion and deletion, this will usually not + handle mismatched symbol exceptions but there could be a mismatched + token that the match() routine could not recover from. + + + + + A hook to listen in on the token consumption during error recovery. + The DebugParser subclasses this to fire events to the listenter. + + + + + Compute the context-sensitive FOLLOW set for current rule. + This is set of token types that can follow a specific rule + reference given a specific call chain. You get the set of + viable tokens that can possibly come next (lookahead depth 1) + given the current call chain. Contrast this with the + definition of plain FOLLOW for rule r: + + + FOLLOW(r)={x | S=>*alpha r beta in G and x in FIRST(beta)} + + where x in T* and alpha, beta in V*; T is set of terminals and + V is the set of terminals and nonterminals. In other words, + FOLLOW(r) is the set of all tokens that can possibly follow + references to r in *any* sentential form (context). At + runtime, however, we know precisely which context applies as + we have the call chain. We may compute the exact (rather + than covering superset) set of following tokens. + + For example, consider grammar: + + stat : ID '=' expr ';' // FOLLOW(stat)=={EOF} + | "return" expr '.' + ; + expr : atom ('+' atom)* ; // FOLLOW(expr)=={';','.',')'} + atom : INT // FOLLOW(atom)=={'+',')',';','.'} + | '(' expr ')' + ; + + The FOLLOW sets are all inclusive whereas context-sensitive + FOLLOW sets are precisely what could follow a rule reference. + For input input "i=(3);", here is the derivation: + + stat => ID '=' expr ';' + => ID '=' atom ('+' atom)* ';' + => ID '=' '(' expr ')' ('+' atom)* ';' + => ID '=' '(' atom ')' ('+' atom)* ';' + => ID '=' '(' INT ')' ('+' atom)* ';' + => ID '=' '(' INT ')' ';' + + At the "3" token, you'd have a call chain of + + stat -> expr -> atom -> expr -> atom + + What can follow that specific nested ref to atom? Exactly ')' + as you can see by looking at the derivation of this specific + input. Contrast this with the FOLLOW(atom)={'+',')',';','.'}. + + You want the exact viable token set when recovering from a + token mismatch. Upon token mismatch, if LA(1) is member of + the viable next token set, then you know there is most likely + a missing token in the input stream. "Insert" one by just not + throwing an exception. + + + Attempt to recover from a single missing or extra token. + + EXTRA TOKEN + + LA(1) is not what we are looking for. If LA(2) has the right token, + however, then assume LA(1) is some extra spurious token. Delete it + and LA(2) as if we were doing a normal match(), which advances the + input. + + MISSING TOKEN + + If current token is consistent with what could come after + ttype then it is ok to "insert" the missing token, else throw + exception For example, Input "i=(3;" is clearly missing the + ')'. When the parser returns from the nested call to expr, it + will have call chain: + + stat -> expr -> atom + + and it will be trying to match the ')' at this point in the + derivation: + + => ID '=' '(' INT ')' ('+' atom)* ';' + ^ + match() will see that ';' doesn't match ')' and report a + mismatched token error. To recover, it sees that LA(1)==';' + is in the set of tokens that can follow the ')' token + reference in rule atom. It can assume that you forgot the ')'. + + + Not currently used + + + + Match needs to return the current input symbol, which gets put + into the label for the associated token ref; e.g., x=ID. Token + and tree parsers need to return different objects. Rather than test + for input stream type or change the IntStream interface, I use + a simple method to ask the recognizer to tell me what the current + input symbol is. + + + This is ignored for lexers. + + + Conjure up a missing token during error recovery. + + + The recognizer attempts to recover from single missing + symbols. But, actions might refer to that missing symbol. + For example, x=ID {f($x);}. The action clearly assumes + that there has been an identifier matched previously and that + $x points at that token. If that token is missing, but + the next token in the stream is what we want we assume that + this token is missing and we keep going. Because we + have to return some token to replace the missing token, + we have to conjure one up. This method gives the user control + over the tokens returned for missing tokens. Mostly, + you will want to create something special for identifier + tokens. For literals such as '{' and ',', the default + action in the parser or tree parser works. It simply creates + a CommonToken of the appropriate type. The text will be the token. + If you change what tokens must be created by the lexer, + override this method to create the appropriate tokens. + + + + Consume tokens until one matches the given token set + + + Push a rule's follow set using our own hardcoded stack + + + Return whether or not a backtracking attempt failed. + + + + Used to print out token names like ID during debugging and + error reporting. The generated parsers implement a method + that overrides this to point to their String[] tokenNames. + + + + + For debugging and other purposes, might want the grammar name. + Have ANTLR generate an implementation for this method. + + + + + A convenience method for use most often with template rewrites. + Convert a list of to a list of . + + + + + Given a rule number and a start token index number, return + MEMO_RULE_UNKNOWN if the rule has not parsed input starting from + start index. If this rule has parsed input starting from the + start index before, then return where the rule stopped parsing. + It returns the index of the last token matched by the rule. + + + + For now we use a hashtable and just the slow Object-based one. + Later, we can make a special one for ints and also one that + tosses out data after we commit past input position i. + + + + + Has this rule already parsed input at the current index in the + input stream? Return the stop token index or MEMO_RULE_UNKNOWN. + If we attempted but failed to parse properly before, return + MEMO_RULE_FAILED. + + + + This method has a side-effect: if we have seen this input for + this rule and successfully parsed before, then seek ahead to + 1 past the stop token matched for this rule last time. + + + + + Record whether or not this rule parsed the input at this position + successfully. Use a standard java hashtable for now. + + + + return how many rule/input-index pairs there are in total. + TODO: this includes synpreds. :( + + + + A stripped-down version of org.antlr.misc.BitSet that is just + good enough to handle runtime requirements such as FOLLOW sets + for automatic error recovery. + + + + + We will often need to do a mod operator (i mod nbits). Its + turns out that, for powers of two, this mod operation is + same as (i & (nbits-1)). Since mod is slow, we use a + precomputed mod mask to do the mod instead. + + + + The actual data bits + + + Construct a bitset of size one word (64 bits) + + + Construction from a static array of longs + + + Construction from a list of integers + + + Construct a bitset given the size + The size of the bitset in bits + + + return this | a in a new set + + + or this element into this set (grow as necessary to accommodate) + + + Grows the set to a larger number of bits. + element that must fit in set + + + Sets the size of a set. + how many words the new set should be + + + return how much space is being used by the bits array not how many actually have member bits on. + + + Is this contained within a? + + + Buffer all input tokens but do on-demand fetching of new tokens from + lexer. Useful when the parser or lexer has to set context/mode info before + proper lexing of future tokens. The ST template parser needs this, + for example, because it has to constantly flip back and forth between + inside/output templates. E.g., <names:{hi, <it>}> has to parse names + as part of an expression but "hi, <it>" as a nested template. + + You can't use this stream if you pass whitespace or other off-channel + tokens to the parser. The stream can't ignore off-channel tokens. + (UnbufferedTokenStream is the same way.) + + This is not a subclass of UnbufferedTokenStream because I don't want + to confuse small moving window of tokens it uses for the full buffer. + + + Record every single token pulled from the source so we can reproduce + chunks of it later. The buffer in LookaheadStream overlaps sometimes + as its moving window moves through the input. This list captures + everything so we can access complete input text. + + + Track the last mark() call result value for use in rewind(). + + + The index into the tokens list of the current token (next token + to consume). tokens[p] should be LT(1). p=-1 indicates need + to initialize with first token. The ctor doesn't get a token. + First call to LT(1) or whatever gets the first token and sets p=0; + + + + How deep have we gone? + + + + Move the input pointer to the next incoming token. The stream + must become active with LT(1) available. consume() simply + moves the input pointer so that LT(1) points at the next + input symbol. Consume at least one token. + + Walk past any token not on the channel the parser is listening to. + + + Make sure index i in tokens has a token. + + + add n elements to buffer + + + Given a start and stop index, return a List of all tokens in + the token type BitSet. Return null if no tokens were found. This + method looks at both on and off channel tokens. + + + + When walking ahead with cyclic DFA or for syntactic predicates, + we need to record the state of the input stream (char index, + line, etc...) so that we can rewind the state after scanning ahead. + + + This is the complete state of a stream. + + + Index into the char stream of next lookahead char + + + What line number is the scanner at before processing buffer[p]? + + + What char position 0..n-1 in line is scanner before processing buffer[p]? + + + + A Token object like we'd use in ANTLR 2.x; has an actual string created + and associated with this object. These objects are needed for imaginary + tree nodes that have payload objects. We need to create a Token object + that has a string; the tree node will point at this token. CommonToken + has indexes into a char stream and hence cannot be used to introduce + new strings. + + + + What token number is this from 0..n-1 tokens + + + + We need to be able to change the text once in a while. If + this is non-null, then getText should return this. Note that + start/stop are not affected by changing this. + + + + What token number is this from 0..n-1 tokens; < 0 implies invalid index + + + The char position into the input buffer where this token starts + + + The char position into the input buffer where this token stops + + + + The most common stream of tokens is one where every token is buffered up + and tokens are prefiltered for a certain channel (the parser will only + see these tokens and cannot change the filter channel number during the + parse). + + + TODO: how to access the full token stream? How to track all tokens matched per rule? + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + Reset this token stream by setting its token source. + + + Always leave p on an on-channel token. + + + Given a starting index, return the index of the first on-channel + token. + + + All debugging events that a recognizer can trigger. + + + I did not create a separate AST debugging interface as it would create + lots of extra classes and DebugParser has a dbg var defined, which makes + it hard to change to ASTDebugEventListener. I looked hard at this issue + and it is easier to understand as one monolithic event interface for all + possible events. Hopefully, adding ST debugging stuff won't be bad. Leave + for future. 4/26/2006. + + + + + The parser has just entered a rule. No decision has been made about + which alt is predicted. This is fired AFTER init actions have been + executed. Attributes are defined and available etc... + The grammarFileName allows composite grammars to jump around among + multiple grammar files. + + + + + Because rules can have lots of alternatives, it is very useful to + know which alt you are entering. This is 1..n for n alts. + + + + + This is the last thing executed before leaving a rule. It is + executed even if an exception is thrown. This is triggered after + error reporting and recovery have occurred (unless the exception is + not caught in this rule). This implies an "exitAlt" event. + The grammarFileName allows composite grammars to jump around among + multiple grammar files. + + + + Track entry into any (...) subrule other EBNF construct + + + + Every decision, fixed k or arbitrary, has an enter/exit event + so that a GUI can easily track what LT/consume events are + associated with prediction. You will see a single enter/exit + subrule but multiple enter/exit decision events, one for each + loop iteration. + + + + + An input token was consumed; matched by any kind of element. + Trigger after the token was matched by things like match(), matchAny(). + + + + + An off-channel input token was consumed. + Trigger after the token was matched by things like match(), matchAny(). + (unless of course the hidden token is first stuff in the input stream). + + + + + Somebody (anybody) looked ahead. Note that this actually gets + triggered by both LA and LT calls. The debugger will want to know + which Token object was examined. Like consumeToken, this indicates + what token was seen at that depth. A remote debugger cannot look + ahead into a file it doesn't have so LT events must pass the token + even if the info is redundant. + + + + + The parser is going to look arbitrarily ahead; mark this location, + the token stream's marker is sent in case you need it. + + + + + After an arbitrairly long lookahead as with a cyclic DFA (or with + any backtrack), this informs the debugger that stream should be + rewound to the position associated with marker. + + + + + Rewind to the input position of the last marker. + Used currently only after a cyclic DFA and just + before starting a sem/syn predicate to get the + input position back to the start of the decision. + Do not "pop" the marker off the state. mark(i) + and rewind(i) should balance still. + + + + + To watch a parser move through the grammar, the parser needs to + inform the debugger what line/charPos it is passing in the grammar. + For now, this does not know how to switch from one grammar to the + other and back for island grammars etc... + + + + This should also allow breakpoints because the debugger can stop + the parser whenever it hits this line/pos. + + + + + A recognition exception occurred such as NoViableAltException. I made + this a generic event so that I can alter the exception hierachy later + without having to alter all the debug objects. + + + + Upon error, the stack of enter rule/subrule must be properly unwound. + If no viable alt occurs it is within an enter/exit decision, which + also must be rewound. Even the rewind for each mark must be unwount. + In the Java target this is pretty easy using try/finally, if a bit + ugly in the generated code. The rewind is generated in DFA.predict() + actually so no code needs to be generated for that. For languages + w/o this "finally" feature (C++?), the target implementor will have + to build an event stack or something. + + Across a socket for remote debugging, only the RecognitionException + data fields are transmitted. The token object or whatever that + caused the problem was the last object referenced by LT. The + immediately preceding LT event should hold the unexpected Token or + char. + + Here is a sample event trace for grammar: + + b : C ({;}A|B) // {;} is there to prevent A|B becoming a set + | D + ; + + The sequence for this rule (with no viable alt in the subrule) for + input 'c c' (there are 3 tokens) is: + + commence + LT(1) + enterRule b + location 7 1 + enter decision 3 + LT(1) + exit decision 3 + enterAlt1 + location 7 5 + LT(1) + consumeToken [c/<4>,1:0] + location 7 7 + enterSubRule 2 + enter decision 2 + LT(1) + LT(1) + recognitionException NoViableAltException 2 1 2 + exit decision 2 + exitSubRule 2 + beginResync + LT(1) + consumeToken [c/<4>,1:1] + LT(1) + endResync + LT(-1) + exitRule b + terminate + + + + + Indicates the recognizer is about to consume tokens to resynchronize + the parser. Any consume events from here until the recovered event + are not part of the parse--they are dead tokens. + + + + + Indicates that the recognizer has finished consuming tokens in order + to resychronize. There may be multiple beginResync/endResync pairs + before the recognizer comes out of errorRecovery mode (in which + multiple errors are suppressed). This will be useful + in a gui where you want to probably grey out tokens that are consumed + but not matched to anything in grammar. Anything between + a beginResync/endResync pair was tossed out by the parser. + + + + A semantic predicate was evaluate with this result and action text + + + + Announce that parsing has begun. Not technically useful except for + sending events over a socket. A GUI for example will launch a thread + to connect and communicate with a remote parser. The thread will want + to notify the GUI when a connection is made. ANTLR parsers + trigger this upon entry to the first rule (the ruleLevel is used to + figure this out). + + + + + Parsing is over; successfully or not. Mostly useful for telling + remote debugging listeners that it's time to quit. When the rule + invocation level goes to zero at the end of a rule, we are done + parsing. + + + + + Input for a tree parser is an AST, but we know nothing for sure + about a node except its type and text (obtained from the adaptor). + This is the analog of the consumeToken method. Again, the ID is + the hashCode usually of the node so it only works if hashCode is + not implemented. If the type is UP or DOWN, then + the ID is not really meaningful as it's fixed--there is + just one UP node and one DOWN navigation node. + + + + + + + The tree parser lookedahead. If the type is UP or DOWN, + then the ID is not really meaningful as it's fixed--there is + just one UP node and one DOWN navigation node. + + + + + A nil was created (even nil nodes have a unique ID... + they are not "null" per se). As of 4/28/2006, this + seems to be uniquely triggered when starting a new subtree + such as when entering a subrule in automatic mode and when + building a tree in rewrite mode. + + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID is set. + + + + + Upon syntax error, recognizers bracket the error with an error node + if they are building ASTs. + + + + + + Announce a new node built from token elements such as type etc... + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID, type, text are + set. + + + + Announce a new node built from an existing token. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only node.ID and token.tokenIndex + are set. + + + + Make a node the new root of an existing root. See + + + Note: the newRootID parameter is possibly different + than the TreeAdaptor.becomeRoot() newRoot parameter. + In our case, it will always be the result of calling + TreeAdaptor.becomeRoot() and not root_n or whatever. + + The listener should assume that this event occurs + only when the current subrule (or rule) subtree is + being reset to newRootID. + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only IDs are set. + + + + + + Make childID a child of rootID. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only IDs are set. + + + + + + Set the token start/stop token index for a subtree root or node. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID is set. + + + + A DFA implemented as a set of transition tables. + + + Any state that has a semantic predicate edge is special; those states + are generated with if-then-else structures in a specialStateTransition() + which is generated by cyclicDFA template. + + There are at most 32767 states (16-bit signed short). + Could get away with byte sometimes but would have to generate different + types and the simulation code too. For a point of reference, the Java + lexer's Tokens rule DFA has 326 states roughly. + + + + Which recognizer encloses this DFA? Needed to check backtracking + + + + From the input stream, predict what alternative will succeed + using this DFA (representing the covering regular approximation + to the underlying CFL). Return an alternative number 1..n. Throw + an exception upon error. + + + + A hook for debugging interface + + + + Given a String that has a run-length-encoding of some unsigned shorts + like "\1\2\3\9", convert to short[] {2,9,9,9}. We do this to avoid + static short[] which generates so much init code that the class won't + compile. :( + + + + Hideous duplication of code, but I need different typed arrays out :( + + + The recognizer did not match anything for a (..)+ loop. + + + + A semantic predicate failed during validation. Validation of predicates + occurs when normally parsing the alternative just like matching a token. + Disambiguating predicate evaluation occurs when we hoist a predicate into + a prediction decision. + + + + AST rules have trees + + + Has a value potentially if output=AST; + + + AST rules have trees + + + Has a value potentially if output=AST; + + + A source of characters for an ANTLR lexer + + + + For infinite streams, you don't need this; primarily I'm providing + a useful interface for action code. Just make sure actions don't + use this on streams that don't support it. + + + + + Get the ith character of lookahead. This is the same usually as + LA(i). This will be used for labels in the generated + lexer code. I'd prefer to return a char here type-wise, but it's + probably better to be 32-bit clean and be consistent with LA. + + + + ANTLR tracks the line information automatically + Because this stream can rewind, we need to be able to reset the line + + + The index of the character relative to the beginning of the line 0..n-1 + + + + A simple stream of integers used when all I care about is the char + or token type sequence (such as interpretation). + + + + + Get int at current input pointer + i ahead where i=1 is next int. + Negative indexes are allowed. LA(-1) is previous token (token + just matched). LA(-i) where i is before first token should + yield -1, invalid char / EOF. + + + + + Tell the stream to start buffering if it hasn't already. Return + current input position, Index, or some other marker so that + when passed to rewind() you get back to the same spot. + rewind(mark()) should not affect the input cursor. The Lexer + track line/col info as well as input index so its markers are + not pure input indexes. Same for tree node streams. + + + + + Return the current input symbol index 0..n where n indicates the + last symbol has been read. The index is the symbol about to be + read not the most recently read symbol. + + + + + Reset the stream so that next call to index would return marker. + The marker will usually be Index but it doesn't have to be. It's + just a marker to indicate what state the stream was in. This is + essentially calling release() and seek(). If there are markers + created after this marker argument, this routine must unroll them + like a stack. Assume the state the stream was in when this marker + was created. + + + + + Rewind to the input position of the last marker. + Used currently only after a cyclic DFA and just + before starting a sem/syn predicate to get the + input position back to the start of the decision. + Do not "pop" the marker off the state. mark(i) + and rewind(i) should balance still. It is + like invoking rewind(last marker) but it should not "pop" + the marker off. It's like seek(last marker's input position). + + + + + You may want to commit to a backtrack but don't want to force the + stream to keep bookkeeping objects around for a marker that is + no longer necessary. This will have the same behavior as + rewind() except it releases resources without the backward seek. + This must throw away resources for all markers back to the marker + argument. So if you're nested 5 levels of mark(), and then release(2) + you have to release resources for depths 2..5. + + + + + Set the input cursor to the position indicated by index. This is + normally used to seek ahead in the input stream. No buffering is + required to do this unless you know your stream will use seek to + move backwards such as when backtracking. + + + + This is different from rewind in its multi-directional + requirement and in that its argument is strictly an input cursor (index). + + For char streams, seeking forward must update the stream state such + as line number. For seeking backwards, you will be presumably + backtracking using the mark/rewind mechanism that restores state and + so this method does not need to update state when seeking backwards. + + Currently, this method is only used for efficient backtracking using + memoization, but in the future it may be used for incremental parsing. + + The index is 0..n-1. A seek to position i means that LA(1) will + return the ith symbol. So, seeking to 0 means LA(1) will return the + first element in the stream. + + + + + Only makes sense for streams that buffer everything up probably, but + might be useful to display the entire stream or for testing. This + value includes a single EOF. + + + + + Where are you getting symbols from? Normally, implementations will + pass the buck all the way to the lexer who can ask its input stream + for the file name or whatever. + + + + + Rules can have start/stop info. + + + + + Gets the start element from the input stream + + + + + Gets the stop element from the input stream + + + + + Rules can have start/stop info. + + The element type of the input stream. + + + + Gets the start element from the input stream + + + + + Gets the stop element from the input stream + + + + Get the text of the token + + + The line number on which this token was matched; line=1..n + + + The index of the first character relative to the beginning of the line 0..n-1 + + + + An index from 0..n-1 of the token object in the input stream. + This must be valid in order to use the ANTLRWorks debugger. + + + + + From what character stream was this token created? You don't have to + implement but it's nice to know where a Token comes from if you have + include files etc... on the input. + + + + + A source of tokens must provide a sequence of tokens via nextToken() + and also must reveal it's source of characters; CommonToken's text is + computed from a CharStream; it only store indices into the char stream. + + + + Errors from the lexer are never passed to the parser. Either you want + to keep going or you do not upon token recognition error. If you do not + want to continue lexing then you do not want to continue parsing. Just + throw an exception not under RecognitionException and Java will naturally + toss you all the way out of the recognizers. If you want to continue + lexing then you should not throw an exception to the parser--it has already + requested a token. Keep lexing until you get a valid one. Just report + errors and keep going, looking for a valid token. + + + + + Return a Token object from your input stream (usually a CharStream). + Do not fail/return upon lexing error; keep chewing on the characters + until you get a good one; errors are not passed through to the parser. + + + + + Where are you getting tokens from? normally the implication will simply + ask lexers input stream. + + + + A stream of tokens accessing tokens from a TokenSource + + + Get Token at current input pointer + i ahead where i=1 is next Token. + i<0 indicates tokens in the past. So -1 is previous token and -2 is + two tokens ago. LT(0) is undefined. For i>=n, return Token.EOFToken. + Return null for LT(0) and any index that results in an absolute address + that is negative. + + + + How far ahead has the stream been asked to look? The return + value is a valid index from 0..n-1. + + + + + Get a token at an absolute index i; 0..n-1. This is really only + needed for profiling and debugging and token stream rewriting. + If you don't want to buffer up tokens, then this method makes no + sense for you. Naturally you can't use the rewrite stream feature. + I believe DebugTokenStream can easily be altered to not use + this method, removing the dependency. + + + + + Where is this stream pulling tokens from? This is not the name, but + the object that provides Token objects. + + + + + Return the text of all tokens from start to stop, inclusive. + If the stream does not buffer all the tokens then it can just + return "" or null; Users should not access $ruleLabel.text in + an action of course in that case. + + + + + Because the user is not required to use a token with an index stored + in it, we must provide a means for two token objects themselves to + indicate the start/end location. Most often this will just delegate + to the other toString(int,int). This is also parallel with + the TreeNodeStream.toString(Object,Object). + + + + + The most common stream of tokens is one where every token is buffered up + and tokens are prefiltered for a certain channel (the parser will only + see these tokens and cannot change the filter channel number during the + parse). + + + TODO: how to access the full token stream? How to track all tokens matched per rule? + + + + Record every single token pulled from the source so we can reproduce + chunks of it later. + + + + Map from token type to channel to override some Tokens' channel numbers + + + Set of token types; discard any tokens with this type + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + By default, track all incoming tokens + + + Track the last mark() call result value for use in rewind(). + + + + The index into the tokens list of the current token (next token + to consume). p==-1 indicates that the tokens list is empty + + + + + How deep have we gone? + + + + Reset this token stream by setting its token source. + + + + Load all tokens from the token source and put in tokens. + This is done upon first LT request because you might want to + set some token type / channel overrides before filling buffer. + + + + + Move the input pointer to the next incoming token. The stream + must become active with LT(1) available. consume() simply + moves the input pointer so that LT(1) points at the next + input symbol. Consume at least one token. + + + + Walk past any token not on the channel the parser is listening to. + + + + Given a starting index, return the index of the first on-channel token. + + + + A simple filter mechanism whereby you can tell this token stream + to force all tokens of type ttype to be on channel. For example, + when interpreting, we cannot exec actions so we need to tell + the stream to force all WS and NEWLINE to be a different, ignored + channel. + + + + + Given a start and stop index, return a List of all tokens in + the token type BitSet. Return null if no tokens were found. This + method looks at both on and off channel tokens. + + + + + Get the ith token from the current position 1..n where k=1 is the + first symbol of lookahead. + + + + Look backwards k tokens on-channel tokens + + + + Return absolute token i; ignore which channel the tokens are on; + that is, count all tokens not just on-channel tokens. + + + + + A lexer is recognizer that draws input symbols from a character stream. + lexer grammars result in a subclass of this object. A Lexer object + uses simplified match() and error recovery mechanisms in the interest + of speed. + + + + Where is the lexer drawing characters from? + + + + Gets or sets the text matched so far for the current token or any text override. + + + Setting this value replaces any previously set value, and overrides the original text. + + + + Return a token from this source; i.e., match a token on the char stream. + + + Returns the EOF token (default), if you need + to return a custom token instead override this method. + + + + Instruct the lexer to skip creating a token for current lexer rule + and look for another token. nextToken() knows to keep looking when + a lexer rule finishes with token set to SKIP_TOKEN. Recall that + if token==null at end of any token rule, it creates one for you + and emits it. + + + + This is the lexer entry point that sets instance var 'token' + + + + Currently does not support multiple emits per nextToken invocation + for efficiency reasons. Subclass and override this method and + nextToken (to push tokens into a list and pull from that list rather + than a single variable as this implementation does). + + + + + The standard method called to automatically emit a token at the + outermost lexical rule. The token object should point into the + char buffer start..stop. If there is a text override in 'text', + use that to set the token's text. Override this method to emit + custom Token objects. + + + + If you are building trees, then you should also override + Parser or TreeParser.getMissingSymbol(). + + + + What is the index of the current character of lookahead? + + + + Lexers can normally match any char in it's vocabulary after matching + a token, so do the easy thing and just kill a character and hope + it all works out. You can instead use the rule invocation stack + to do sophisticated error recovery if you are in a fragment rule. + + + + A queue that can dequeue and get(i) in O(1) and grow arbitrarily large. + A linked list is fast at dequeue but slow at get(i). An array is + the reverse. This is O(1) for both operations. + + List grows until you dequeue last element at end of buffer. Then + it resets to start filling at 0 again. If adds/removes are balanced, the + buffer will not grow too large. + + No iterator stuff as that's not how we'll use it. + + + dynamically-sized buffer of elements + + + index of next element to fill + + + + How deep have we gone? + + + + + Return element {@code i} elements ahead of current element. {@code i==0} + gets current element. This is not an absolute index into {@link #data} + since {@code p} defines the start of the real list. + + + + Get and remove first element in queue + + + Return string of current buffer contents; non-destructive + + + + A lookahead queue that knows how to mark/release locations in the buffer for + backtracking purposes. Any markers force the {@link FastQueue} superclass to + keep all elements until no more markers; then can reset to avoid growing a + huge buffer. + + + + Absolute token index. It's the index of the symbol about to be + read via {@code LT(1)}. Goes from 0 to numtokens. + + + This is the {@code LT(-1)} element for the first element in {@link #data}. + + + Track object returned by nextElement upon end of stream; + Return it later when they ask for LT passed end of input. + + + Track the last mark() call result value for use in rewind(). + + + tracks how deep mark() calls are nested + + + + Implement nextElement to supply a stream of elements to this + lookahead buffer. Return EOF upon end of the stream we're pulling from. + + + + + Get and remove first element in queue; override + {@link FastQueue#remove()}; it's the same, just checks for backtracking. + + + + Make sure we have at least one element to remove, even if EOF + + + + Make sure we have 'need' elements from current position p. Last valid + p index is data.size()-1. p+need-1 is the data index 'need' elements + ahead. If we need 1 element, (p+1-1)==p must be < data.size(). + + + + add n elements to buffer + + + Size of entire stream is unknown; we only know buffer size from FastQueue + + + + Seek to a 0-indexed absolute token index. Normally used to seek backwards + in the buffer. Does not force loading of nodes. + + + To preserve backward compatibility, this method allows seeking past the + end of the currently buffered data. In this case, the input pointer will + be moved but the data will only actually be loaded upon the next call to + {@link #consume} or {@link #LT} for {@code k>0}. + + + + A mismatched char or Token or tree node + + + + We were expecting a token but it's not found. The current token + is actually what we wanted next. Used for tree node errors too. + + + + + A parser for TokenStreams. "parser grammars" result in a subclass + of this. + + + + Gets or sets the token stream; resets the parser upon a set. + + + + Rules that return more than a single value must return an object + containing all the values. Besides the properties defined in + RuleLabelScope.predefinedRulePropertiesScope there may be user-defined + return values. This class simply defines the minimum properties that + are always defined and methods to access the others that might be + available depending on output option such as template and tree. + + + + Note text is not an actual property of the return value, it is computed + from start and stop using the input stream's toString() method. I + could add a ctor to this so that we can pass in and store the input + stream, but I'm not sure we want to do that. It would seem to be undefined + to get the .text property anyway if the rule matches tokens from multiple + input streams. + + I do not use getters for fields of objects that are used simply to + group values such as this aggregate. The getters/setters are there to + satisfy the superclass interface. + + + + The root of the ANTLR exception hierarchy. + + + To avoid English-only error messages and to generally make things + as flexible as possible, these exceptions are not created with strings, + but rather the information necessary to generate an error. Then + the various reporting methods in Parser and Lexer can be overridden + to generate a localized error message. For example, MismatchedToken + exceptions are built with the expected token type. + So, don't expect getMessage() to return anything. + + Note that as of Java 1.4, you can access the stack trace, which means + that you can compute the complete trace of rules from the start symbol. + This gives you considerable context information with which to generate + useful error messages. + + ANTLR generates code that throws exceptions upon recognition error and + also generates code to catch these exceptions in each rule. If you + want to quit upon first error, you can turn off the automatic error + handling mechanism using rulecatch action, but you still need to + override methods mismatch and recoverFromMismatchSet. + + In general, the recognition exceptions can track where in a grammar a + problem occurred and/or what was the expected input. While the parser + knows its state (such as current input symbol and line info) that + state can change before the exception is reported so current token index + is computed and stored at exception time. From this info, you can + perhaps print an entire line of input not just a single token, for example. + Better to just say the recognizer had a problem and then let the parser + figure out a fancy report. + + + + What input stream did the error occur in? + + + + What was the lookahead index when this exception was thrown? + + + + What is index of token/char were we looking at when the error occurred? + + + + The current Token when an error occurred. Since not all streams + can retrieve the ith Token, we have to track the Token object. + For parsers. Even when it's a tree parser, token might be set. + + + + + If this is a tree parser exception, node is set to the node with + the problem. + + + + The current char when an error occurred. For lexers. + + + + Track the line (1-based) at which the error occurred in case this is + generated from a lexer. We need to track this since the + unexpected char doesn't carry the line info. + + + + + The 0-based index into the line where the error occurred. + + + + + If you are parsing a tree node stream, you will encounter som + imaginary nodes w/o line/col info. We now search backwards looking + for most recent token with line/col info, but notify getErrorHeader() + that info is approximate. + + + + Used for remote debugger deserialization + + + Return the token type or char of the unexpected input element + + + + The set of fields needed by an abstract recognizer to recognize input + and recover from errors etc... As a separate state object, it can be + shared among multiple grammars; e.g., when one grammar imports another. + + + + These fields are publically visible but the actual state pointer per + parser is protected. + + + + + Track the set of token types that can follow any rule invocation. + Stack grows upwards. When it hits the max, it grows 2x in size + and keeps going. + + + + + This is true when we see an error and before having successfully + matched a token. Prevents generation of more than one error message + per error. + + + + + The index into the input stream where the last error occurred. + This is used to prevent infinite loops where an error is found + but no token is consumed during recovery...another error is found, + ad naseum. This is a failsafe mechanism to guarantee that at least + one token/tree node is consumed for two errors. + + + + + In lieu of a return value, this indicates that a rule or token + has failed to match. Reset to false upon valid token match. + + + + Did the recognizer encounter a syntax error? Track how many. + + + + If 0, no backtracking is going on. Safe to exec actions etc... + If >0 then it's the level of backtracking. + + + + + An array[size num rules] of dictionaries that tracks + the stop token index for each rule. ruleMemo[ruleIndex] is + the memoization table for ruleIndex. For key ruleStartIndex, you + get back the stop token for associated rule or MEMO_RULE_FAILED. + + + This is only used if rule memoization is on (which it is by default). + + + + The goal of all lexer rules/methods is to create a token object. + This is an instance variable as multiple rules may collaborate to + create a single token. nextToken will return this object after + matching lexer rule(s). If you subclass to allow multiple token + emissions, then set this to the last token to be matched or + something nonnull so that the auto token emit mechanism will not + emit another token. + + + + + What character index in the stream did the current token start at? + Needed, for example, to get the text for current token. Set at + the start of nextToken. + + + + The line on which the first character of the token resides + + + The character position of first character within the line + + + The channel number for the current token + + + The token type for the current token + + + + You can set the text for the current token to override what is in + the input char buffer. Use setText() or can set this instance var. + + + + + All tokens go to the parser (unless skip() is called in that rule) + on a particular "channel". The parser tunes to a particular channel + so that whitespace etc... can go to the parser on a "hidden" channel. + + + + + Anything on different channel than DEFAULT_CHANNEL is not parsed + by parser. + + + + Useful for dumping out the input stream after doing some + augmentation or other manipulations. + + You can insert stuff, replace, and delete chunks. Note that the + operations are done lazily--only if you convert the buffer to a + String. This is very efficient because you are not moving data around + all the time. As the buffer of tokens is converted to strings, the + toString() method(s) check to see if there is an operation at the + current index. If so, the operation is done and then normal String + rendering continues on the buffer. This is like having multiple Turing + machine instruction streams (programs) operating on a single input tape. :) + + Since the operations are done lazily at toString-time, operations do not + screw up the token index values. That is, an insert operation at token + index i does not change the index values for tokens i+1..n-1. + + Because operations never actually alter the buffer, you may always get + the original token stream back without undoing anything. Since + the instructions are queued up, you can easily simulate transactions and + roll back any changes if there is an error just by removing instructions. + For example, + + CharStream input = new ANTLRFileStream("input"); + TLexer lex = new TLexer(input); + TokenRewriteStream tokens = new TokenRewriteStream(lex); + T parser = new T(tokens); + parser.startRule(); + + Then in the rules, you can execute + Token t,u; + ... + input.insertAfter(t, "text to put after t");} + input.insertAfter(u, "text after u");} + System.out.println(tokens.toString()); + + Actually, you have to cast the 'input' to a TokenRewriteStream. :( + + You can also have multiple "instruction streams" and get multiple + rewrites from a single pass over the input. Just name the instruction + streams and use that name again when printing the buffer. This could be + useful for generating a C file and also its header file--all from the + same buffer: + + tokens.insertAfter("pass1", t, "text to put after t");} + tokens.insertAfter("pass2", u, "text after u");} + System.out.println(tokens.toString("pass1")); + System.out.println(tokens.toString("pass2")); + + If you don't use named rewrite streams, a "default" stream is used as + the first example shows. + + + What index into rewrites List are we? + + + Token buffer index. + + + + Execute the rewrite operation by possibly adding to the buffer. + Return the index of the next token to operate on. + + + + + I'm going to try replacing range from x..y with (y-x)+1 ReplaceOp + instructions. + + + + + You may have multiple, named streams of rewrite operations. + I'm calling these things "programs." + Maps String (name) -> rewrite (List) + + + + Map String (program name) -> Integer index + + + + Rollback the instruction stream for a program so that + the indicated instruction (via instructionIndex) is no + longer in the stream. UNTESTED! + + + + Reset the program so that no instructions exist + + + We need to combine operations and report invalid operations (like + overlapping replaces that are not completed nested). Inserts to + same index need to be combined etc... Here are the cases: + + I.i.u I.j.v leave alone, nonoverlapping + I.i.u I.i.v combine: Iivu + + R.i-j.u R.x-y.v | i-j in x-y delete first R + R.i-j.u R.i-j.v delete first R + R.i-j.u R.x-y.v | x-y in i-j ERROR + R.i-j.u R.x-y.v | boundaries overlap ERROR + + Delete special case of replace (text==null): + D.i-j.u D.x-y.v | boundaries overlap combine to max(min)..max(right) + + I.i.u R.x-y.v | i in (x+1)-y delete I (since insert before + we're not deleting i) + I.i.u R.x-y.v | i not in (x+1)-y leave alone, nonoverlapping + R.x-y.v I.i.u | i in x-y ERROR + R.x-y.v I.x.u R.x-y.uv (combine, delete I) + R.x-y.v I.i.u | i not in x-y leave alone, nonoverlapping + + I.i.u = insert u before op @ index i + R.x-y.u = replace x-y indexed tokens with u + + First we need to examine replaces. For any replace op: + + 1. wipe out any insertions before op within that range. + 2. Drop any replace op before that is contained completely within + that range. + 3. Throw exception upon boundary overlap with any previous replace. + + Then we can deal with inserts: + + 1. for any inserts to same index, combine even if not adjacent. + 2. for any prior replace with same left boundary, combine this + insert with replace and delete this replace. + 3. throw exception if index in same range as previous replace + + Don't actually delete; make op null in list. Easier to walk list. + Later we can throw as we add to index -> op map. + + Note that I.2 R.2-2 will wipe out I.2 even though, technically, the + inserted stuff would be before the replace range. But, if you + add tokens in front of a method body '{' and then delete the method + body, I think the stuff before the '{' you added should disappear too. + + Return a map from token index to operation. + + + Get all operations before an index of a particular kind + + + + In an action, a lexer rule can set token to this SKIP_TOKEN and ANTLR + will avoid creating a token for this symbol and try to fetch another. + + + + imaginary tree navigation type; traverse "get child" link + + + imaginary tree navigation type; finish with a child list + + + + A generic tree implementation with no payload. You must subclass to + actually have any user data. ANTLR v3 uses a list of children approach + instead of the child-sibling approach in v2. A flat tree (a list) is + an empty node whose children represent the list. An empty, but + non-null node is called "nil". + + + + + Create a new node from an existing node does nothing for BaseTree + as there are no fields other than the children list, which cannot + be copied as the children are not considered part of this node. + + + + + Get the children internal List; note that if you directly mess with + the list, do so at your own risk. + + + + BaseTree doesn't track parent pointers. + + + BaseTree doesn't track child indexes. + + + Add t as child of this node. + + + Warning: if t has no children, but child does + and child isNil then this routine moves children to t via + t.children = child.children; i.e., without copying the array. + + + + Add all elements of kids list as children of this node + + + Insert child t at child position i (0..n-1) by shifting children + i+1..n-1 to the right one position. Set parent / indexes properly + but does NOT collapse nil-rooted t's that come in here like addChild. + + + + Delete children from start to stop and replace with t even if t is + a list (nil-root tree). num of children can increase or decrease. + For huge child lists, inserting children can force walking rest of + children to set their childindex; could be slow. + + + + Override in a subclass to change the impl of children list + + + Set the parent and child index values for all child of t + + + Walk upwards looking for ancestor with this token type. + + + Walk upwards and get first ancestor with this token type. + + + + Return a list of all ancestors of this node. The first node of + list is the root and the last is the parent of this node. + + + + Print out a whole tree not just a node + + + Override to say how a node (not a tree) should look as text + + + A TreeAdaptor that works with any Tree implementation. + + + + System.identityHashCode() is not always unique; we have to + track ourselves. That's ok, it's only for debugging, though it's + expensive: we have to create a hashtable with all tree nodes in it. + + + + + Create tree node that holds the start and stop tokens associated + with an error. + + + + If you specify your own kind of tree nodes, you will likely have to + override this method. CommonTree returns Token.INVALID_TOKEN_TYPE + if no token payload but you might have to set token type for diff + node type. + + You don't have to subclass CommonErrorNode; you will likely need to + subclass your own tree node class to avoid class cast exception. + + + + + This is generic in the sense that it will work with any kind of + tree (not just ITree interface). It invokes the adaptor routines + not the tree node routines to do the construction. + + + + + Add a child to the tree t. If child is a flat tree (a list), make all + in list children of t. Warning: if t has no children, but child does + and child isNil then you can decide it is ok to move children to t via + t.children = child.children; i.e., without copying the array. Just + make sure that this is consistent with have the user will build + ASTs. + + + + + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + old=^(nil a b c), new=r yields ^(r a b c) + old=^(a b c), new=r yields ^(r ^(a b c)) + + If newRoot is a nil-rooted single child tree, use the single + child as the new root node. + + old=^(nil a b c), new=^(nil r) yields ^(r a b c) + old=^(a b c), new=^(nil r) yields ^(r ^(a b c)) + + If oldRoot was null, it's ok, just return newRoot (even if isNil). + + old=null, new=r yields r + old=null, new=^(nil r) yields ^(nil r) + + Return newRoot. Throw an exception if newRoot is not a + simple node or nil root with a single child node--it must be a root + node. If newRoot is ^(nil x) return x as newRoot. + + Be advised that it's ok for newRoot to point at oldRoot's + children; i.e., you don't have to copy the list. We are + constructing these nodes so we should have this control for + efficiency. + + + + Transform ^(nil x) to x and nil to null + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + This is a variant of createToken where the new token is derived from + an actual real input token. Typically this is for converting '{' + tokens to BLOCK etc... You'll see + + r : lc='{' ID+ '}' -> ^(BLOCK[$lc] ID+) ; + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Duplicate a node. This is part of the factory; + override if you want another kind of node to be built. + + + + I could use reflection to prevent having to override this + but reflection is slow. + + + + + Track start/stop token for subtree root created for a rule. + Only works with Tree nodes. For rules that match nothing, + seems like this will yield start=i and stop=i-1 in a nil node. + Might be useful info so I'll not force to be i..i. + + + + A buffered stream of tree nodes. Nodes can be from a tree of ANY kind. + + This node stream sucks all nodes out of the tree specified in + the constructor during construction and makes pointers into + the tree using an array of Object pointers. The stream necessarily + includes pointers to DOWN and UP and EOF nodes. + + This stream knows how to mark/release for backtracking. + + This stream is most suitable for tree interpreters that need to + jump around a lot or for tree parsers requiring speed (at cost of memory). + There is some duplicated functionality here with UnBufferedTreeNodeStream + but just in bookkeeping, not tree walking etc... + + TARGET DEVELOPERS: + + This is the old CommonTreeNodeStream that buffered up entire node stream. + No need to implement really as new CommonTreeNodeStream is much better + and covers what we need. + + @see CommonTreeNodeStream + + + The complete mapping from stream index to tree node. + This buffer includes pointers to DOWN, UP, and EOF nodes. + It is built upon ctor invocation. The elements are type + Object as we don't what the trees look like. + + Load upon first need of the buffer so we can set token types + of interest for reverseIndexing. Slows us down a wee bit to + do all of the if p==-1 testing everywhere though. + + + Pull nodes from which tree? + + + IF this tree (root) was created from a token stream, track it. + + + What tree adaptor was used to build these trees + + + Reuse same DOWN, UP navigation nodes unless this is true + + + The index into the nodes list of the current node (next node + to consume). If -1, nodes array not filled yet. + + + Track the last mark() call result value for use in rewind(). + + + Stack of indexes used for push/pop calls + + + Walk tree with depth-first-search and fill nodes buffer. + Don't do DOWN, UP nodes if its a list (t is isNil). + + + What is the stream index for node? 0..n-1 + Return -1 if node not found. + + + As we flatten the tree, we use UP, DOWN nodes to represent + the tree structure. When debugging we need unique nodes + so instantiate new ones when uniqueNavigationNodes is true. + + + Look backwards k nodes + + + + Make stream jump to a new location, saving old location. + Switch back with pop(). + + + + + Seek back to previous index saved during last push() call. + Return top of stack (return index). + + + + Used for testing, just return the token type stream + + + Debugging + + + A node representing erroneous token range in token stream + + + + A tree node that is wrapper for a Token object. After 3.0 release + while building tree rewrite stuff, it became clear that computing + parent and child index is very difficult and cumbersome. Better to + spend the space in every tree node. If you don't want these extra + fields, it's easy to cut them out in your own BaseTree subclass. + + + + A single token is the payload + + + + What token indexes bracket all tokens associated with this node + and below? + + + + Who is the parent node of this node; if null, implies node is root + + + What index is this node in the child list? Range: 0..n-1 + + + + For every node in this subtree, make sure it's start/stop token's + are set. Walk depth first, visit bottom up. Only updates nodes + with at least one token index < 0. + + + + + A TreeAdaptor that works with any Tree implementation. It provides + really just factory methods; all the work is done by BaseTreeAdaptor. + If you would like to have different tokens created than ClassicToken + objects, you need to override this and then set the parser tree adaptor to + use your subclass. + + + + To get your parser to build nodes of a different type, override + create(Token), errorNode(), and to be safe, YourTreeClass.dupNode(). + dupNode is called to duplicate nodes during rewrite operations. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + This is a variant of createToken where the new token is derived from + an actual real input token. Typically this is for converting '{' + tokens to BLOCK etc... You'll see + + r : lc='{' ID+ '}' -> ^(BLOCK[$lc] ID+) ; + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + What is the Token associated with this node? If + you are not using CommonTree, then you must + override this in your own adaptor. + + + + Pull nodes from which tree? + + + If this tree (root) was created from a token stream, track it. + + + What tree adaptor was used to build these trees + + + The tree iterator we are using + + + Stack of indexes used for push/pop calls + + + Tree (nil A B C) trees like flat A B C streams + + + Tracks tree depth. Level=0 means we're at root node level. + + + Tracks the last node before the start of {@link #data} which contains + position information to provide information for error reporting. This is + tracked in addition to {@link #prevElement} which may or may not contain + position information. + + @see #hasPositionInformation + @see RecognitionException#extractInformationFromTreeNodeStream + + + Make stream jump to a new location, saving old location. + Switch back with pop(). + + + Seek back to previous index saved during last push() call. + Return top of stack (return index). + + + Returns an element containing position information. If {@code allowApproximateLocation} is {@code false}, then + this method will return the {@code LT(1)} element if it contains position information, and otherwise return {@code null}. + If {@code allowApproximateLocation} is {@code true}, then this method will return the last known element containing position information. + + @see #hasPositionInformation + + + For debugging; destructive: moves tree iterator to end. + + + A utility class to generate DOT diagrams (graphviz) from + arbitrary trees. You can pass in your own templates and + can pass in any kind of tree or use Tree interface method. + I wanted this separator so that you don't have to include + ST just to use the org.antlr.runtime.tree.* package. + This is a set of non-static methods so you can subclass + to override. For example, here is an invocation: + + CharStream input = new ANTLRInputStream(System.in); + TLexer lex = new TLexer(input); + CommonTokenStream tokens = new CommonTokenStream(lex); + TParser parser = new TParser(tokens); + TParser.e_return r = parser.e(); + Tree t = (Tree)r.tree; + System.out.println(t.toStringTree()); + DOTTreeGenerator gen = new DOTTreeGenerator(); + StringTemplate st = gen.toDOT(t); + System.out.println(st); + + + Track node to number mapping so we can get proper node name back + + + Track node number so we can get unique node names + + + Generate DOT (graphviz) for a whole tree not just a node. + For example, 3+4*5 should generate: + + digraph { + node [shape=plaintext, fixedsize=true, fontsize=11, fontname="Courier", + width=.4, height=.2]; + edge [arrowsize=.7] + "+"->3 + "+"->"*" + "*"->4 + "*"->5 + } + + Takes a Tree interface object. + + + + @author Sam Harwell + + + Returns an element containing concrete information about the current + position in the stream. + + @param allowApproximateLocation if {@code false}, this method returns + {@code null} if an element containing exact information about the current + position is not available + + + Determines if the specified {@code element} contains concrete position + information. + + @param element the element to check + @return {@code true} if {@code element} contains concrete position + information, otherwise {@code false} + + + + What does a tree look like? ANTLR has a number of support classes + such as CommonTreeNodeStream that work on these kinds of trees. You + don't have to make your trees implement this interface, but if you do, + you'll be able to use more support code. + + + + NOTE: When constructing trees, ANTLR can build any kind of tree; it can + even use Token objects as trees if you add a child list to your tokens. + + This is a tree node without any payload; just navigation and factory stuff. + + + + Is there is a node above with token type ttype? + + + Walk upwards and get first ancestor with this token type. + + + + Return a list of all ancestors of this node. The first node of + list is the root and the last is the parent of this node. + + + + This node is what child index? 0..n-1 + + + Set the parent and child index values for all children + + + + Add t as a child to this node. If t is null, do nothing. If t + is nil, add all children of t to this' children. + + + + Set ith child (0..n-1) to t; t must be non-null and non-nil node + + + + Delete children from start to stop and replace with t even if t is + a list (nil-root tree). num of children can increase or decrease. + For huge child lists, inserting children can force walking rest of + children to set their childindex; could be slow. + + + + + Indicates the node is a nil node but may still have children, meaning + the tree is a flat list. + + + + + What is the smallest token index (indexing from 0) for this node + and its children? + + + + + What is the largest token index (indexing from 0) for this node + and its children? + + + + Return a token type; needed for tree parsing + + + In case we don't have a token payload, what is the line for errors? + + + + How to create and navigate trees. Rather than have a separate factory + and adaptor, I've merged them. Makes sense to encapsulate. + + + + This takes the place of the tree construction code generated in the + generated code in 2.x and the ASTFactory. + + I do not need to know the type of a tree at all so they are all + generic Objects. This may increase the amount of typecasting needed. :( + + + + + Create a tree node from Token object; for CommonTree type trees, + then the token just becomes the payload. This is the most + common create call. + + + + Override if you want another kind of node to be built. + + + + + Create a new node derived from a token, with a new token type. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG[$tokenLabel]. + + + + This should invoke createToken(Token). + + + + + Same as create(tokenType,fromToken) except set the text too. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG[$tokenLabel, "IMAG"]. + + + + This should invoke createToken(Token). + + + + + Same as create(fromToken) except set the text too. + This is invoked when the text terminal option is set, as in + IMAG<text='IMAG'>. + + + + This should invoke createToken(Token). + + + + + Create a new node derived from a token, with a new token type. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG["IMAG"]. + + + + This should invoke createToken(int,String). + + + + Duplicate a single tree node. + Override if you want another kind of node to be built. + + + Duplicate tree recursively, using dupNode() for each node + + + + Return a nil node (an empty but non-null node) that can hold + a list of element as the children. If you want a flat tree (a list) + use "t=adaptor.nil(); t.addChild(x); t.addChild(y);" + + + + + Return a tree node representing an error. This node records the + tokens consumed during error recovery. The start token indicates the + input symbol at which the error was detected. The stop token indicates + the last symbol consumed during recovery. + + + + You must specify the input stream so that the erroneous text can + be packaged up in the error node. The exception could be useful + to some applications; default implementation stores ptr to it in + the CommonErrorNode. + + This only makes sense during token parsing, not tree parsing. + Tree parsing should happen only when parsing and tree construction + succeed. + + + + Is tree considered a nil node used to make lists of child nodes? + + + + Add a child to the tree t. If child is a flat tree (a list), make all + in list children of t. Warning: if t has no children, but child does + and child isNil then you can decide it is ok to move children to t via + t.children = child.children; i.e., without copying the array. Just + make sure that this is consistent with have the user will build + ASTs. Do nothing if t or child is null. + + + + + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + old=^(nil a b c), new=r yields ^(r a b c) + old=^(a b c), new=r yields ^(r ^(a b c)) + + If newRoot is a nil-rooted single child tree, use the single + child as the new root node. + + old=^(nil a b c), new=^(nil r) yields ^(r a b c) + old=^(a b c), new=^(nil r) yields ^(r ^(a b c)) + + If oldRoot was null, it's ok, just return newRoot (even if isNil). + + old=null, new=r yields r + old=null, new=^(nil r) yields ^(nil r) + + Return newRoot. Throw an exception if newRoot is not a + simple node or nil root with a single child node--it must be a root + node. If newRoot is ^(nil x) return x as newRoot. + + Be advised that it's ok for newRoot to point at oldRoot's + children; i.e., you don't have to copy the list. We are + constructing these nodes so we should have this control for + efficiency. + + + + + Given the root of the subtree created for this rule, post process + it to do any simplifications or whatever you want. A required + behavior is to convert ^(nil singleSubtree) to singleSubtree + as the setting of start/stop indexes relies on a single non-nil root + for non-flat trees. + + + + Flat trees such as for lists like "idlist : ID+ ;" are left alone + unless there is only one ID. For a list, the start/stop indexes + are set in the nil node. + + This method is executed after all rule tree construction and right + before setTokenBoundaries(). + + + + For identifying trees. + + + How to identify nodes so we can say "add node to a prior node"? + Even becomeRoot is an issue. Use System.identityHashCode(node) + usually. + + + + + Create a node for newRoot make it the root of oldRoot. + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + Return node created for newRoot. + + + + Be advised: when debugging ASTs, the DebugTreeAdaptor manually + calls create(Token child) and then plain becomeRoot(node, node) + because it needs to trap calls to create, but it can't since it delegates + to not inherits from the TreeAdaptor. + + + + For tree parsing, I need to know the token type of a node + + + Node constructors can set the type of a node + + + Node constructors can set the text of a node + + + + Return the token object from which this node was created. + Currently used only for printing an error message. + The error display routine in BaseRecognizer needs to + display where the input the error occurred. If your + tree of limitation does not store information that can + lead you to the token, you can create a token filled with + the appropriate information and pass that back. See + BaseRecognizer.getErrorMessage(). + + + + + Where are the bounds in the input token stream for this node and + all children? Each rule that creates AST nodes will call this + method right before returning. Flat trees (i.e., lists) will + still usually have a nil root node just to hold the children list. + That node would contain the start/stop indexes then. + + + + Get the token start index for this subtree; return -1 if no such index + + + Get the token stop index for this subtree; return -1 if no such index + + + Get a child 0..n-1 node + + + Set ith child (0..n-1) to t; t must be non-null and non-nil node + + + Remove ith child and shift children down from right. + + + How many children? If 0, then this is a leaf node + + + + Who is the parent node of this node; if null, implies node is root. + If your node type doesn't handle this, it's ok but the tree rewrites + in tree parsers need this functionality. + + + + + What index is this node in the child list? Range: 0..n-1 + If your node type doesn't handle this, it's ok but the tree rewrites + in tree parsers need this functionality. + + + + + Replace from start to stop child index of parent with t, which might + be a list. Number of children may be different after this call. + + + + If parent is null, don't do anything; must be at root of overall tree. + Can't replace whatever points to the parent externally. Do nothing. + + + + A stream of tree nodes, accessing nodes from a tree of some kind + + + + Get a tree node at an absolute index i; 0..n-1. + If you don't want to buffer up nodes, then this method makes no + sense for you. + + + + + Get tree node at current input pointer + ahead where + ==1 is next node. <0 indicates nodes in the past. So + {@code LT(-1)} is previous node, but implementations are not required to + provide results for < -1. {@code LT(0)} is undefined. For + <=n, return . Return for {@code LT(0)} + and any index that results in an absolute address that is negative. + + + + This is analogous to , but this returns a tree node + instead of a . Makes code generation identical for both + parser and tree grammars. + + + + + Where is this stream pulling nodes from? This is not the name, but + the object that provides node objects. + + + + + If the tree associated with this stream was created from a + {@link TokenStream}, you can specify it here. Used to do rule + {@code $text} attribute in tree parser. Optional unless you use tree + parser rule {@code $text} attribute or {@code output=template} and + {@code rewrite=true} options. + + + + + What adaptor can tell me how to interpret/navigate nodes and + trees. E.g., get text of a node. + + + + + As we flatten the tree, we use {@link Token#UP}, {@link Token#DOWN} nodes + to represent the tree structure. When debugging we need unique nodes so + we have to instantiate new ones. When doing normal tree parsing, it's + slow and a waste of memory to create unique navigation nodes. Default + should be {@code false}. + + + + + Return the text of all nodes from {@code start} to {@code stop}, + inclusive. If the stream does not buffer all the nodes then it can still + walk recursively from start until stop. You can always return + {@code null} or {@code ""} too, but users should not access + {@code $ruleLabel.text} in an action of course in that case. + + + + + Replace children of {@code parent} from index {@code startChildIndex} to + {@code stopChildIndex} with {@code t}, which might be a list. Number of + children may be different after this call. The stream is notified because + it is walking the tree and might need to know you are monkeying with the + underlying tree. Also, it might be able to modify the node stream to + avoid restreaming for future phases. + + + + If {@code parent} is {@code null}, don't do anything; must be at root of + overall tree. Can't replace whatever points to the parent externally. Do + nothing. + + + + + How to execute code for node t when a visitor visits node t. Execute + pre() before visiting children and execute post() after visiting children. + + + + + Execute an action before visiting children of t. Return t or + a rewritten t. It is up to the visitor to decide what to do + with the return value. Children of returned value will be + visited if using TreeVisitor.visit(). + + + + + Execute an action after visiting children of t. Return t or + a rewritten t. It is up to the visitor to decide what to do + with the return value. + + + + + A record of the rules used to match a token sequence. The tokens + end up as the leaves of this tree and rule nodes are the interior nodes. + This really adds no functionality, it is just an alias for CommonTree + that is more meaningful (specific) and holds a String to display for a node. + + + + + Emit a token and all hidden nodes before. EOF node holds all + hidden tokens after last real token. + + + + + Print out the leaves of this tree, which means printing original + input back out. + + + + + Base class for all exceptions thrown during AST rewrite construction. + This signifies a case where the cardinality of two or more elements + in a subrule are different: (ID INT)+ where |ID|!=|INT| + + + + No elements within a (...)+ in a rewrite rule + + + Ref to ID or expr but no tokens in ID stream or subtrees in expr stream + + + + A generic list of elements tracked in an alternative to be used in + a -> rewrite rule. We need to subclass to fill in the next() method, + which returns either an AST node wrapped around a token payload or + an existing subtree. + + + + Once you start next()ing, do not try to add more elements. It will + break the cursor tracking I believe. + + TODO: add mechanism to detect/puke on modification after reading from stream + + + + + + + + Cursor 0..n-1. If singleElement!=null, cursor is 0 until you next(), + which bumps it to 1 meaning no more elements. + + + + Track single elements w/o creating a list. Upon 2nd add, alloc list + + + The list of tokens or subtrees we are tracking + + + Once a node / subtree has been used in a stream, it must be dup'd + from then on. Streams are reset after subrules so that the streams + can be reused in future subrules. So, reset must set a dirty bit. + If dirty, then next() always returns a dup. + + + The element or stream description; usually has name of the token or + rule reference that this list tracks. Can include rulename too, but + the exception would track that info. + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + + Reset the condition of this stream so that it appears we have + not consumed any of its elements. Elements themselves are untouched. + Once we reset the stream, any future use will need duplicates. Set + the dirty bit. + + + + + Return the next element in the stream. If out of elements, throw + an exception unless size()==1. If size is 1, then return elements[0]. + Return a duplicate node/subtree if stream is out of elements and + size==1. If we've already used the element, dup (dirty bit set). + + + + + Do the work of getting the next element, making sure that it's + a tree node or subtree. Deal with the optimization of single- + element list versus list of size > 1. Throw an exception + if the stream is empty or we're out of elements and size>1. + protected so you can override in a subclass if necessary. + + + + + When constructing trees, sometimes we need to dup a token or AST + subtree. Dup'ing a token means just creating another AST node + around it. For trees, you must call the adaptor.dupTree() unless + the element is for a tree root; then it must be a node dup. + + + + + Ensure stream emits trees; tokens must be converted to AST nodes. + AST nodes can be passed through unmolested. + + + + + Queues up nodes matched on left side of -> in a tree parser. This is + the analog of RewriteRuleTokenStream for normal parsers. + + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + + Treat next element as a single node even if it's a subtree. + This is used instead of next() when the result has to be a + tree root node. Also prevents us from duplicating recently-added + children; e.g., ^(type ID)+ adds ID to type and then 2nd iteration + must dup the type node, but ID has been added. + + + + Referencing a rule result twice is ok; dup entire tree as + we can't be adding trees as root; e.g., expr expr. + + Hideous code duplication here with super.next(). Can't think of + a proper way to refactor. This needs to always call dup node + and super.next() doesn't know which to call: dup node or dup tree. + + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + Get next token from stream and make a node for it + + + + Don't convert to a tree unless they explicitly call nextTree. + This way we can do hetero tree nodes in rewrite. + + + + Return a node stream from a doubly-linked tree whose nodes + know what child index they are. No remove() is supported. + + Emit navigation nodes (DOWN, UP, and EOF) to let show tree structure. + + + If we emit UP/DOWN nodes, we need to spit out multiple nodes per + next() call. + + + + A parser for a stream of tree nodes. "tree grammars" result in a subclass + of this. All the error reporting and recovery is shared with Parser via + the BaseRecognizer superclass. + + + + Set the input stream + + + + Match '.' in tree parser has special meaning. Skip node or + entire tree if node has children. If children, scan until + corresponding UP node. + + + + + We have DOWN/UP nodes in the stream that have no line info; override. + plus we want to alter the exception type. Don't try to recover + from tree parser errors inline... + + + + + Prefix error message with the grammar name because message is + always intended for the programmer because the parser built + the input tree not the user. + + + + + Tree parsers parse nodes they usually have a token object as + payload. Set the exception token and do the default behavior. + + + + The tree pattern to lex like "(A B C)" + + + Index into input string + + + Current char + + + How long is the pattern in char? + + + Set when token type is ID or ARG (name mimics Java's StreamTokenizer) + + + Override this if you need transformation tracing to go somewhere + other than stdout or if you're not using ITree-derived trees. + + + + This is identical to the ParserRuleReturnScope except that + the start property is a tree nodes not Token object + when you are parsing trees. + + + + Gets the first node or root node of tree matched for this rule. + + + Do a depth first walk of a tree, applying pre() and post() actions as we go. + + + + Visit every node in tree t and trigger an action for each node + before/after having visited all of its children. Bottom up walk. + Execute both actions even if t has no children. Ignore return + results from transforming children since they will have altered + the child list of this node (their parent). Return result of + applying post action to this node. + + + + + Build and navigate trees with this object. Must know about the names + of tokens so you have to pass in a map or array of token names (from which + this class can build the map). I.e., Token DECL means nothing unless the + class can translate it to a token type. + + + + In order to create nodes and navigate, this class needs a TreeAdaptor. + + This class can build a token type -> node index for repeated use or for + iterating over the various nodes with a particular type. + + This class works in conjunction with the TreeAdaptor rather than moving + all this functionality into the adaptor. An adaptor helps build and + navigate trees using methods. This class helps you do it with string + patterns like "(A B C)". You can create a tree from that pattern or + match subtrees against it. + + + + + When using %label:TOKENNAME in a tree for parse(), we must + track the label. + + + + This adaptor creates TreePattern objects for use during scan() + + + + Compute a Map<String, Integer> that is an inverted index of + tokenNames (which maps int token types to names). + + + + Using the map of token names to token types, return the type. + + + + Walk the entire tree and make a node name to nodes mapping. + For now, use recursion but later nonrecursive version may be + more efficient. Returns Map<Integer, List> where the List is + of your AST node type. The Integer is the token type of the node. + + + + TODO: save this index so that find and visit are faster + + + + Do the work for index + + + Return a List of tree nodes with token type ttype + + + Return a List of subtrees matching pattern. + + + + Visit every ttype node in t, invoking the visitor. This is a quicker + version of the general visit(t, pattern) method. The labels arg + of the visitor action method is never set (it's null) since using + a token type rather than a pattern doesn't let us set a label. + + + + Do the recursive work for visit + + + + For all subtrees that match the pattern, execute the visit action. + The implementation uses the root node of the pattern in combination + with visit(t, ttype, visitor) so nil-rooted patterns are not allowed. + Patterns with wildcard roots are also not allowed. + + + + + Given a pattern like (ASSIGN %lhs:ID %rhs:.) with optional labels + on the various nodes and '.' (dot) as the node/subtree wildcard, + return true if the pattern matches and fill the labels Map with + the labels pointing at the appropriate nodes. Return false if + the pattern is malformed or the tree does not match. + + + + If a node specifies a text arg in pattern, then that must match + for that node in t. + + TODO: what's a better way to indicate bad pattern? Exceptions are a hassle + + + + + Do the work for parse. Check to see if the t2 pattern fits the + structure and token types in t1. Check text if the pattern has + text arguments on nodes. Fill labels map with pointers to nodes + in tree matched against nodes in pattern with labels. + + + + + Create a tree or node from the indicated tree pattern that closely + follows ANTLR tree grammar tree element syntax: + + (root child1 ... child2). + + + + You can also just pass in a node: ID + + Any node can have a text argument: ID[foo] + (notice there are no quotes around foo--it's clear it's a string). + + nil is a special name meaning "give me a nil node". Useful for + making lists: (nil A B C) is a list of A B C. + + + + + Compare t1 and t2; return true if token types/text, structure match exactly. + The trees are examined in their entirety so that (A B) does not match + (A B C) nor (A (B C)). + + + + TODO: allow them to pass in a comparator + TODO: have a version that is nonstatic so it can use instance adaptor + + I cannot rely on the tree node's equals() implementation as I make + no constraints at all on the node types nor interface etc... + + + + + Compare type, structure, and text of two trees, assuming adaptor in + this instance of a TreeWizard. + + + + A token stream that pulls tokens from the code source on-demand and + without tracking a complete buffer of the tokens. This stream buffers + the minimum number of tokens possible. It's the same as + OnDemandTokenStream except that OnDemandTokenStream buffers all tokens. + + You can't use this stream if you pass whitespace or other off-channel + tokens to the parser. The stream can't ignore off-channel tokens. + + You can only look backwards 1 token: LT(-1). + + Use this when you need to read from a socket or other infinite stream. + + @see BufferedTokenStream + @see CommonTokenStream + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + An extra token while parsing a TokenStream + + + diff --git a/packages/Antlr3.Runtime.3.5.1/lib/portable-net4+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1/Antlr3.Runtime.dll b/packages/Antlr3.Runtime.3.5.1/lib/portable-net4+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1/Antlr3.Runtime.dll new file mode 100644 index 000000000..63a4ba847 Binary files /dev/null and b/packages/Antlr3.Runtime.3.5.1/lib/portable-net4+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1/Antlr3.Runtime.dll differ diff --git a/packages/Antlr3.Runtime.3.5.1/lib/portable-net4+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1/Antlr3.Runtime.xml b/packages/Antlr3.Runtime.3.5.1/lib/portable-net4+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1/Antlr3.Runtime.xml new file mode 100644 index 000000000..31d731fa3 --- /dev/null +++ b/packages/Antlr3.Runtime.3.5.1/lib/portable-net4+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1/Antlr3.Runtime.xml @@ -0,0 +1,3220 @@ + + + + Antlr3.Runtime + + + + + A kind of ReaderStream that pulls from an InputStream. + Useful for reading from stdin and specifying file encodings etc... + + + + + Vacuum all input from a Reader and then treat it like a StringStream. + Manage the buffer manually to avoid unnecessary data copying. + + + + If you need encoding, use ANTLRInputStream. + + + + + A pretty quick CharStream that pulls all data from an array + directly. Every method call counts in the lexer. Java's + strings aren't very good so I'm avoiding. + + + + The data being scanned + + + How many characters are actually in the buffer + + + 0..n-1 index into string of next char + + + line number 1..n within the input + + + The index of the character relative to the beginning of the line 0..n-1 + + + tracks how deep mark() calls are nested + + + + A list of CharStreamState objects that tracks the stream state + values line, charPositionInLine, and p that can change as you + move through the input stream. Indexed from 1..markDepth. + A null is kept @ index 0. Create upon first call to mark(). + + + + Track the last mark() call result value for use in rewind(). + + + What is name or source of this char stream? + + + Copy data in string to a local char array + + + This is the preferred constructor as no data is copied + + + + Return the current input symbol index 0..n where n indicates the + last symbol has been read. The index is the index of char to + be returned from LA(1). + + + + + Reset the stream so that it's in the same state it was + when the object was created *except* the data array is not + touched. + + + + + consume() ahead until p==index; can't just set p=index as we must + update line and charPositionInLine. + + + + + A generic recognizer that can handle recognizers generated from + lexer, parser, and tree grammars. This is all the parsing + support code essentially; most of it is error recovery stuff and + backtracking. + + + + + State of a lexer, parser, or tree parser are collected into a state + object so the state can be shared. This sharing is needed to + have one grammar import others and share same error variables + and other state variables. It's a kind of explicit multiple + inheritance via delegation of methods and shared state. + + + + reset the parser's state; subclasses must rewinds the input stream + + + + Match current input symbol against ttype. Attempt + single token insertion or deletion error recovery. If + that fails, throw MismatchedTokenException. + + + + To turn off single token insertion or deletion error + recovery, override recoverFromMismatchedToken() and have it + throw an exception. See TreeParser.recoverFromMismatchedToken(). + This way any error in a rule will cause an exception and + immediate exit from rule. Rule would recover by resynchronizing + to the set of symbols that can follow rule ref. + + + + Match the wildcard: in a symbol + + + Report a recognition problem. + + + This method sets errorRecovery to indicate the parser is recovering + not parsing. Once in recovery mode, no errors are generated. + To get out of recovery mode, the parser must successfully match + a token (after a resync). So it will go: + + 1. error occurs + 2. enter recovery mode, report error + 3. consume until token found in resynch set + 4. try to resume parsing + 5. next match() will reset errorRecovery mode + + If you override, make sure to update syntaxErrors if you care about that. + + + + What error message should be generated for the various exception types? + + + Not very object-oriented code, but I like having all error message + generation within one method rather than spread among all of the + exception classes. This also makes it much easier for the exception + handling because the exception classes do not have to have pointers back + to this object to access utility routines and so on. Also, changing + the message for an exception type would be difficult because you + would have to subclassing exception, but then somehow get ANTLR + to make those kinds of exception objects instead of the default. + This looks weird, but trust me--it makes the most sense in terms + of flexibility. + + For grammar debugging, you will want to override this to add + more information such as the stack frame with + getRuleInvocationStack(e, this.getClass().getName()) and, + for no viable alts, the decision description and state etc... + + Override this to change the message generated for one or more + exception types. + + + + + Get number of recognition errors (lexer, parser, tree parser). Each + recognizer tracks its own number. So parser and lexer each have + separate count. Does not count the spurious errors found between + an error and next valid token match + + + + + + What is the error header, normally line/character position information? + + + + How should a token be displayed in an error message? The default + is to display just the text, but during development you might + want to have a lot of information spit out. Override in that case + to use t.ToString() (which, for CommonToken, dumps everything about + the token). This is better than forcing you to override a method in + your token objects because you don't have to go modify your lexer + so that it creates a new Java type. + + + + Override this method to change where error messages go + + + + Recover from an error found on the input stream. This is + for NoViableAlt and mismatched symbol exceptions. If you enable + single token insertion and deletion, this will usually not + handle mismatched symbol exceptions but there could be a mismatched + token that the match() routine could not recover from. + + + + + A hook to listen in on the token consumption during error recovery. + The DebugParser subclasses this to fire events to the listenter. + + + + + Compute the context-sensitive FOLLOW set for current rule. + This is set of token types that can follow a specific rule + reference given a specific call chain. You get the set of + viable tokens that can possibly come next (lookahead depth 1) + given the current call chain. Contrast this with the + definition of plain FOLLOW for rule r: + + + FOLLOW(r)={x | S=>*alpha r beta in G and x in FIRST(beta)} + + where x in T* and alpha, beta in V*; T is set of terminals and + V is the set of terminals and nonterminals. In other words, + FOLLOW(r) is the set of all tokens that can possibly follow + references to r in *any* sentential form (context). At + runtime, however, we know precisely which context applies as + we have the call chain. We may compute the exact (rather + than covering superset) set of following tokens. + + For example, consider grammar: + + stat : ID '=' expr ';' // FOLLOW(stat)=={EOF} + | "return" expr '.' + ; + expr : atom ('+' atom)* ; // FOLLOW(expr)=={';','.',')'} + atom : INT // FOLLOW(atom)=={'+',')',';','.'} + | '(' expr ')' + ; + + The FOLLOW sets are all inclusive whereas context-sensitive + FOLLOW sets are precisely what could follow a rule reference. + For input input "i=(3);", here is the derivation: + + stat => ID '=' expr ';' + => ID '=' atom ('+' atom)* ';' + => ID '=' '(' expr ')' ('+' atom)* ';' + => ID '=' '(' atom ')' ('+' atom)* ';' + => ID '=' '(' INT ')' ('+' atom)* ';' + => ID '=' '(' INT ')' ';' + + At the "3" token, you'd have a call chain of + + stat -> expr -> atom -> expr -> atom + + What can follow that specific nested ref to atom? Exactly ')' + as you can see by looking at the derivation of this specific + input. Contrast this with the FOLLOW(atom)={'+',')',';','.'}. + + You want the exact viable token set when recovering from a + token mismatch. Upon token mismatch, if LA(1) is member of + the viable next token set, then you know there is most likely + a missing token in the input stream. "Insert" one by just not + throwing an exception. + + + Attempt to recover from a single missing or extra token. + + EXTRA TOKEN + + LA(1) is not what we are looking for. If LA(2) has the right token, + however, then assume LA(1) is some extra spurious token. Delete it + and LA(2) as if we were doing a normal match(), which advances the + input. + + MISSING TOKEN + + If current token is consistent with what could come after + ttype then it is ok to "insert" the missing token, else throw + exception For example, Input "i=(3;" is clearly missing the + ')'. When the parser returns from the nested call to expr, it + will have call chain: + + stat -> expr -> atom + + and it will be trying to match the ')' at this point in the + derivation: + + => ID '=' '(' INT ')' ('+' atom)* ';' + ^ + match() will see that ';' doesn't match ')' and report a + mismatched token error. To recover, it sees that LA(1)==';' + is in the set of tokens that can follow the ')' token + reference in rule atom. It can assume that you forgot the ')'. + + + Not currently used + + + + Match needs to return the current input symbol, which gets put + into the label for the associated token ref; e.g., x=ID. Token + and tree parsers need to return different objects. Rather than test + for input stream type or change the IntStream interface, I use + a simple method to ask the recognizer to tell me what the current + input symbol is. + + + This is ignored for lexers. + + + Conjure up a missing token during error recovery. + + + The recognizer attempts to recover from single missing + symbols. But, actions might refer to that missing symbol. + For example, x=ID {f($x);}. The action clearly assumes + that there has been an identifier matched previously and that + $x points at that token. If that token is missing, but + the next token in the stream is what we want we assume that + this token is missing and we keep going. Because we + have to return some token to replace the missing token, + we have to conjure one up. This method gives the user control + over the tokens returned for missing tokens. Mostly, + you will want to create something special for identifier + tokens. For literals such as '{' and ',', the default + action in the parser or tree parser works. It simply creates + a CommonToken of the appropriate type. The text will be the token. + If you change what tokens must be created by the lexer, + override this method to create the appropriate tokens. + + + + Consume tokens until one matches the given token set + + + Push a rule's follow set using our own hardcoded stack + + + Return whether or not a backtracking attempt failed. + + + + Used to print out token names like ID during debugging and + error reporting. The generated parsers implement a method + that overrides this to point to their String[] tokenNames. + + + + + For debugging and other purposes, might want the grammar name. + Have ANTLR generate an implementation for this method. + + + + + A convenience method for use most often with template rewrites. + Convert a list of to a list of . + + + + + Given a rule number and a start token index number, return + MEMO_RULE_UNKNOWN if the rule has not parsed input starting from + start index. If this rule has parsed input starting from the + start index before, then return where the rule stopped parsing. + It returns the index of the last token matched by the rule. + + + + For now we use a hashtable and just the slow Object-based one. + Later, we can make a special one for ints and also one that + tosses out data after we commit past input position i. + + + + + Has this rule already parsed input at the current index in the + input stream? Return the stop token index or MEMO_RULE_UNKNOWN. + If we attempted but failed to parse properly before, return + MEMO_RULE_FAILED. + + + + This method has a side-effect: if we have seen this input for + this rule and successfully parsed before, then seek ahead to + 1 past the stop token matched for this rule last time. + + + + + Record whether or not this rule parsed the input at this position + successfully. Use a standard java hashtable for now. + + + + return how many rule/input-index pairs there are in total. + TODO: this includes synpreds. :( + + + + A stripped-down version of org.antlr.misc.BitSet that is just + good enough to handle runtime requirements such as FOLLOW sets + for automatic error recovery. + + + + + We will often need to do a mod operator (i mod nbits). Its + turns out that, for powers of two, this mod operation is + same as (i & (nbits-1)). Since mod is slow, we use a + precomputed mod mask to do the mod instead. + + + + The actual data bits + + + Construct a bitset of size one word (64 bits) + + + Construction from a static array of longs + + + Construction from a list of integers + + + Construct a bitset given the size + The size of the bitset in bits + + + return this | a in a new set + + + or this element into this set (grow as necessary to accommodate) + + + Grows the set to a larger number of bits. + element that must fit in set + + + Sets the size of a set. + how many words the new set should be + + + return how much space is being used by the bits array not how many actually have member bits on. + + + Is this contained within a? + + + Buffer all input tokens but do on-demand fetching of new tokens from + lexer. Useful when the parser or lexer has to set context/mode info before + proper lexing of future tokens. The ST template parser needs this, + for example, because it has to constantly flip back and forth between + inside/output templates. E.g., <names:{hi, <it>}> has to parse names + as part of an expression but "hi, <it>" as a nested template. + + You can't use this stream if you pass whitespace or other off-channel + tokens to the parser. The stream can't ignore off-channel tokens. + (UnbufferedTokenStream is the same way.) + + This is not a subclass of UnbufferedTokenStream because I don't want + to confuse small moving window of tokens it uses for the full buffer. + + + Record every single token pulled from the source so we can reproduce + chunks of it later. The buffer in LookaheadStream overlaps sometimes + as its moving window moves through the input. This list captures + everything so we can access complete input text. + + + Track the last mark() call result value for use in rewind(). + + + The index into the tokens list of the current token (next token + to consume). tokens[p] should be LT(1). p=-1 indicates need + to initialize with first token. The ctor doesn't get a token. + First call to LT(1) or whatever gets the first token and sets p=0; + + + + How deep have we gone? + + + + Move the input pointer to the next incoming token. The stream + must become active with LT(1) available. consume() simply + moves the input pointer so that LT(1) points at the next + input symbol. Consume at least one token. + + Walk past any token not on the channel the parser is listening to. + + + Make sure index i in tokens has a token. + + + add n elements to buffer + + + Given a start and stop index, return a List of all tokens in + the token type BitSet. Return null if no tokens were found. This + method looks at both on and off channel tokens. + + + + When walking ahead with cyclic DFA or for syntactic predicates, + we need to record the state of the input stream (char index, + line, etc...) so that we can rewind the state after scanning ahead. + + + This is the complete state of a stream. + + + Index into the char stream of next lookahead char + + + What line number is the scanner at before processing buffer[p]? + + + What char position 0..n-1 in line is scanner before processing buffer[p]? + + + + A Token object like we'd use in ANTLR 2.x; has an actual string created + and associated with this object. These objects are needed for imaginary + tree nodes that have payload objects. We need to create a Token object + that has a string; the tree node will point at this token. CommonToken + has indexes into a char stream and hence cannot be used to introduce + new strings. + + + + What token number is this from 0..n-1 tokens + + + + We need to be able to change the text once in a while. If + this is non-null, then getText should return this. Note that + start/stop are not affected by changing this. + + + + What token number is this from 0..n-1 tokens; < 0 implies invalid index + + + The char position into the input buffer where this token starts + + + The char position into the input buffer where this token stops + + + + The most common stream of tokens is one where every token is buffered up + and tokens are prefiltered for a certain channel (the parser will only + see these tokens and cannot change the filter channel number during the + parse). + + + TODO: how to access the full token stream? How to track all tokens matched per rule? + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + Reset this token stream by setting its token source. + + + Always leave p on an on-channel token. + + + Given a starting index, return the index of the first on-channel + token. + + + All debugging events that a recognizer can trigger. + + + I did not create a separate AST debugging interface as it would create + lots of extra classes and DebugParser has a dbg var defined, which makes + it hard to change to ASTDebugEventListener. I looked hard at this issue + and it is easier to understand as one monolithic event interface for all + possible events. Hopefully, adding ST debugging stuff won't be bad. Leave + for future. 4/26/2006. + + + + + The parser has just entered a rule. No decision has been made about + which alt is predicted. This is fired AFTER init actions have been + executed. Attributes are defined and available etc... + The grammarFileName allows composite grammars to jump around among + multiple grammar files. + + + + + Because rules can have lots of alternatives, it is very useful to + know which alt you are entering. This is 1..n for n alts. + + + + + This is the last thing executed before leaving a rule. It is + executed even if an exception is thrown. This is triggered after + error reporting and recovery have occurred (unless the exception is + not caught in this rule). This implies an "exitAlt" event. + The grammarFileName allows composite grammars to jump around among + multiple grammar files. + + + + Track entry into any (...) subrule other EBNF construct + + + + Every decision, fixed k or arbitrary, has an enter/exit event + so that a GUI can easily track what LT/consume events are + associated with prediction. You will see a single enter/exit + subrule but multiple enter/exit decision events, one for each + loop iteration. + + + + + An input token was consumed; matched by any kind of element. + Trigger after the token was matched by things like match(), matchAny(). + + + + + An off-channel input token was consumed. + Trigger after the token was matched by things like match(), matchAny(). + (unless of course the hidden token is first stuff in the input stream). + + + + + Somebody (anybody) looked ahead. Note that this actually gets + triggered by both LA and LT calls. The debugger will want to know + which Token object was examined. Like consumeToken, this indicates + what token was seen at that depth. A remote debugger cannot look + ahead into a file it doesn't have so LT events must pass the token + even if the info is redundant. + + + + + The parser is going to look arbitrarily ahead; mark this location, + the token stream's marker is sent in case you need it. + + + + + After an arbitrairly long lookahead as with a cyclic DFA (or with + any backtrack), this informs the debugger that stream should be + rewound to the position associated with marker. + + + + + Rewind to the input position of the last marker. + Used currently only after a cyclic DFA and just + before starting a sem/syn predicate to get the + input position back to the start of the decision. + Do not "pop" the marker off the state. mark(i) + and rewind(i) should balance still. + + + + + To watch a parser move through the grammar, the parser needs to + inform the debugger what line/charPos it is passing in the grammar. + For now, this does not know how to switch from one grammar to the + other and back for island grammars etc... + + + + This should also allow breakpoints because the debugger can stop + the parser whenever it hits this line/pos. + + + + + A recognition exception occurred such as NoViableAltException. I made + this a generic event so that I can alter the exception hierachy later + without having to alter all the debug objects. + + + + Upon error, the stack of enter rule/subrule must be properly unwound. + If no viable alt occurs it is within an enter/exit decision, which + also must be rewound. Even the rewind for each mark must be unwount. + In the Java target this is pretty easy using try/finally, if a bit + ugly in the generated code. The rewind is generated in DFA.predict() + actually so no code needs to be generated for that. For languages + w/o this "finally" feature (C++?), the target implementor will have + to build an event stack or something. + + Across a socket for remote debugging, only the RecognitionException + data fields are transmitted. The token object or whatever that + caused the problem was the last object referenced by LT. The + immediately preceding LT event should hold the unexpected Token or + char. + + Here is a sample event trace for grammar: + + b : C ({;}A|B) // {;} is there to prevent A|B becoming a set + | D + ; + + The sequence for this rule (with no viable alt in the subrule) for + input 'c c' (there are 3 tokens) is: + + commence + LT(1) + enterRule b + location 7 1 + enter decision 3 + LT(1) + exit decision 3 + enterAlt1 + location 7 5 + LT(1) + consumeToken [c/<4>,1:0] + location 7 7 + enterSubRule 2 + enter decision 2 + LT(1) + LT(1) + recognitionException NoViableAltException 2 1 2 + exit decision 2 + exitSubRule 2 + beginResync + LT(1) + consumeToken [c/<4>,1:1] + LT(1) + endResync + LT(-1) + exitRule b + terminate + + + + + Indicates the recognizer is about to consume tokens to resynchronize + the parser. Any consume events from here until the recovered event + are not part of the parse--they are dead tokens. + + + + + Indicates that the recognizer has finished consuming tokens in order + to resychronize. There may be multiple beginResync/endResync pairs + before the recognizer comes out of errorRecovery mode (in which + multiple errors are suppressed). This will be useful + in a gui where you want to probably grey out tokens that are consumed + but not matched to anything in grammar. Anything between + a beginResync/endResync pair was tossed out by the parser. + + + + A semantic predicate was evaluate with this result and action text + + + + Announce that parsing has begun. Not technically useful except for + sending events over a socket. A GUI for example will launch a thread + to connect and communicate with a remote parser. The thread will want + to notify the GUI when a connection is made. ANTLR parsers + trigger this upon entry to the first rule (the ruleLevel is used to + figure this out). + + + + + Parsing is over; successfully or not. Mostly useful for telling + remote debugging listeners that it's time to quit. When the rule + invocation level goes to zero at the end of a rule, we are done + parsing. + + + + + Input for a tree parser is an AST, but we know nothing for sure + about a node except its type and text (obtained from the adaptor). + This is the analog of the consumeToken method. Again, the ID is + the hashCode usually of the node so it only works if hashCode is + not implemented. If the type is UP or DOWN, then + the ID is not really meaningful as it's fixed--there is + just one UP node and one DOWN navigation node. + + + + + + + The tree parser lookedahead. If the type is UP or DOWN, + then the ID is not really meaningful as it's fixed--there is + just one UP node and one DOWN navigation node. + + + + + A nil was created (even nil nodes have a unique ID... + they are not "null" per se). As of 4/28/2006, this + seems to be uniquely triggered when starting a new subtree + such as when entering a subrule in automatic mode and when + building a tree in rewrite mode. + + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID is set. + + + + + Upon syntax error, recognizers bracket the error with an error node + if they are building ASTs. + + + + + + Announce a new node built from token elements such as type etc... + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID, type, text are + set. + + + + Announce a new node built from an existing token. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only node.ID and token.tokenIndex + are set. + + + + Make a node the new root of an existing root. See + + + Note: the newRootID parameter is possibly different + than the TreeAdaptor.becomeRoot() newRoot parameter. + In our case, it will always be the result of calling + TreeAdaptor.becomeRoot() and not root_n or whatever. + + The listener should assume that this event occurs + only when the current subrule (or rule) subtree is + being reset to newRootID. + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only IDs are set. + + + + + + Make childID a child of rootID. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only IDs are set. + + + + + + Set the token start/stop token index for a subtree root or node. + + + If you are receiving this event over a socket via + RemoteDebugEventSocketListener then only t.ID is set. + + + + A DFA implemented as a set of transition tables. + + + Any state that has a semantic predicate edge is special; those states + are generated with if-then-else structures in a specialStateTransition() + which is generated by cyclicDFA template. + + There are at most 32767 states (16-bit signed short). + Could get away with byte sometimes but would have to generate different + types and the simulation code too. For a point of reference, the Java + lexer's Tokens rule DFA has 326 states roughly. + + + + Which recognizer encloses this DFA? Needed to check backtracking + + + + From the input stream, predict what alternative will succeed + using this DFA (representing the covering regular approximation + to the underlying CFL). Return an alternative number 1..n. Throw + an exception upon error. + + + + A hook for debugging interface + + + + Given a String that has a run-length-encoding of some unsigned shorts + like "\1\2\3\9", convert to short[] {2,9,9,9}. We do this to avoid + static short[] which generates so much init code that the class won't + compile. :( + + + + Hideous duplication of code, but I need different typed arrays out :( + + + The recognizer did not match anything for a (..)+ loop. + + + + A semantic predicate failed during validation. Validation of predicates + occurs when normally parsing the alternative just like matching a token. + Disambiguating predicate evaluation occurs when we hoist a predicate into + a prediction decision. + + + + AST rules have trees + + + Has a value potentially if output=AST; + + + AST rules have trees + + + Has a value potentially if output=AST; + + + A source of characters for an ANTLR lexer + + + + For infinite streams, you don't need this; primarily I'm providing + a useful interface for action code. Just make sure actions don't + use this on streams that don't support it. + + + + + Get the ith character of lookahead. This is the same usually as + LA(i). This will be used for labels in the generated + lexer code. I'd prefer to return a char here type-wise, but it's + probably better to be 32-bit clean and be consistent with LA. + + + + ANTLR tracks the line information automatically + Because this stream can rewind, we need to be able to reset the line + + + The index of the character relative to the beginning of the line 0..n-1 + + + + A simple stream of integers used when all I care about is the char + or token type sequence (such as interpretation). + + + + + Get int at current input pointer + i ahead where i=1 is next int. + Negative indexes are allowed. LA(-1) is previous token (token + just matched). LA(-i) where i is before first token should + yield -1, invalid char / EOF. + + + + + Tell the stream to start buffering if it hasn't already. Return + current input position, Index, or some other marker so that + when passed to rewind() you get back to the same spot. + rewind(mark()) should not affect the input cursor. The Lexer + track line/col info as well as input index so its markers are + not pure input indexes. Same for tree node streams. + + + + + Return the current input symbol index 0..n where n indicates the + last symbol has been read. The index is the symbol about to be + read not the most recently read symbol. + + + + + Reset the stream so that next call to index would return marker. + The marker will usually be Index but it doesn't have to be. It's + just a marker to indicate what state the stream was in. This is + essentially calling release() and seek(). If there are markers + created after this marker argument, this routine must unroll them + like a stack. Assume the state the stream was in when this marker + was created. + + + + + Rewind to the input position of the last marker. + Used currently only after a cyclic DFA and just + before starting a sem/syn predicate to get the + input position back to the start of the decision. + Do not "pop" the marker off the state. mark(i) + and rewind(i) should balance still. It is + like invoking rewind(last marker) but it should not "pop" + the marker off. It's like seek(last marker's input position). + + + + + You may want to commit to a backtrack but don't want to force the + stream to keep bookkeeping objects around for a marker that is + no longer necessary. This will have the same behavior as + rewind() except it releases resources without the backward seek. + This must throw away resources for all markers back to the marker + argument. So if you're nested 5 levels of mark(), and then release(2) + you have to release resources for depths 2..5. + + + + + Set the input cursor to the position indicated by index. This is + normally used to seek ahead in the input stream. No buffering is + required to do this unless you know your stream will use seek to + move backwards such as when backtracking. + + + + This is different from rewind in its multi-directional + requirement and in that its argument is strictly an input cursor (index). + + For char streams, seeking forward must update the stream state such + as line number. For seeking backwards, you will be presumably + backtracking using the mark/rewind mechanism that restores state and + so this method does not need to update state when seeking backwards. + + Currently, this method is only used for efficient backtracking using + memoization, but in the future it may be used for incremental parsing. + + The index is 0..n-1. A seek to position i means that LA(1) will + return the ith symbol. So, seeking to 0 means LA(1) will return the + first element in the stream. + + + + + Only makes sense for streams that buffer everything up probably, but + might be useful to display the entire stream or for testing. This + value includes a single EOF. + + + + + Where are you getting symbols from? Normally, implementations will + pass the buck all the way to the lexer who can ask its input stream + for the file name or whatever. + + + + + Rules can have start/stop info. + + + + + Gets the start element from the input stream + + + + + Gets the stop element from the input stream + + + + + Rules can have start/stop info. + + The element type of the input stream. + + + + Gets the start element from the input stream + + + + + Gets the stop element from the input stream + + + + Get the text of the token + + + The line number on which this token was matched; line=1..n + + + The index of the first character relative to the beginning of the line 0..n-1 + + + + An index from 0..n-1 of the token object in the input stream. + This must be valid in order to use the ANTLRWorks debugger. + + + + + From what character stream was this token created? You don't have to + implement but it's nice to know where a Token comes from if you have + include files etc... on the input. + + + + + A source of tokens must provide a sequence of tokens via nextToken() + and also must reveal it's source of characters; CommonToken's text is + computed from a CharStream; it only store indices into the char stream. + + + + Errors from the lexer are never passed to the parser. Either you want + to keep going or you do not upon token recognition error. If you do not + want to continue lexing then you do not want to continue parsing. Just + throw an exception not under RecognitionException and Java will naturally + toss you all the way out of the recognizers. If you want to continue + lexing then you should not throw an exception to the parser--it has already + requested a token. Keep lexing until you get a valid one. Just report + errors and keep going, looking for a valid token. + + + + + Return a Token object from your input stream (usually a CharStream). + Do not fail/return upon lexing error; keep chewing on the characters + until you get a good one; errors are not passed through to the parser. + + + + + Where are you getting tokens from? normally the implication will simply + ask lexers input stream. + + + + A stream of tokens accessing tokens from a TokenSource + + + Get Token at current input pointer + i ahead where i=1 is next Token. + i<0 indicates tokens in the past. So -1 is previous token and -2 is + two tokens ago. LT(0) is undefined. For i>=n, return Token.EOFToken. + Return null for LT(0) and any index that results in an absolute address + that is negative. + + + + How far ahead has the stream been asked to look? The return + value is a valid index from 0..n-1. + + + + + Get a token at an absolute index i; 0..n-1. This is really only + needed for profiling and debugging and token stream rewriting. + If you don't want to buffer up tokens, then this method makes no + sense for you. Naturally you can't use the rewrite stream feature. + I believe DebugTokenStream can easily be altered to not use + this method, removing the dependency. + + + + + Where is this stream pulling tokens from? This is not the name, but + the object that provides Token objects. + + + + + Return the text of all tokens from start to stop, inclusive. + If the stream does not buffer all the tokens then it can just + return "" or null; Users should not access $ruleLabel.text in + an action of course in that case. + + + + + Because the user is not required to use a token with an index stored + in it, we must provide a means for two token objects themselves to + indicate the start/end location. Most often this will just delegate + to the other toString(int,int). This is also parallel with + the TreeNodeStream.toString(Object,Object). + + + + + The most common stream of tokens is one where every token is buffered up + and tokens are prefiltered for a certain channel (the parser will only + see these tokens and cannot change the filter channel number during the + parse). + + + TODO: how to access the full token stream? How to track all tokens matched per rule? + + + + Record every single token pulled from the source so we can reproduce + chunks of it later. + + + + Map from token type to channel to override some Tokens' channel numbers + + + Set of token types; discard any tokens with this type + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + By default, track all incoming tokens + + + Track the last mark() call result value for use in rewind(). + + + + The index into the tokens list of the current token (next token + to consume). p==-1 indicates that the tokens list is empty + + + + + How deep have we gone? + + + + Reset this token stream by setting its token source. + + + + Load all tokens from the token source and put in tokens. + This is done upon first LT request because you might want to + set some token type / channel overrides before filling buffer. + + + + + Move the input pointer to the next incoming token. The stream + must become active with LT(1) available. consume() simply + moves the input pointer so that LT(1) points at the next + input symbol. Consume at least one token. + + + + Walk past any token not on the channel the parser is listening to. + + + + Given a starting index, return the index of the first on-channel token. + + + + A simple filter mechanism whereby you can tell this token stream + to force all tokens of type ttype to be on channel. For example, + when interpreting, we cannot exec actions so we need to tell + the stream to force all WS and NEWLINE to be a different, ignored + channel. + + + + + Given a start and stop index, return a List of all tokens in + the token type BitSet. Return null if no tokens were found. This + method looks at both on and off channel tokens. + + + + + Get the ith token from the current position 1..n where k=1 is the + first symbol of lookahead. + + + + Look backwards k tokens on-channel tokens + + + + Return absolute token i; ignore which channel the tokens are on; + that is, count all tokens not just on-channel tokens. + + + + + A lexer is recognizer that draws input symbols from a character stream. + lexer grammars result in a subclass of this object. A Lexer object + uses simplified match() and error recovery mechanisms in the interest + of speed. + + + + Where is the lexer drawing characters from? + + + + Gets or sets the text matched so far for the current token or any text override. + + + Setting this value replaces any previously set value, and overrides the original text. + + + + Return a token from this source; i.e., match a token on the char stream. + + + Returns the EOF token (default), if you need + to return a custom token instead override this method. + + + + Instruct the lexer to skip creating a token for current lexer rule + and look for another token. nextToken() knows to keep looking when + a lexer rule finishes with token set to SKIP_TOKEN. Recall that + if token==null at end of any token rule, it creates one for you + and emits it. + + + + This is the lexer entry point that sets instance var 'token' + + + + Currently does not support multiple emits per nextToken invocation + for efficiency reasons. Subclass and override this method and + nextToken (to push tokens into a list and pull from that list rather + than a single variable as this implementation does). + + + + + The standard method called to automatically emit a token at the + outermost lexical rule. The token object should point into the + char buffer start..stop. If there is a text override in 'text', + use that to set the token's text. Override this method to emit + custom Token objects. + + + + If you are building trees, then you should also override + Parser or TreeParser.getMissingSymbol(). + + + + What is the index of the current character of lookahead? + + + + Lexers can normally match any char in it's vocabulary after matching + a token, so do the easy thing and just kill a character and hope + it all works out. You can instead use the rule invocation stack + to do sophisticated error recovery if you are in a fragment rule. + + + + A queue that can dequeue and get(i) in O(1) and grow arbitrarily large. + A linked list is fast at dequeue but slow at get(i). An array is + the reverse. This is O(1) for both operations. + + List grows until you dequeue last element at end of buffer. Then + it resets to start filling at 0 again. If adds/removes are balanced, the + buffer will not grow too large. + + No iterator stuff as that's not how we'll use it. + + + dynamically-sized buffer of elements + + + index of next element to fill + + + + How deep have we gone? + + + + + Return element {@code i} elements ahead of current element. {@code i==0} + gets current element. This is not an absolute index into {@link #data} + since {@code p} defines the start of the real list. + + + + Get and remove first element in queue + + + Return string of current buffer contents; non-destructive + + + + A lookahead queue that knows how to mark/release locations in the buffer for + backtracking purposes. Any markers force the {@link FastQueue} superclass to + keep all elements until no more markers; then can reset to avoid growing a + huge buffer. + + + + Absolute token index. It's the index of the symbol about to be + read via {@code LT(1)}. Goes from 0 to numtokens. + + + This is the {@code LT(-1)} element for the first element in {@link #data}. + + + Track object returned by nextElement upon end of stream; + Return it later when they ask for LT passed end of input. + + + Track the last mark() call result value for use in rewind(). + + + tracks how deep mark() calls are nested + + + + Implement nextElement to supply a stream of elements to this + lookahead buffer. Return EOF upon end of the stream we're pulling from. + + + + + Get and remove first element in queue; override + {@link FastQueue#remove()}; it's the same, just checks for backtracking. + + + + Make sure we have at least one element to remove, even if EOF + + + + Make sure we have 'need' elements from current position p. Last valid + p index is data.size()-1. p+need-1 is the data index 'need' elements + ahead. If we need 1 element, (p+1-1)==p must be < data.size(). + + + + add n elements to buffer + + + Size of entire stream is unknown; we only know buffer size from FastQueue + + + + Seek to a 0-indexed absolute token index. Normally used to seek backwards + in the buffer. Does not force loading of nodes. + + + To preserve backward compatibility, this method allows seeking past the + end of the currently buffered data. In this case, the input pointer will + be moved but the data will only actually be loaded upon the next call to + {@link #consume} or {@link #LT} for {@code k>0}. + + + + A mismatched char or Token or tree node + + + + We were expecting a token but it's not found. The current token + is actually what we wanted next. Used for tree node errors too. + + + + + A parser for TokenStreams. "parser grammars" result in a subclass + of this. + + + + Gets or sets the token stream; resets the parser upon a set. + + + + Rules that return more than a single value must return an object + containing all the values. Besides the properties defined in + RuleLabelScope.predefinedRulePropertiesScope there may be user-defined + return values. This class simply defines the minimum properties that + are always defined and methods to access the others that might be + available depending on output option such as template and tree. + + + + Note text is not an actual property of the return value, it is computed + from start and stop using the input stream's toString() method. I + could add a ctor to this so that we can pass in and store the input + stream, but I'm not sure we want to do that. It would seem to be undefined + to get the .text property anyway if the rule matches tokens from multiple + input streams. + + I do not use getters for fields of objects that are used simply to + group values such as this aggregate. The getters/setters are there to + satisfy the superclass interface. + + + + The root of the ANTLR exception hierarchy. + + + To avoid English-only error messages and to generally make things + as flexible as possible, these exceptions are not created with strings, + but rather the information necessary to generate an error. Then + the various reporting methods in Parser and Lexer can be overridden + to generate a localized error message. For example, MismatchedToken + exceptions are built with the expected token type. + So, don't expect getMessage() to return anything. + + Note that as of Java 1.4, you can access the stack trace, which means + that you can compute the complete trace of rules from the start symbol. + This gives you considerable context information with which to generate + useful error messages. + + ANTLR generates code that throws exceptions upon recognition error and + also generates code to catch these exceptions in each rule. If you + want to quit upon first error, you can turn off the automatic error + handling mechanism using rulecatch action, but you still need to + override methods mismatch and recoverFromMismatchSet. + + In general, the recognition exceptions can track where in a grammar a + problem occurred and/or what was the expected input. While the parser + knows its state (such as current input symbol and line info) that + state can change before the exception is reported so current token index + is computed and stored at exception time. From this info, you can + perhaps print an entire line of input not just a single token, for example. + Better to just say the recognizer had a problem and then let the parser + figure out a fancy report. + + + + What input stream did the error occur in? + + + + What was the lookahead index when this exception was thrown? + + + + What is index of token/char were we looking at when the error occurred? + + + + The current Token when an error occurred. Since not all streams + can retrieve the ith Token, we have to track the Token object. + For parsers. Even when it's a tree parser, token might be set. + + + + + If this is a tree parser exception, node is set to the node with + the problem. + + + + The current char when an error occurred. For lexers. + + + + Track the line (1-based) at which the error occurred in case this is + generated from a lexer. We need to track this since the + unexpected char doesn't carry the line info. + + + + + The 0-based index into the line where the error occurred. + + + + + If you are parsing a tree node stream, you will encounter som + imaginary nodes w/o line/col info. We now search backwards looking + for most recent token with line/col info, but notify getErrorHeader() + that info is approximate. + + + + Used for remote debugger deserialization + + + Return the token type or char of the unexpected input element + + + + The set of fields needed by an abstract recognizer to recognize input + and recover from errors etc... As a separate state object, it can be + shared among multiple grammars; e.g., when one grammar imports another. + + + + These fields are publically visible but the actual state pointer per + parser is protected. + + + + + Track the set of token types that can follow any rule invocation. + Stack grows upwards. When it hits the max, it grows 2x in size + and keeps going. + + + + + This is true when we see an error and before having successfully + matched a token. Prevents generation of more than one error message + per error. + + + + + The index into the input stream where the last error occurred. + This is used to prevent infinite loops where an error is found + but no token is consumed during recovery...another error is found, + ad naseum. This is a failsafe mechanism to guarantee that at least + one token/tree node is consumed for two errors. + + + + + In lieu of a return value, this indicates that a rule or token + has failed to match. Reset to false upon valid token match. + + + + Did the recognizer encounter a syntax error? Track how many. + + + + If 0, no backtracking is going on. Safe to exec actions etc... + If >0 then it's the level of backtracking. + + + + + An array[size num rules] of dictionaries that tracks + the stop token index for each rule. ruleMemo[ruleIndex] is + the memoization table for ruleIndex. For key ruleStartIndex, you + get back the stop token for associated rule or MEMO_RULE_FAILED. + + + This is only used if rule memoization is on (which it is by default). + + + + The goal of all lexer rules/methods is to create a token object. + This is an instance variable as multiple rules may collaborate to + create a single token. nextToken will return this object after + matching lexer rule(s). If you subclass to allow multiple token + emissions, then set this to the last token to be matched or + something nonnull so that the auto token emit mechanism will not + emit another token. + + + + + What character index in the stream did the current token start at? + Needed, for example, to get the text for current token. Set at + the start of nextToken. + + + + The line on which the first character of the token resides + + + The character position of first character within the line + + + The channel number for the current token + + + The token type for the current token + + + + You can set the text for the current token to override what is in + the input char buffer. Use setText() or can set this instance var. + + + + + All tokens go to the parser (unless skip() is called in that rule) + on a particular "channel". The parser tunes to a particular channel + so that whitespace etc... can go to the parser on a "hidden" channel. + + + + + Anything on different channel than DEFAULT_CHANNEL is not parsed + by parser. + + + + Useful for dumping out the input stream after doing some + augmentation or other manipulations. + + You can insert stuff, replace, and delete chunks. Note that the + operations are done lazily--only if you convert the buffer to a + String. This is very efficient because you are not moving data around + all the time. As the buffer of tokens is converted to strings, the + toString() method(s) check to see if there is an operation at the + current index. If so, the operation is done and then normal String + rendering continues on the buffer. This is like having multiple Turing + machine instruction streams (programs) operating on a single input tape. :) + + Since the operations are done lazily at toString-time, operations do not + screw up the token index values. That is, an insert operation at token + index i does not change the index values for tokens i+1..n-1. + + Because operations never actually alter the buffer, you may always get + the original token stream back without undoing anything. Since + the instructions are queued up, you can easily simulate transactions and + roll back any changes if there is an error just by removing instructions. + For example, + + CharStream input = new ANTLRFileStream("input"); + TLexer lex = new TLexer(input); + TokenRewriteStream tokens = new TokenRewriteStream(lex); + T parser = new T(tokens); + parser.startRule(); + + Then in the rules, you can execute + Token t,u; + ... + input.insertAfter(t, "text to put after t");} + input.insertAfter(u, "text after u");} + System.out.println(tokens.toString()); + + Actually, you have to cast the 'input' to a TokenRewriteStream. :( + + You can also have multiple "instruction streams" and get multiple + rewrites from a single pass over the input. Just name the instruction + streams and use that name again when printing the buffer. This could be + useful for generating a C file and also its header file--all from the + same buffer: + + tokens.insertAfter("pass1", t, "text to put after t");} + tokens.insertAfter("pass2", u, "text after u");} + System.out.println(tokens.toString("pass1")); + System.out.println(tokens.toString("pass2")); + + If you don't use named rewrite streams, a "default" stream is used as + the first example shows. + + + What index into rewrites List are we? + + + Token buffer index. + + + + Execute the rewrite operation by possibly adding to the buffer. + Return the index of the next token to operate on. + + + + + I'm going to try replacing range from x..y with (y-x)+1 ReplaceOp + instructions. + + + + + You may have multiple, named streams of rewrite operations. + I'm calling these things "programs." + Maps String (name) -> rewrite (List) + + + + Map String (program name) -> Integer index + + + + Rollback the instruction stream for a program so that + the indicated instruction (via instructionIndex) is no + longer in the stream. UNTESTED! + + + + Reset the program so that no instructions exist + + + We need to combine operations and report invalid operations (like + overlapping replaces that are not completed nested). Inserts to + same index need to be combined etc... Here are the cases: + + I.i.u I.j.v leave alone, nonoverlapping + I.i.u I.i.v combine: Iivu + + R.i-j.u R.x-y.v | i-j in x-y delete first R + R.i-j.u R.i-j.v delete first R + R.i-j.u R.x-y.v | x-y in i-j ERROR + R.i-j.u R.x-y.v | boundaries overlap ERROR + + Delete special case of replace (text==null): + D.i-j.u D.x-y.v | boundaries overlap combine to max(min)..max(right) + + I.i.u R.x-y.v | i in (x+1)-y delete I (since insert before + we're not deleting i) + I.i.u R.x-y.v | i not in (x+1)-y leave alone, nonoverlapping + R.x-y.v I.i.u | i in x-y ERROR + R.x-y.v I.x.u R.x-y.uv (combine, delete I) + R.x-y.v I.i.u | i not in x-y leave alone, nonoverlapping + + I.i.u = insert u before op @ index i + R.x-y.u = replace x-y indexed tokens with u + + First we need to examine replaces. For any replace op: + + 1. wipe out any insertions before op within that range. + 2. Drop any replace op before that is contained completely within + that range. + 3. Throw exception upon boundary overlap with any previous replace. + + Then we can deal with inserts: + + 1. for any inserts to same index, combine even if not adjacent. + 2. for any prior replace with same left boundary, combine this + insert with replace and delete this replace. + 3. throw exception if index in same range as previous replace + + Don't actually delete; make op null in list. Easier to walk list. + Later we can throw as we add to index -> op map. + + Note that I.2 R.2-2 will wipe out I.2 even though, technically, the + inserted stuff would be before the replace range. But, if you + add tokens in front of a method body '{' and then delete the method + body, I think the stuff before the '{' you added should disappear too. + + Return a map from token index to operation. + + + Get all operations before an index of a particular kind + + + + In an action, a lexer rule can set token to this SKIP_TOKEN and ANTLR + will avoid creating a token for this symbol and try to fetch another. + + + + imaginary tree navigation type; traverse "get child" link + + + imaginary tree navigation type; finish with a child list + + + + A generic tree implementation with no payload. You must subclass to + actually have any user data. ANTLR v3 uses a list of children approach + instead of the child-sibling approach in v2. A flat tree (a list) is + an empty node whose children represent the list. An empty, but + non-null node is called "nil". + + + + + Create a new node from an existing node does nothing for BaseTree + as there are no fields other than the children list, which cannot + be copied as the children are not considered part of this node. + + + + + Get the children internal List; note that if you directly mess with + the list, do so at your own risk. + + + + BaseTree doesn't track parent pointers. + + + BaseTree doesn't track child indexes. + + + Add t as child of this node. + + + Warning: if t has no children, but child does + and child isNil then this routine moves children to t via + t.children = child.children; i.e., without copying the array. + + + + Add all elements of kids list as children of this node + + + Insert child t at child position i (0..n-1) by shifting children + i+1..n-1 to the right one position. Set parent / indexes properly + but does NOT collapse nil-rooted t's that come in here like addChild. + + + + Delete children from start to stop and replace with t even if t is + a list (nil-root tree). num of children can increase or decrease. + For huge child lists, inserting children can force walking rest of + children to set their childindex; could be slow. + + + + Override in a subclass to change the impl of children list + + + Set the parent and child index values for all child of t + + + Walk upwards looking for ancestor with this token type. + + + Walk upwards and get first ancestor with this token type. + + + + Return a list of all ancestors of this node. The first node of + list is the root and the last is the parent of this node. + + + + Print out a whole tree not just a node + + + Override to say how a node (not a tree) should look as text + + + A TreeAdaptor that works with any Tree implementation. + + + + System.identityHashCode() is not always unique; we have to + track ourselves. That's ok, it's only for debugging, though it's + expensive: we have to create a hashtable with all tree nodes in it. + + + + + Create tree node that holds the start and stop tokens associated + with an error. + + + + If you specify your own kind of tree nodes, you will likely have to + override this method. CommonTree returns Token.INVALID_TOKEN_TYPE + if no token payload but you might have to set token type for diff + node type. + + You don't have to subclass CommonErrorNode; you will likely need to + subclass your own tree node class to avoid class cast exception. + + + + + This is generic in the sense that it will work with any kind of + tree (not just ITree interface). It invokes the adaptor routines + not the tree node routines to do the construction. + + + + + Add a child to the tree t. If child is a flat tree (a list), make all + in list children of t. Warning: if t has no children, but child does + and child isNil then you can decide it is ok to move children to t via + t.children = child.children; i.e., without copying the array. Just + make sure that this is consistent with have the user will build + ASTs. + + + + + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + old=^(nil a b c), new=r yields ^(r a b c) + old=^(a b c), new=r yields ^(r ^(a b c)) + + If newRoot is a nil-rooted single child tree, use the single + child as the new root node. + + old=^(nil a b c), new=^(nil r) yields ^(r a b c) + old=^(a b c), new=^(nil r) yields ^(r ^(a b c)) + + If oldRoot was null, it's ok, just return newRoot (even if isNil). + + old=null, new=r yields r + old=null, new=^(nil r) yields ^(nil r) + + Return newRoot. Throw an exception if newRoot is not a + simple node or nil root with a single child node--it must be a root + node. If newRoot is ^(nil x) return x as newRoot. + + Be advised that it's ok for newRoot to point at oldRoot's + children; i.e., you don't have to copy the list. We are + constructing these nodes so we should have this control for + efficiency. + + + + Transform ^(nil x) to x and nil to null + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + This is a variant of createToken where the new token is derived from + an actual real input token. Typically this is for converting '{' + tokens to BLOCK etc... You'll see + + r : lc='{' ID+ '}' -> ^(BLOCK[$lc] ID+) ; + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Duplicate a node. This is part of the factory; + override if you want another kind of node to be built. + + + + I could use reflection to prevent having to override this + but reflection is slow. + + + + + Track start/stop token for subtree root created for a rule. + Only works with Tree nodes. For rules that match nothing, + seems like this will yield start=i and stop=i-1 in a nil node. + Might be useful info so I'll not force to be i..i. + + + + A buffered stream of tree nodes. Nodes can be from a tree of ANY kind. + + This node stream sucks all nodes out of the tree specified in + the constructor during construction and makes pointers into + the tree using an array of Object pointers. The stream necessarily + includes pointers to DOWN and UP and EOF nodes. + + This stream knows how to mark/release for backtracking. + + This stream is most suitable for tree interpreters that need to + jump around a lot or for tree parsers requiring speed (at cost of memory). + There is some duplicated functionality here with UnBufferedTreeNodeStream + but just in bookkeeping, not tree walking etc... + + TARGET DEVELOPERS: + + This is the old CommonTreeNodeStream that buffered up entire node stream. + No need to implement really as new CommonTreeNodeStream is much better + and covers what we need. + + @see CommonTreeNodeStream + + + The complete mapping from stream index to tree node. + This buffer includes pointers to DOWN, UP, and EOF nodes. + It is built upon ctor invocation. The elements are type + Object as we don't what the trees look like. + + Load upon first need of the buffer so we can set token types + of interest for reverseIndexing. Slows us down a wee bit to + do all of the if p==-1 testing everywhere though. + + + Pull nodes from which tree? + + + IF this tree (root) was created from a token stream, track it. + + + What tree adaptor was used to build these trees + + + Reuse same DOWN, UP navigation nodes unless this is true + + + The index into the nodes list of the current node (next node + to consume). If -1, nodes array not filled yet. + + + Track the last mark() call result value for use in rewind(). + + + Stack of indexes used for push/pop calls + + + Walk tree with depth-first-search and fill nodes buffer. + Don't do DOWN, UP nodes if its a list (t is isNil). + + + What is the stream index for node? 0..n-1 + Return -1 if node not found. + + + As we flatten the tree, we use UP, DOWN nodes to represent + the tree structure. When debugging we need unique nodes + so instantiate new ones when uniqueNavigationNodes is true. + + + Look backwards k nodes + + + + Make stream jump to a new location, saving old location. + Switch back with pop(). + + + + + Seek back to previous index saved during last push() call. + Return top of stack (return index). + + + + Used for testing, just return the token type stream + + + Debugging + + + A node representing erroneous token range in token stream + + + + A tree node that is wrapper for a Token object. After 3.0 release + while building tree rewrite stuff, it became clear that computing + parent and child index is very difficult and cumbersome. Better to + spend the space in every tree node. If you don't want these extra + fields, it's easy to cut them out in your own BaseTree subclass. + + + + A single token is the payload + + + + What token indexes bracket all tokens associated with this node + and below? + + + + Who is the parent node of this node; if null, implies node is root + + + What index is this node in the child list? Range: 0..n-1 + + + + For every node in this subtree, make sure it's start/stop token's + are set. Walk depth first, visit bottom up. Only updates nodes + with at least one token index < 0. + + + + + A TreeAdaptor that works with any Tree implementation. It provides + really just factory methods; all the work is done by BaseTreeAdaptor. + If you would like to have different tokens created than ClassicToken + objects, you need to override this and then set the parser tree adaptor to + use your subclass. + + + + To get your parser to build nodes of a different type, override + create(Token), errorNode(), and to be safe, YourTreeClass.dupNode(). + dupNode is called to duplicate nodes during rewrite operations. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + Tell me how to create a token for use with imaginary token nodes. + For example, there is probably no input symbol associated with imaginary + token DECL, but you need to create it as a payload or whatever for + the DECL node as in ^(DECL type ID). + + + + This is a variant of createToken where the new token is derived from + an actual real input token. Typically this is for converting '{' + tokens to BLOCK etc... You'll see + + r : lc='{' ID+ '}' -> ^(BLOCK[$lc] ID+) ; + + If you care what the token payload objects' type is, you should + override this method and any other createToken variant. + + + + + What is the Token associated with this node? If + you are not using CommonTree, then you must + override this in your own adaptor. + + + + Pull nodes from which tree? + + + If this tree (root) was created from a token stream, track it. + + + What tree adaptor was used to build these trees + + + The tree iterator we are using + + + Stack of indexes used for push/pop calls + + + Tree (nil A B C) trees like flat A B C streams + + + Tracks tree depth. Level=0 means we're at root node level. + + + Tracks the last node before the start of {@link #data} which contains + position information to provide information for error reporting. This is + tracked in addition to {@link #prevElement} which may or may not contain + position information. + + @see #hasPositionInformation + @see RecognitionException#extractInformationFromTreeNodeStream + + + Make stream jump to a new location, saving old location. + Switch back with pop(). + + + Seek back to previous index saved during last push() call. + Return top of stack (return index). + + + Returns an element containing position information. If {@code allowApproximateLocation} is {@code false}, then + this method will return the {@code LT(1)} element if it contains position information, and otherwise return {@code null}. + If {@code allowApproximateLocation} is {@code true}, then this method will return the last known element containing position information. + + @see #hasPositionInformation + + + For debugging; destructive: moves tree iterator to end. + + + A utility class to generate DOT diagrams (graphviz) from + arbitrary trees. You can pass in your own templates and + can pass in any kind of tree or use Tree interface method. + I wanted this separator so that you don't have to include + ST just to use the org.antlr.runtime.tree.* package. + This is a set of non-static methods so you can subclass + to override. For example, here is an invocation: + + CharStream input = new ANTLRInputStream(System.in); + TLexer lex = new TLexer(input); + CommonTokenStream tokens = new CommonTokenStream(lex); + TParser parser = new TParser(tokens); + TParser.e_return r = parser.e(); + Tree t = (Tree)r.tree; + System.out.println(t.toStringTree()); + DOTTreeGenerator gen = new DOTTreeGenerator(); + StringTemplate st = gen.toDOT(t); + System.out.println(st); + + + Track node to number mapping so we can get proper node name back + + + Track node number so we can get unique node names + + + Generate DOT (graphviz) for a whole tree not just a node. + For example, 3+4*5 should generate: + + digraph { + node [shape=plaintext, fixedsize=true, fontsize=11, fontname="Courier", + width=.4, height=.2]; + edge [arrowsize=.7] + "+"->3 + "+"->"*" + "*"->4 + "*"->5 + } + + Takes a Tree interface object. + + + + @author Sam Harwell + + + Returns an element containing concrete information about the current + position in the stream. + + @param allowApproximateLocation if {@code false}, this method returns + {@code null} if an element containing exact information about the current + position is not available + + + Determines if the specified {@code element} contains concrete position + information. + + @param element the element to check + @return {@code true} if {@code element} contains concrete position + information, otherwise {@code false} + + + + What does a tree look like? ANTLR has a number of support classes + such as CommonTreeNodeStream that work on these kinds of trees. You + don't have to make your trees implement this interface, but if you do, + you'll be able to use more support code. + + + + NOTE: When constructing trees, ANTLR can build any kind of tree; it can + even use Token objects as trees if you add a child list to your tokens. + + This is a tree node without any payload; just navigation and factory stuff. + + + + Is there is a node above with token type ttype? + + + Walk upwards and get first ancestor with this token type. + + + + Return a list of all ancestors of this node. The first node of + list is the root and the last is the parent of this node. + + + + This node is what child index? 0..n-1 + + + Set the parent and child index values for all children + + + + Add t as a child to this node. If t is null, do nothing. If t + is nil, add all children of t to this' children. + + + + Set ith child (0..n-1) to t; t must be non-null and non-nil node + + + + Delete children from start to stop and replace with t even if t is + a list (nil-root tree). num of children can increase or decrease. + For huge child lists, inserting children can force walking rest of + children to set their childindex; could be slow. + + + + + Indicates the node is a nil node but may still have children, meaning + the tree is a flat list. + + + + + What is the smallest token index (indexing from 0) for this node + and its children? + + + + + What is the largest token index (indexing from 0) for this node + and its children? + + + + Return a token type; needed for tree parsing + + + In case we don't have a token payload, what is the line for errors? + + + + How to create and navigate trees. Rather than have a separate factory + and adaptor, I've merged them. Makes sense to encapsulate. + + + + This takes the place of the tree construction code generated in the + generated code in 2.x and the ASTFactory. + + I do not need to know the type of a tree at all so they are all + generic Objects. This may increase the amount of typecasting needed. :( + + + + + Create a tree node from Token object; for CommonTree type trees, + then the token just becomes the payload. This is the most + common create call. + + + + Override if you want another kind of node to be built. + + + + + Create a new node derived from a token, with a new token type. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG[$tokenLabel]. + + + + This should invoke createToken(Token). + + + + + Same as create(tokenType,fromToken) except set the text too. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG[$tokenLabel, "IMAG"]. + + + + This should invoke createToken(Token). + + + + + Same as create(fromToken) except set the text too. + This is invoked when the text terminal option is set, as in + IMAG<text='IMAG'>. + + + + This should invoke createToken(Token). + + + + + Create a new node derived from a token, with a new token type. + This is invoked from an imaginary node ref on right side of a + rewrite rule as IMAG["IMAG"]. + + + + This should invoke createToken(int,String). + + + + Duplicate a single tree node. + Override if you want another kind of node to be built. + + + Duplicate tree recursively, using dupNode() for each node + + + + Return a nil node (an empty but non-null node) that can hold + a list of element as the children. If you want a flat tree (a list) + use "t=adaptor.nil(); t.addChild(x); t.addChild(y);" + + + + + Return a tree node representing an error. This node records the + tokens consumed during error recovery. The start token indicates the + input symbol at which the error was detected. The stop token indicates + the last symbol consumed during recovery. + + + + You must specify the input stream so that the erroneous text can + be packaged up in the error node. The exception could be useful + to some applications; default implementation stores ptr to it in + the CommonErrorNode. + + This only makes sense during token parsing, not tree parsing. + Tree parsing should happen only when parsing and tree construction + succeed. + + + + Is tree considered a nil node used to make lists of child nodes? + + + + Add a child to the tree t. If child is a flat tree (a list), make all + in list children of t. Warning: if t has no children, but child does + and child isNil then you can decide it is ok to move children to t via + t.children = child.children; i.e., without copying the array. Just + make sure that this is consistent with have the user will build + ASTs. Do nothing if t or child is null. + + + + + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + old=^(nil a b c), new=r yields ^(r a b c) + old=^(a b c), new=r yields ^(r ^(a b c)) + + If newRoot is a nil-rooted single child tree, use the single + child as the new root node. + + old=^(nil a b c), new=^(nil r) yields ^(r a b c) + old=^(a b c), new=^(nil r) yields ^(r ^(a b c)) + + If oldRoot was null, it's ok, just return newRoot (even if isNil). + + old=null, new=r yields r + old=null, new=^(nil r) yields ^(nil r) + + Return newRoot. Throw an exception if newRoot is not a + simple node or nil root with a single child node--it must be a root + node. If newRoot is ^(nil x) return x as newRoot. + + Be advised that it's ok for newRoot to point at oldRoot's + children; i.e., you don't have to copy the list. We are + constructing these nodes so we should have this control for + efficiency. + + + + + Given the root of the subtree created for this rule, post process + it to do any simplifications or whatever you want. A required + behavior is to convert ^(nil singleSubtree) to singleSubtree + as the setting of start/stop indexes relies on a single non-nil root + for non-flat trees. + + + + Flat trees such as for lists like "idlist : ID+ ;" are left alone + unless there is only one ID. For a list, the start/stop indexes + are set in the nil node. + + This method is executed after all rule tree construction and right + before setTokenBoundaries(). + + + + For identifying trees. + + + How to identify nodes so we can say "add node to a prior node"? + Even becomeRoot is an issue. Use System.identityHashCode(node) + usually. + + + + + Create a node for newRoot make it the root of oldRoot. + If oldRoot is a nil root, just copy or move the children to newRoot. + If not a nil root, make oldRoot a child of newRoot. + + + + Return node created for newRoot. + + + + Be advised: when debugging ASTs, the DebugTreeAdaptor manually + calls create(Token child) and then plain becomeRoot(node, node) + because it needs to trap calls to create, but it can't since it delegates + to not inherits from the TreeAdaptor. + + + + For tree parsing, I need to know the token type of a node + + + Node constructors can set the type of a node + + + Node constructors can set the text of a node + + + + Return the token object from which this node was created. + Currently used only for printing an error message. + The error display routine in BaseRecognizer needs to + display where the input the error occurred. If your + tree of limitation does not store information that can + lead you to the token, you can create a token filled with + the appropriate information and pass that back. See + BaseRecognizer.getErrorMessage(). + + + + + Where are the bounds in the input token stream for this node and + all children? Each rule that creates AST nodes will call this + method right before returning. Flat trees (i.e., lists) will + still usually have a nil root node just to hold the children list. + That node would contain the start/stop indexes then. + + + + Get the token start index for this subtree; return -1 if no such index + + + Get the token stop index for this subtree; return -1 if no such index + + + Get a child 0..n-1 node + + + Set ith child (0..n-1) to t; t must be non-null and non-nil node + + + Remove ith child and shift children down from right. + + + How many children? If 0, then this is a leaf node + + + + Who is the parent node of this node; if null, implies node is root. + If your node type doesn't handle this, it's ok but the tree rewrites + in tree parsers need this functionality. + + + + + What index is this node in the child list? Range: 0..n-1 + If your node type doesn't handle this, it's ok but the tree rewrites + in tree parsers need this functionality. + + + + + Replace from start to stop child index of parent with t, which might + be a list. Number of children may be different after this call. + + + + If parent is null, don't do anything; must be at root of overall tree. + Can't replace whatever points to the parent externally. Do nothing. + + + + A stream of tree nodes, accessing nodes from a tree of some kind + + + + Get a tree node at an absolute index i; 0..n-1. + If you don't want to buffer up nodes, then this method makes no + sense for you. + + + + + Get tree node at current input pointer + ahead where + ==1 is next node. <0 indicates nodes in the past. So + {@code LT(-1)} is previous node, but implementations are not required to + provide results for < -1. {@code LT(0)} is undefined. For + <=n, return . Return for {@code LT(0)} + and any index that results in an absolute address that is negative. + + + + This is analogous to , but this returns a tree node + instead of a . Makes code generation identical for both + parser and tree grammars. + + + + + Where is this stream pulling nodes from? This is not the name, but + the object that provides node objects. + + + + + If the tree associated with this stream was created from a + {@link TokenStream}, you can specify it here. Used to do rule + {@code $text} attribute in tree parser. Optional unless you use tree + parser rule {@code $text} attribute or {@code output=template} and + {@code rewrite=true} options. + + + + + What adaptor can tell me how to interpret/navigate nodes and + trees. E.g., get text of a node. + + + + + As we flatten the tree, we use {@link Token#UP}, {@link Token#DOWN} nodes + to represent the tree structure. When debugging we need unique nodes so + we have to instantiate new ones. When doing normal tree parsing, it's + slow and a waste of memory to create unique navigation nodes. Default + should be {@code false}. + + + + + Return the text of all nodes from {@code start} to {@code stop}, + inclusive. If the stream does not buffer all the nodes then it can still + walk recursively from start until stop. You can always return + {@code null} or {@code ""} too, but users should not access + {@code $ruleLabel.text} in an action of course in that case. + + + + + Replace children of {@code parent} from index {@code startChildIndex} to + {@code stopChildIndex} with {@code t}, which might be a list. Number of + children may be different after this call. The stream is notified because + it is walking the tree and might need to know you are monkeying with the + underlying tree. Also, it might be able to modify the node stream to + avoid restreaming for future phases. + + + + If {@code parent} is {@code null}, don't do anything; must be at root of + overall tree. Can't replace whatever points to the parent externally. Do + nothing. + + + + + How to execute code for node t when a visitor visits node t. Execute + pre() before visiting children and execute post() after visiting children. + + + + + Execute an action before visiting children of t. Return t or + a rewritten t. It is up to the visitor to decide what to do + with the return value. Children of returned value will be + visited if using TreeVisitor.visit(). + + + + + Execute an action after visiting children of t. Return t or + a rewritten t. It is up to the visitor to decide what to do + with the return value. + + + + + A record of the rules used to match a token sequence. The tokens + end up as the leaves of this tree and rule nodes are the interior nodes. + This really adds no functionality, it is just an alias for CommonTree + that is more meaningful (specific) and holds a String to display for a node. + + + + + Emit a token and all hidden nodes before. EOF node holds all + hidden tokens after last real token. + + + + + Print out the leaves of this tree, which means printing original + input back out. + + + + + Base class for all exceptions thrown during AST rewrite construction. + This signifies a case where the cardinality of two or more elements + in a subrule are different: (ID INT)+ where |ID|!=|INT| + + + + No elements within a (...)+ in a rewrite rule + + + Ref to ID or expr but no tokens in ID stream or subtrees in expr stream + + + + A generic list of elements tracked in an alternative to be used in + a -> rewrite rule. We need to subclass to fill in the next() method, + which returns either an AST node wrapped around a token payload or + an existing subtree. + + + + Once you start next()ing, do not try to add more elements. It will + break the cursor tracking I believe. + + TODO: add mechanism to detect/puke on modification after reading from stream + + + + + + + + Cursor 0..n-1. If singleElement!=null, cursor is 0 until you next(), + which bumps it to 1 meaning no more elements. + + + + Track single elements w/o creating a list. Upon 2nd add, alloc list + + + The list of tokens or subtrees we are tracking + + + Once a node / subtree has been used in a stream, it must be dup'd + from then on. Streams are reset after subrules so that the streams + can be reused in future subrules. So, reset must set a dirty bit. + If dirty, then next() always returns a dup. + + + The element or stream description; usually has name of the token or + rule reference that this list tracks. Can include rulename too, but + the exception would track that info. + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + + Reset the condition of this stream so that it appears we have + not consumed any of its elements. Elements themselves are untouched. + Once we reset the stream, any future use will need duplicates. Set + the dirty bit. + + + + + Return the next element in the stream. If out of elements, throw + an exception unless size()==1. If size is 1, then return elements[0]. + Return a duplicate node/subtree if stream is out of elements and + size==1. If we've already used the element, dup (dirty bit set). + + + + + Do the work of getting the next element, making sure that it's + a tree node or subtree. Deal with the optimization of single- + element list versus list of size > 1. Throw an exception + if the stream is empty or we're out of elements and size>1. + protected so you can override in a subclass if necessary. + + + + + When constructing trees, sometimes we need to dup a token or AST + subtree. Dup'ing a token means just creating another AST node + around it. For trees, you must call the adaptor.dupTree() unless + the element is for a tree root; then it must be a node dup. + + + + + Ensure stream emits trees; tokens must be converted to AST nodes. + AST nodes can be passed through unmolested. + + + + + Queues up nodes matched on left side of -> in a tree parser. This is + the analog of RewriteRuleTokenStream for normal parsers. + + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + + Treat next element as a single node even if it's a subtree. + This is used instead of next() when the result has to be a + tree root node. Also prevents us from duplicating recently-added + children; e.g., ^(type ID)+ adds ID to type and then 2nd iteration + must dup the type node, but ID has been added. + + + + Referencing a rule result twice is ok; dup entire tree as + we can't be adding trees as root; e.g., expr expr. + + Hideous code duplication here with super.next(). Can't think of + a proper way to refactor. This needs to always call dup node + and super.next() doesn't know which to call: dup node or dup tree. + + + + Create a stream with one element + + + Create a stream, but feed off an existing list + + + Get next token from stream and make a node for it + + + + Don't convert to a tree unless they explicitly call nextTree. + This way we can do hetero tree nodes in rewrite. + + + + Return a node stream from a doubly-linked tree whose nodes + know what child index they are. No remove() is supported. + + Emit navigation nodes (DOWN, UP, and EOF) to let show tree structure. + + + If we emit UP/DOWN nodes, we need to spit out multiple nodes per + next() call. + + + + A parser for a stream of tree nodes. "tree grammars" result in a subclass + of this. All the error reporting and recovery is shared with Parser via + the BaseRecognizer superclass. + + + + Set the input stream + + + + Match '.' in tree parser has special meaning. Skip node or + entire tree if node has children. If children, scan until + corresponding UP node. + + + + + We have DOWN/UP nodes in the stream that have no line info; override. + plus we want to alter the exception type. Don't try to recover + from tree parser errors inline... + + + + + Prefix error message with the grammar name because message is + always intended for the programmer because the parser built + the input tree not the user. + + + + + Tree parsers parse nodes they usually have a token object as + payload. Set the exception token and do the default behavior. + + + + The tree pattern to lex like "(A B C)" + + + Index into input string + + + Current char + + + How long is the pattern in char? + + + Set when token type is ID or ARG (name mimics Java's StreamTokenizer) + + + Override this if you need transformation tracing to go somewhere + other than stdout or if you're not using ITree-derived trees. + + + + This is identical to the ParserRuleReturnScope except that + the start property is a tree nodes not Token object + when you are parsing trees. + + + + Gets the first node or root node of tree matched for this rule. + + + Do a depth first walk of a tree, applying pre() and post() actions as we go. + + + + Visit every node in tree t and trigger an action for each node + before/after having visited all of its children. Bottom up walk. + Execute both actions even if t has no children. Ignore return + results from transforming children since they will have altered + the child list of this node (their parent). Return result of + applying post action to this node. + + + + + Build and navigate trees with this object. Must know about the names + of tokens so you have to pass in a map or array of token names (from which + this class can build the map). I.e., Token DECL means nothing unless the + class can translate it to a token type. + + + + In order to create nodes and navigate, this class needs a TreeAdaptor. + + This class can build a token type -> node index for repeated use or for + iterating over the various nodes with a particular type. + + This class works in conjunction with the TreeAdaptor rather than moving + all this functionality into the adaptor. An adaptor helps build and + navigate trees using methods. This class helps you do it with string + patterns like "(A B C)". You can create a tree from that pattern or + match subtrees against it. + + + + + When using %label:TOKENNAME in a tree for parse(), we must + track the label. + + + + This adaptor creates TreePattern objects for use during scan() + + + + Compute a Map<String, Integer> that is an inverted index of + tokenNames (which maps int token types to names). + + + + Using the map of token names to token types, return the type. + + + + Walk the entire tree and make a node name to nodes mapping. + For now, use recursion but later nonrecursive version may be + more efficient. Returns Map<Integer, List> where the List is + of your AST node type. The Integer is the token type of the node. + + + + TODO: save this index so that find and visit are faster + + + + Do the work for index + + + Return a List of tree nodes with token type ttype + + + Return a List of subtrees matching pattern. + + + + Visit every ttype node in t, invoking the visitor. This is a quicker + version of the general visit(t, pattern) method. The labels arg + of the visitor action method is never set (it's null) since using + a token type rather than a pattern doesn't let us set a label. + + + + Do the recursive work for visit + + + + For all subtrees that match the pattern, execute the visit action. + The implementation uses the root node of the pattern in combination + with visit(t, ttype, visitor) so nil-rooted patterns are not allowed. + Patterns with wildcard roots are also not allowed. + + + + + Given a pattern like (ASSIGN %lhs:ID %rhs:.) with optional labels + on the various nodes and '.' (dot) as the node/subtree wildcard, + return true if the pattern matches and fill the labels Map with + the labels pointing at the appropriate nodes. Return false if + the pattern is malformed or the tree does not match. + + + + If a node specifies a text arg in pattern, then that must match + for that node in t. + + TODO: what's a better way to indicate bad pattern? Exceptions are a hassle + + + + + Do the work for parse. Check to see if the t2 pattern fits the + structure and token types in t1. Check text if the pattern has + text arguments on nodes. Fill labels map with pointers to nodes + in tree matched against nodes in pattern with labels. + + + + + Create a tree or node from the indicated tree pattern that closely + follows ANTLR tree grammar tree element syntax: + + (root child1 ... child2). + + + + You can also just pass in a node: ID + + Any node can have a text argument: ID[foo] + (notice there are no quotes around foo--it's clear it's a string). + + nil is a special name meaning "give me a nil node". Useful for + making lists: (nil A B C) is a list of A B C. + + + + + Compare t1 and t2; return true if token types/text, structure match exactly. + The trees are examined in their entirety so that (A B) does not match + (A B C) nor (A (B C)). + + + + TODO: allow them to pass in a comparator + TODO: have a version that is nonstatic so it can use instance adaptor + + I cannot rely on the tree node's equals() implementation as I make + no constraints at all on the node types nor interface etc... + + + + + Compare type, structure, and text of two trees, assuming adaptor in + this instance of a TreeWizard. + + + + A token stream that pulls tokens from the code source on-demand and + without tracking a complete buffer of the tokens. This stream buffers + the minimum number of tokens possible. It's the same as + OnDemandTokenStream except that OnDemandTokenStream buffers all tokens. + + You can't use this stream if you pass whitespace or other off-channel + tokens to the parser. The stream can't ignore off-channel tokens. + + You can only look backwards 1 token: LT(-1). + + Use this when you need to read from a socket or other infinite stream. + + @see BufferedTokenStream + @see CommonTokenStream + + + Skip tokens on any channel but this one; this is how we skip whitespace... + + + An extra token while parsing a TokenStream + + + diff --git a/packages/Common/Logic.ProductionToProductMapper.dll b/packages/Common/Logic.ProductionToProductMapper.dll new file mode 100644 index 000000000..28e87dee9 Binary files /dev/null and b/packages/Common/Logic.ProductionToProductMapper.dll differ diff --git a/packages/Common/Logic.ProductionToProductMapper.dll.config b/packages/Common/Logic.ProductionToProductMapper.dll.config new file mode 100644 index 000000000..e936cc132 --- /dev/null +++ b/packages/Common/Logic.ProductionToProductMapper.dll.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Common/Logic.ProductionToProductMapper.pdb b/packages/Common/Logic.ProductionToProductMapper.pdb new file mode 100644 index 000000000..0ef52929c Binary files /dev/null and b/packages/Common/Logic.ProductionToProductMapper.pdb differ diff --git a/packages/Common/MeterFilesEraseRestore.json b/packages/Common/MeterFilesEraseRestore.json new file mode 100644 index 000000000..0afde89a3 --- /dev/null +++ b/packages/Common/MeterFilesEraseRestore.json @@ -0,0 +1,19 @@ +{ + "Erase": [ + "1\\tstfile", + "1\\fdrdata", + "1\\logdata", + "1\\blklist", + "1\\mettable", + "1\\pulsedbg", + "1\\upg*", + "1\\img*" + ], + "Restore": [ + { + "Name": "1\\tstfile", + "ByteSize": 262144, + "Pattern": null + } + ] +} \ No newline at end of file diff --git a/packages/Common/NLog.dll b/packages/Common/NLog.dll new file mode 100644 index 000000000..4c1c5b5c5 Binary files /dev/null and b/packages/Common/NLog.dll differ diff --git a/packages/Common/NLog.xml b/packages/Common/NLog.xml new file mode 100644 index 000000000..b886eaa79 --- /dev/null +++ b/packages/Common/NLog.xml @@ -0,0 +1,28548 @@ + + + + NLog + + + + + Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be appplied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be appplied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without wating) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into + + Input value + Output value + Default value + Returns failure if the input value could not be parsed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + NLog internal logger. + + Writes to file, console or custom textwriter (see ) + + + Don't use as that can lead to recursive calls - stackoverflows + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the .Trace + + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged only when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + A message to write. + + Works when property set to true. + The is used in Debug and Release configuration. + The works only in Debug configuration and this is reason why is replaced by . + in DEBUG + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Gets the method parameters. + + The method parameters. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to maxint. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properies are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + NLog configuration section handler class for configuring NLog from App.config. + + + + + Creates a configuration section handler. + + Parent object. + Configuration context object. + Section XML node. + The created section handler object. + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwardscomp. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + The filepaths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Mapping between log levels and console output colors. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrecnces of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Flushes any pending log messages on all appenders. + + The asynchronous continuation. + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The orginal value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Enables loading of NLog configuration from a file + + + + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Arguments for . + + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + The exception during configuration reload. + + + + Gets a value indicating whether configuration reload has succeeded. + + A value of true if succeeded; otherwise, false. + + + + Gets the exception which occurred during configuration reload. + + The exception. + + + + Enables FileWatcher for the currently loaded NLog Configuration File, + and supports automatic reload on file modification. + + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrecnces of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + The type of the class marker attribute. + The type of the method marker attribute. + + + + Gets a collection of all registered items in the factory. + + + Sequence of key/value pairs where each key represents the name + of the item and value is the of + the item. + + + + + Scans the assembly for classes marked with + and methods marked with and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The input URI. + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for console logging so that all messages above and including + the level are output to the console. + + + + + Configures NLog for console logging so that all messages above and including + the specified level are output to the console. + + The minimal logging level. + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Stack trace should be captured including source-level information such as line numbers. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration + + + + + Gets the default object by parsing + the application configuration file (app.exe.config). + + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The filepaths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The filepaths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format.s + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + file or path, including .dll + basepath, optional + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Index of the first user stack frame within the stack trace. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Internal configuration manager used to read .NET configuration files. + Just a wrapper around the BCL ConfigurationManager, but used to enable + unit testing. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Adapter for to + + + + + Initializes a new instance of the class. + + The to wrap. + + + + Creates an AppDomainWrapper for the current + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the mutually-exclusive lock for archiving files. + + The mutex for archiving. + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates a mutex that is sharable by more than one process. + + The prefix to use for the name of the mutex. + A object which is sharable by multiple processes. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialisation as it is an + intenal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + The archive file path pattern that is used to detect when archiving occurs. + + + + + Invalidates appenders for all files that were archived. + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Fluch all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Gets or sets the file attributes (Windows only). + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Provides a multiprocess-safe atomic file appends while + keeping the files open. + + + On Unix you can get all the appends to be atomic, even when multiple + processes are trying to write to the same file, because setting the file + pointer to the end of the file and appending can be made one operation. + On Win32 we need to maintain some synchronization between processes + (global named mutex is used for this) + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Closes this instance. + + + + + Flushes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Provides a multiprocess-safe atomic file append while + keeping the files open. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Creates or opens a file in a special mode, so that writes are automatically + as atomic writes at the file end. + See also "UnixMultiProcessFileAppender" which does a similar job on *nix platforms. + + File to create or open + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Closes this instance. + + + + + Flushes this instance. + + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + An immutable object that stores basic file info. + + + + + Constructs a FileCharacteristics object. + + The time the file was created in UTC. + The time the file was last written to in UTC. + The size of the file in bytes. + + + + The time the file was created in UTC. + + + + + The time the file was last written to in UTC. + + + + + The size of the file in bytes. + + + + + Optimized routines to get the basic file characteristics of the specified file. + + + + + Initializes static members of the FileCharacteristicsHelper class. + + + + + Gets the information about a file. + + Name of the file. + The file stream. + The file characteristics, if the file information was retrieved successfully, otherwise null. + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Cached invalid filenames char array to avoid memory allocation everytime Path.GetInvalidFileNameChars() is called. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Interface for the wrapper around System.Configuration.ConfigurationManager. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports mocking of SMTP Client code. + + + + + Specifies how outgoing email messages will be handled. + + + + + Gets or sets the name or IP address of the host used for SMTP transactions. + + + + + Gets or sets the port used for SMTP transactions. + + + + + Gets or sets a value that specifies the amount of time after which a synchronous Send call times out. + + + + + Gets or sets the credentials used to authenticate the sender. + + + + + Sends an e-mail message to an SMTP server for delivery. These methods block while the message is being transmitted. + + + System.Net.Mail.MailMessage + MailMessage + A MailMessage that contains the message to send. + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Watches multiple files at the same time and raises an event whenever + a single change is detected in any of those files. + + + + + The types of changes to watch for. + + + + + Occurs when a change is detected in one of the monitored files. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Stops watching all files. + + + + + Stops watching the specified file. + + + + + + Watches the specified files for changes. + + The file names. + + + + Supports mocking of SMTP Client code. + + + Disabled Error CS0618 'SmtpClient' is obsolete: 'SmtpClient and its network of types are poorly designed, + we strongly recommend you use https://github.com/jstedfast/MailKit and https://github.com/jstedfast/MimeKit instead' + + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + SSL protcols for TCP + KeepAliveTime for TCP + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendToAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Sends messages over the network as UDP datagrams. + + + + + Initializes a new instance of the class. + + URL. Must start with udp://. + The address family. + + + + Creates the socket. + + The address family. + Type of the socket. + Type of the protocol. + Implementation of to use. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Sends the specified text as a UDP datagram. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Binder for retrieving value of + + + + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Portable implementation of . + + + + + Gets the information about a file. + + Name of the file. + The file stream. + The file characteristics, if the file information was retrieved successfully, otherwise null. + + + + Portable implementation of . + + + + + Initializes a new instance of the class. + + + + + Gets current process ID. + + + + + + Gets current process name. + + + + + + Returns details about current process and thread in a portable manner. + + + + + Gets the singleton instance of PortableThreadIDHelper or + Win32ThreadIDHelper depending on runtime environment. + + The instance. + + + + Gets current process ID. + + + + + Gets current process absolute file path. + + + + + Gets current process name (excluding filename extension, if any). + + + + + Initializes the ThreadIDHelper class. + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Is the property of array-type? + + Type which has the property + name of the property. + + + + + Get propertyinfo + + object which could have property + propertyname on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + StackFrame from the calling method + Fully qualified class name + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid asssembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + formatstring. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split string with escape. The escape char is the same as the splitchar + + + split char. escaped also with this char + + + + + Split string with escape + + + + + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Win32-optimized implementation of . + + + + + Gets the information about a file. + + Name of the file. + The file stream. + The file characteristics, if the file information was retrieved successfully, otherwise null. + + + + Win32-optimized implementation of . + + + + + Initializes a new instance of the class. + + + + + Gets current process ID. + + + + + Gets current process absolute file path. + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Cleans string of any invalid XML chars found + + unclean string + string with only valid XML chars + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Used to render the application domain name. + + + + + Create a new renderer + + + + + Create a new renderer + + + + + Format string. Possible values: "Short", "Long" or custom like {0} {1}. Default "Long" + The first parameter is the , the second the second the + This string is used in + + + + + + + + + + + + + + + Application setting. + + + Use this layout renderer to insert the value of an application setting + stored in the application's App.config or Web.config file. + + + ${appsetting:item=mysetting:default=mydefault} - produces "mydefault" if no appsetting + + + + + The AppSetting item-name + + + + + + The AppSetting item-name + + + + + The default value to render if the AppSetting value is null. + + + + + + + + + Renders the specified application setting or default value and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets the assembly specified by , or entry assembly otherwise + + Found assembly + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + cached + + + + + Use base dir of current process. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source file name. Full callsite + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets a value indicating whether to render the source file name and line number. + + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source line number. Full callsite + + + + + Gets or sets the number of frames to skip. + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The environment variable. + + + + + Gets or sets the name of the environment variable. + + + + + + Gets or sets the default value to be used when the environment variable is not set. + + + + + + + + + + + + Thread identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets the default value to be used when the User is not set. + + + + + + Gets or sets the default value to be used when the Domain is not set. + + + + + + + + + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Create a new. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + The host name that the process is running on. + + + + + + + + Gets the host name and falls back to computer name if not available + + + + + Tries the lookup value. + + The lookup function. + Type of the lookup. + + + + + + + + Thread identity information (name and authentication information). + + + + + Gets or sets the separator to be used when concatenating + parts of identity information. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.Name. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.AuthenticationType. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.IsAuthenticated. + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registing to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback recieves the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the full level name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The machine name that the process is running on. + + + + + + + + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + Render a Mapped Diagnostic Logical Context item (based on CallContext). + See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested logical context output. + + + + + + Renders the specified Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Timing Renderer (Async scope) + + + + + Gets or sets whether to only include the duration of the last scope created + + + + + + Gets or sets whether to just display the scope creation time, and not the duration + + + + + + Gets or sets the TimeSpan format. Can be any argument accepted by TimeSpan.ToString(format). + + + + + + Renders the timing details of the Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The directory where NLog.dll is located. + + + + + Initializes static members of the NLogDirLayoutRenderer class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The performance counter. + + + + + Gets or sets the name of the counter category. + + + + + + Gets or sets the name of the performance counter. + + + + + + Gets or sets the name of the performance counter instance (e.g. this.Global_). + + + + + + Gets or sets the name of the machine to read the performance counter from. + + + + + + Format string for conversion from float to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + If having multiple instances with the same process-name, then they will get different instance names + + + + + + + + + + + The identifier of the current process. + + + + + + + + + + + The information about the running process. + + + + + Gets or sets the property to retrieve. + + + + + + Gets or sets the format-string to use if the property supports it (Ex. DateTime / TimeSpan / Enum) + + + + + + + + + + + + + + + Property of System.Diagnostics.Process to retrieve. + + + + + Base Priority. + + + + + Exit Code. + + + + + Exit Time. + + + + + Process Handle. + + + + + Handle Count. + + + + + Whether process has exited. + + + + + Process ID. + + + + + Machine name. + + + + + Handle of the main window. + + + + + Title of the main window. + + + + + Maximum Working Set. + + + + + Minimum Working Set. + + + + + Non-paged System Memory Size. + + + + + Non-paged System Memory Size (64-bit). + + + + + Paged Memory Size. + + + + + Paged Memory Size (64-bit).. + + + + + Paged System Memory Size. + + + + + Paged System Memory Size (64-bit). + + + + + Peak Paged Memory Size. + + + + + Peak Paged Memory Size (64-bit). + + + + + Peak Virtual Memory Size. + + + + + Peak Virtual Memory Size (64-bit).. + + + + + Peak Working Set Size. + + + + + Peak Working Set Size (64-bit). + + + + + Whether priority boost is enabled. + + + + + Priority Class. + + + + + Private Memory Size. + + + + + Private Memory Size (64-bit). + + + + + Privileged Processor Time. + + + + + Process Name. + + + + + Whether process is responding. + + + + + Session ID. + + + + + Process Start Time. + + + + + Total Processor Time. + + + + + User Processor Time. + + + + + Virtual Memory Size. + + + + + Virtual Memory Size (64-bit). + + + + + Working Set Size. + + + + + Working Set Size (64-bit). + + + + + The name of the current process. + + + + + Gets or sets a value indicating whether to write the full path to the process executable. + + + + + + Renders the current process name (optionally with a full path). + + The to append the rendered data to. + Logging event. + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + High precision timer, based on the value returned from QueryPerformanceCounter() optionally converted to seconds. + + + + + Gets or sets a value indicating whether to normalize the result by subtracting + it from the result of the first call (so that it's effectively zero-based). + + + + + + Gets or sets a value indicating whether to output the difference between the result + of QueryPerformanceCounter and the previous one. + + + + + + Gets or sets a value indicating whether to convert the result to seconds by dividing + by the result of QueryPerformanceFrequency(). + + + + + + Gets or sets the number of decimal digits to be included in output. + + + + + + Gets or sets a value indicating whether to align decimal point (emit non-significant zeros). + + + + + + + + + + + + A value from the Registry. + + + + + Create new renderer + + + + + Gets or sets the registry value name. + + + + + + Gets or sets the value to be output when the specified registry key or value is not found. + + + + + + Require escaping backward slashes in . Need to be backwards-compatible. + + When true: + + `\` in value should be configured as `\\` + `\\` in value should be configured as `\\\\`. + + Default value wasn't a Layout before and needed an escape of the slash + + + + + Gets or sets the registry view (see: https://msdn.microsoft.com/de-de/library/microsoft.win32.registryview.aspx). + Allowed values: Registry32, Registry64, Default + + + + + + Gets or sets the registry key. + + + HKCU\Software\NLogTest + + + Possible keys: +
    +
  • HKEY_LOCAL_MACHINE
  • +
  • HKLM
  • +
  • HKEY_CURRENT_USER
  • +
  • HKCU
  • +
  • HKEY_CLASSES_ROOT
  • +
  • HKEY_USERS
  • +
  • HKEY_CURRENT_CONFIG
  • +
  • HKEY_DYN_DATA
  • +
  • HKEY_PERFORMANCE_DATA
  • +
+
+ +
+ + + Reads the specified registry key and value and appends it to + the passed . + + The to append the rendered data to. + Logging event. Ignored. + + + + Has ? + + + + + Parse key to and subkey. + + full registry key name + Result of parsing, never null. + + + + Aliases for the hives. See https://msdn.microsoft.com/en-us/library/ctb3kd86(v=vs.110).aspx + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + System special folder path (includes My Documents, My Music, Program Files, Desktop, and more). + + + + + Gets or sets the system special folder to use. + + + Full list of options is available at MSDN. + The most common ones are: +
    +
  • ApplicationData - roaming application data for current user.
  • +
  • CommonApplicationData - application data for all users.
  • +
  • MyDocuments - My Documents
  • +
  • DesktopDirectory - Desktop directory
  • +
  • LocalApplicationData - non roaming application data
  • +
  • Personal - user profile directory
  • +
  • System - System directory
  • +
+
+ +
+ + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + A renderer that puts into log a System.Diagnostics trace correlation id. + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Thread Windows identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Renders the current thread windows identity information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + Notify when has been changed + + Change to private protected in C# 7.3 + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with columnnames will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + Value inside the element + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Xml Encode the value for the XML element + + Ensures always valid XML, but gives a performance hit + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the name of the current class and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Initializes static members of the LogManager class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatiblity. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the name of the current class. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the name of the current class. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the name of the current class. Use to pass the type of the needed Logger. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. Use to pass the type of the needed Logger. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Raises the event when the configuration is reloaded. + + Event arguments + + + + Currently this logfactory is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The filepaths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The filepaths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets the current logging configuration. + + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the name of the current class. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the name of the current class. Use to pass the type of the needed Logger. + + The logger class. The class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. Use to pass the type of the needed Logger. + + Name of the logger. + The logger class. The class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method reenables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Base implementation of a log receiver server which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Processes the log messages. + + The events to process. + + + + Processes the log messages. + + The log events. + + + + Service contract for Log Receiver client. + + This class marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver server. + + + + + Processes the log messages. + + The events. + + + + Service contract for Log Receiver server. + + + + + Processes the log messages. + + The events. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Client of + + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Gets the underlying implementation. + + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Instructs the inner channel to display a user interface if one is required to initialize the channel prior to using it. + + + + + Implementation of which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Implementation of which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Internal configuration of Log Receiver Service contracts. + + + + + Wire format for NLog Event. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the client-generated identifier of the event. + + + + + Gets or sets the ordinal of the log level. + + + + + Gets or sets the logger ordinal (index into . + + The logger ordinal. + + + + Gets or sets the time delta (in ticks) between the time of the event and base time. + + + + + Gets or sets the message string index. + + + + + Gets or sets the collection of layout values. + + + + + Gets the collection of indexes into array for each layout value. + + + + + Converts the to . + + The object this is part of.. + The logger name prefix to prepend in front of the logger name. + Converted . + + + + Wire format for NLog event package. + + + + + Gets or sets the name of the client. + + The name of the client. + + + + Gets or sets the base time (UTC ticks) for all events in the package. + + The base time UTC. + + + + Gets or sets the collection of layout names which are shared among all events. + + The layout names. + + + + Gets or sets the collection of logger names. + + The logger names. + + + + Gets or sets the list of events. + + The events. + + + + Converts the events to sequence of objects suitable for routing through NLog. + + The logger name prefix to prepend in front of each logger name. + + Sequence of objects. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + + Sequence of objects. + + + + + List of strings annotated for more terse serialization. + + + + + Initializes a new instance of the class. + + + + + Log Receiver Client using WCF. + + + This class marked as obsolete before NLog 4.3.11 and it will be removed in a future release. + + It provides an implementation of the legacy interface and it will be completely obsolete when the + ILogReceiverClient is removed. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client facade. It allows the use either of the one way or two way + service contract using WCF through its unified interface. + + + Delegating methods are generated with Resharper. + 1. change ProxiedClient to private field (instead of public property) + 2. delegate members + 3. change ProxiedClient back to public property. + + + + + + The client getting proxied + + + + + Do we use one-way or two-way messaging? + + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + The binding. + The remote address. + + + + Causes a communication object to transition immediately from its current state into the closed state. + + + + + Begins an asynchronous operation to close a communication object. + + + The that references the asynchronous close operation. + + The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The default timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to close a communication object with a specified timeout. + + + The that references the asynchronous close operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The specified timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to open a communication object. + + + The that references the asynchronous open operation. + + The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins an asynchronous operation to open a communication object within a specified interval of time. + + + The that references the asynchronous open operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Causes a communication object to transition from its current state into the closed state. + + The that specifies how long the send operation has to complete before timing out. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Causes a communication object to transition from its current state into the closed state. + + was called on an object in the state.The default close timeout elapsed before the was able to close gracefully. + + + + Closes the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Occurs when Close operation has completed. + + + + + Occurs when the communication object completes its transition from the closing state into the closed state. + + + + + Occurs when the communication object first enters the closing state. + + + + + Instructs the inner channel to display a user interface if one is required to initialize the channel prior to using it. + + + + + Completes an asynchronous operation to close a communication object. + + The that is returned by a call to the method. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Completes an asynchronous operation to open a communication object. + + The that is returned by a call to the method.The was unable to be opened and has entered the state.The timeout elapsed before the was able to enter the state and has entered the state. + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Occurs when the communication object first enters the faulted state. + + + + + Gets the underlying implementation. + + + + + Causes a communication object to transition from the created state into the opened state. + + The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Causes a communication object to transition from the created state into the opened state within a specified interval of time. + + The that specifies how long the send operation has to complete before timing out.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Occurs when Open operation has completed. + + + + + Occurs when the communication object completes its transition from the opening state into the opened state. + + + + + Occurs when the communication object first enters the opening state. + + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Occurs when the log message processing has completed. + + + + + Gets the current state of the communication-oriented object. + + + The value of the of the object. + + + + + Causes a communication object to transition from its current state into the closed state. + + + + + Abstract base class for the WcfLogReceiverXXXWay classes. It can only be + used internally (see internal constructor). It passes off any Channel usage + to the inheriting class. + + Type of the WCF service. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Async version of Mapped Diagnostics Context - a logical context structure that keeps a dictionary + of strings and provides methods to output them in layouts. Allows for maintaining state across + asynchronous tasks and call contexts. + + + Ideally, these changes should be incorporated as a new version of the MappedDiagnosticsContext class in the original + NLog library so that state can be maintained for multiple threads in asynchronous situations. + + + + + Simulate ImmutableDictionary behavior (which is not yet part of all .NET frameworks). + In future the real ImmutableDictionary could be used here to minimize memory usage and copying time. + + Must be true for any subsequent dictionary modification operation + Prepare dictionary for additional inserts + + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The to use when converting a value to a string. + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Returns all item names + + A collection of the names of all items in current logical context. + + + + Checks whether the specified exists in current logical context. + + Item name. + A boolean indicating whether the specified exists in current logical context. + + + + Removes the specified from current logical context. + + Item name. + + + + Clears the content of current logical context. + + + + + Clears the content of current logical context. + + Free the full slot. + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serialising a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Async version of - a logical context structure that keeps a stack + Allows for maintaining scope across asynchronous tasks and call contexts. + + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDLC stack. + + The top message which is no longer on the stack. + this methods returns a object instead of string, this because of backwardscompatibility + + + + Pops the top message from the NDLC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top message off the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the top object on the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the current scope, and returns its start time + + Scope Creation Time + + + + Peeks the first scope, and returns its start time + + Scope Creation Time + + + + Clears current stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + TraceListener which routes all messages through NLog. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the log factory to use when outputting messages (null - use LogManager). + + + + + Gets or sets the default log level. + + + + + Gets or sets the log which should be always used regardless of source level. + + + + + Gets or sets a value indicating whether flush calls from trace sources should be ignored. + + + + + Gets a value indicating whether the trace listener is thread safe. + + + true if the trace listener is thread safe; otherwise, false. The default is false. + + + + Gets or sets a value indicating whether to use auto logger name detected from the stack trace. + + + + + When overridden in a derived class, writes the specified message to the listener you create in the derived class. + + A message to write. + + + + When overridden in a derived class, writes a message to the listener you create in the derived class, followed by a line terminator. + + A message to write. + + + + When overridden in a derived class, closes the output stream so it no longer receives tracing or debugging output. + + + + + Emits an error message. + + A message to emit. + + + + Emits an error message and a detailed error message. + + A message to emit. + A detailed message to emit. + + + + Flushes the output (if is not true) buffer with the default timeout of 15 seconds. + + + + + Writes trace information, a data object and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + The trace data to emit. + + + + Writes trace information, an array of data objects and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + An array of objects to emit as data. + + + + Writes trace and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + + + + Writes trace information, a formatted array of objects and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + A format string that contains zero or more format items, which correspond to objects in the array. + An object array containing zero or more objects to format. + + + + Writes trace information, a message, and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + A message to write. + + + + Writes trace information, a message, a related activity identity and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + A numeric identifier for the event. + A message to write. + A object identifying a related activity. + + + + Gets the custom attributes supported by the trace listener. + + + A string array naming the custom attributes supported by the trace listener, or null if there are no custom attributes. + + + + + Translates the event type to level from . + + Type of the event. + Translated log level. + + + + Process the log event + The log level. + The name of the logger. + The log message. + The log parameters. + The event id. + The event type. + The related activity id. + + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Abstract Target with async Task support + + + + + How many milliseconds to delay the actual write operation to optimize for batching + + + + + How many seconds a Task is allowed to run before it is cancelled. + + + + + How many attempts to retry the same Task, before it is aborted + + + + + How many milliseconds to wait before next retry (will double with each retry) + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Task Scheduler used for processing async Tasks + + + + + Constructor + + + + + Initializes the internal queue for pending logevents + + + + + Override this to create the actual logging task + + Example of how to override this method, and call custom async method + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + return CustomWriteAsync(logEvent, token); + } + + private async Task CustomWriteAsync(LogEventInfo logEvent, CancellationToken token) + { + await MyLogMethodAsync(logEvent, token).ConfigureAwait(false); + } + + + The log event. + The cancellation token + + + + + Override this to create the actual logging task for handling batch of logevents + + A batch of logevents. + The cancellation token + + + + + Handle cleanup after failed write operation + + Exception from previous failed Task + The cancellation token + Number of retries remaining + Time to sleep before retrying + Should attempt retry + + + + Schedules the LogEventInfo for async writing + + The log event. + + + + Write to queue without locking + + + + + + Schedules notification of when all messages has been written + + + + + + Closes Target by updating CancellationToken + + + + + Releases any managed resources + + + + + + Checks the internal queue for the next to create a new task for + + Used for race-condition validation between task-completion and timeout + Signals whether previousTask completed an almost full BatchSize + + + + Generates recursive task-chain to perform retry of writing logevents with increasing retry-delay + + + + + Creates new task to handle the writing of the input + + LogEvents to write + New Task created [true / false] + + + + Handles that scheduled task has completed (successfully or failed), and starts the next pending task + + Task just completed + AsyncContinuation to notify of success or failure + + + + Timer method, that is fired when pending task fails to complete within timeout + + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Color formatting for using ANSI Color Codes + + + + + Not using bold to get light colors, as it has to be cleared + + + + + Not using bold to get light colors, as it has to be cleared (And because it only works for text, and not background) + + + + + Resets both foreground and background color. + + + + + ANSI have 8 color-codes (30-37) by default. The "bright" (or "intense") color-codes (90-97) are extended values not supported by all terminals + + + + + Color formatting for using + and + + + + + Writes log messages to the console with customizable coloring. + + Documentation on NLog Wiki + + + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default.In multithreaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether the error stream (stderr) should be used instead of the output stream (stdout). + + + + + + Gets or sets a value indicating whether to use default row highlighting rules. + + + The default rules are: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConditionForeground ColorBackground Color
level == LogLevel.FatalRedNoChange
level == LogLevel.ErrorYellowNoChange
level == LogLevel.WarnMagentaNoChange
level == LogLevel.InfoWhiteNoChange
level == LogLevel.DebugGrayNoChange
level == LogLevel.TraceDarkGrayNoChange
+
+ +
+ + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available. + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-check if the console has been redirected to file + - Disables coloring logic when System.Console.IsOutputRedirected = true + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + Enables output using ANSI Color Codes + + + + + + Gets the row highlighting rules. + + + + + + Gets the word highlighting rules. + + + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified log event to the console highlighting entries + and words based on a set of defined rules. + + Log event. + + + + Colored console output color. + + + Note that this enumeration is defined to be binary compatible with + .NET 2.0 System.ConsoleColor + some additions + + + + + Black Color (#000000). + + + + + Dark blue Color (#000080). + + + + + Dark green Color (#008000). + + + + + Dark Cyan Color (#008080). + + + + + Dark Red Color (#800000). + + + + + Dark Magenta Color (#800080). + + + + + Dark Yellow Color (#808000). + + + + + Gray Color (#C0C0C0). + + + + + Dark Gray Color (#808080). + + + + + Blue Color (#0000FF). + + + + + Green Color (#00FF00). + + + + + Cyan Color (#00FFFF). + + + + + Red Color (#FF0000). + + + + + Magenta Color (#FF00FF). + + + + + Yellow Color (#FFFF00). + + + + + White Color (#FFFFFF). + + + + + Don't change the color. + + + + + The row-highlighting condition. + + + + + Initializes static members of the ConsoleRowHighlightingRule class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The condition. + Color of the foreground. + Color of the background. + + + + Gets the default highlighting rule. Doesn't change the color. + + + + + Gets or sets the condition that must be met in order to set the specified foreground and background color. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Checks whether the specified log event matches the condition (if any). + + + Log event. + + + A value of if the condition is not defined or + if it matches, otherwise. + + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default.In multithreaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Gets or sets a value indicating whether to send the log messages to the standard error instead of the standard output. + + + + + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + Write to output + + text to be written. + + + + Highlighting rule for Win32 colorful console. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The text to be matched.. + Color of the foreground. + Color of the background. + + + + Gets or sets the regular expression to be matched. You must specify either text or regex. + + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets the text to be matched. You must specify either text or regex. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Gets the compiled regular expression that matches either Text or Regex property. Only used when is true. + + Access this property will compile the Regex. + + + + Get regex options. + + Default option to start with. + + + + + Get Expression for a . + + + + + + Information about database command + parameters. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the type of the command. + + The type of the command. + + + + + Gets or sets the connection string to run the command against. If not provided, connection string from the target is used. + + + + + + Gets or sets the command text. + + + + + + Gets or sets a value indicating whether to ignore failures. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Represents a parameter to a Database target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the parameter. + The parameter layout. + + + + Gets or sets the database parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets the database parameter DbType. + + + + + + Gets or sets the database parameter size. + + + + + + Gets or sets the database parameter precision. + + + + + + Gets or sets the database parameter scale. + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets convert format of the database parameter value . + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Writes log messages to the database using an ADO.NET provider. + + + - NETSTANDARD cannot load connectionstrings from .config + + Documentation on NLog Wiki + + + The configuration is dependent on the database type, because + there are differnet methods of specifying connection string, SQL + command and command parameters. + + MS SQL Server using System.Data.SqlClient: + + Oracle using System.Data.OracleClient: + + Oracle using System.Data.OleDBClient: + + To set up the log target programmatically use code like this (an equivalent of MSSQL configuration): + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the name of the database provider. + + + + The parameter name should be a provider invariant name as registered in machine.config or app.config. Common values are: + +
    +
  • System.Data.SqlClient - SQL Sever Client
  • +
  • System.Data.SqlServerCe.3.5 - SQL Sever Compact 3.5
  • +
  • System.Data.OracleClient - Oracle Client from Microsoft (deprecated in .NET Framework 4)
  • +
  • Oracle.DataAccess.Client - ODP.NET provider from Oracle
  • +
  • System.Data.SQLite - System.Data.SQLite driver for SQLite
  • +
  • Npgsql - Npgsql driver for PostgreSQL
  • +
  • MySql.Data.MySqlClient - MySQL Connector/Net
  • +
+ (Note that provider invariant names are not supported on .NET Compact Framework). + + Alternatively the parameter value can be be a fully qualified name of the provider + connection type (class implementing ) or one of the following tokens: + +
    +
  • sqlserver, mssql, microsoft or msde - SQL Server Data Provider
  • +
  • oledb - OLEDB Data Provider
  • +
  • odbc - ODBC Data Provider
  • +
+
+ +
+ + + Gets or sets the name of the connection string (as specified in <connectionStrings> configuration section. + + + + + + Gets or sets the connection string. When provided, it overrides the values + specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + + Gets or sets the connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + + Gets the installation DDL commands. + + + + + + Gets the uninstallation DDL commands. + + + + + + Gets or sets a value indicating whether to keep the + database connection open between the log events. + + + + + + Obsolete - value will be ignored! The logging code always runs outside of transaction. + + Gets or sets a value indicating whether to use database transactions. + Some data providers require this. + + + + This option was removed in NLog 4.0 because the logging code always runs outside of transaction. + This ensures that the log gets written to the database if you rollback the main transaction because of an error and want to log the error. + + + + + Gets or sets the database host name. If the ConnectionString is not provided + this value will be used to construct the "Server=" part of the + connection string. + + + + + + Gets or sets the database user name. If the ConnectionString is not provided + this value will be used to construct the "User ID=" part of the + connection string. + + + + + + Gets or sets the database password. If the ConnectionString is not provided + this value will be used to construct the "Password=" part of the + connection string. + + + + + + Gets or sets the database name. If the ConnectionString is not provided + this value will be used to construct the "Database=" part of the + connection string. + + + + + + Gets or sets the text of the SQL command to be run on each log level. + + + Typically this is a SQL INSERT statement or a stored procedure call. + It should use the database-specific parameters (marked as @parameter + for SQL server or :parameter for Oracle, other data providers + have their own notation) and not the layout renderers, + because the latter is prone to SQL injection attacks. + The layout renderers should be specified as <parameter /> elements instead. + + + + + + Gets or sets the type of the SQL command to be run on each log level. + + + This specifies how the command text is interpreted, as "Text" (default) or as "StoredProcedure". + When using the value StoredProcedure, the commandText-property would + normally be the name of the stored procedure. TableDirect method is not supported in this context. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Set the to use it for opening connections to the database. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the database. It creates + a new database command, prepares parameters for it by calculating + layouts and executes the command. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Write logEvent to database + + + + + Build the connectionstring from the properties. + + + Using at first, and falls back to the properties , + , and + + Event to render the layout inside the properties. + + + + + Create database parameter + + Current command. + Parameter configuration info. + + + + Extract parameter value from the logevent + + Current logevent. + Parameter configuration info. + + + + Create Default Value of Type + + + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Writes log messages to the attached managed debugger. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the attached debugger. + + The logging event. + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + JSON escaped string + + + + Writes log message to the Event Log. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Max size in characters (limitation of the EventLog API). + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + . to be used as Source. + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the machine on which Event Log service is running. + + + + + + Gets or sets the layout that renders event ID. + + + + + + Gets or sets the layout that renders event Category. + + + + + + Optional entrytype. When not set, or when not convertible to then determined by + + + + + + Gets or sets the value to be used as the event Source. + + + By default this is the friendly name of the current AppDomain. + + + + + + Gets or sets the name of the Event Log to write to. This can be System, Application or any user-defined name. + + + + + + Gets or sets the message length limit to write to the Event Log. + + MaxMessageLength cannot be zero or negative + + + + + Gets or sets the maximum Event log size in kilobytes. + + + MaxKilobytes cannot be less than 64 or greater than 4194240 or not a multiple of 64. + If null, the value will not be specified while creating the Event log. + + + + + + Gets or sets the action to take if the message is larger than the option. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. + + + + + Writes the specified logging event to the event log. + + The logging event. + + + + Get the entry type for logging the message. + + The logging event - for rendering the + + + + Get the source, if and only if the source is fixed. + + null when not + Internal for unit tests + + + + Gets the to write to. + + Event if the source needs to be rendered. + + + + (re-)create an event source, if it isn't there. Works only with fixed source names. + + The source name. If source is not fixed (see , then pass null or . + always throw an Exception when there is an error + + + + A wrapper for Windows event log. + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + Indicates whether an event log instance is associated. + + + + + A wrapper for the method . + + + + + Creates a new association with an instance of the event log. + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + The implementation of , that uses Windows . + + + + + + + + + + + + + + + + + + + + + + + + Creates a new association with an instance of Windows . + + + + + + + + + + + + + + + + + Action that should be taken if the message is greater than + the max message size allowed by the Event Log. + + + + + Truncate the message before writing to the Event Log. + + + + + Split the message and write multiple entries to the Event Log. + + + + + Discard of the message. It will not be written to the Event Log. + + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. When the number of archive files exceed the obsolete archives are deleted. + + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + + When the number of archive files exceed the obsolete archives are deleted. + + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. When the number of archive files + exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Determine if old archive files should be deleted. + + Maximum number of archive files that should be kept + when old archives should be deleted; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the + highest number. When the number of archive files exceed the obsolete + archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialised files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log filenames that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the file attributes (Windows only). + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether file creation calls should be synchronized by a system global mutex. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive filenames + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formating and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Controls the text and color formatting for + + + + + Creates a TextWriter for the console to start building a colored text message + + Active console stream + Optional StringBuilder to optimize performance + TextWriter for the console + + + + Releases the TextWriter for the console after having built a colored text message (Restores console colors) + + Colored TextWriter + Active console stream + Original foreground color for console (If changed) + Original background color for console (If changed) + + + + Changes foreground color for the Colored TextWriter + + Colored TextWriter + New foreground color for the console + Old foreground color for the console + + + + Changes backgroundColor color for the Colored TextWriter + + Colored TextWriter + New backgroundColor color for the console + Old backgroundColor color for the console + + + + Restores console colors back to their original state + + Colored TextWriter + Original foregroundColor color for the console + Original backgroundColor color for the console + + + + Writes multiple characters to console in one operation (faster) + + Colored TextWriter + Output Text + Start Index + End Index + + + + Writes single character to console + + Colored TextWriter + Output Text + + + + Writes whole string and completes with newline + + Colored TextWriter + Output Text + + + + Default row highlight rules for the console printer + + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Formatprovider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Provides a type converter to convert objects to and from other representations. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + true if this converter can perform the conversion; otherwise, false. + + An that provides a format context. A that represents the type you want to convert from. + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that represents the converted value. + + An that provides a format context. The to use as the current culture. The to convert. The conversion cannot be performed. + + + + Sends log messages to a NLog Receiver Service (using WCF or Web Services). + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the endpoint address. + + The endpoint address. + + + + + Gets or sets the name of the endpoint configuration in WCF configuration file. + + The name of the endpoint configuration. + + + + + Gets or sets a value indicating whether to use binary message encoding. + + + + + + Gets or sets a value indicating whether to use a WCF service contract that is one way (fire and forget) or two way (request-reply) + + + + + + Gets or sets the client ID. + + The client ID. + + + + + Gets the list of parameters. + + The parameters. + + + + + Gets or sets a value indicating whether to include per-event properties in the payload sent to the server. + + + + + + Called when log events are being sent (test hook). + + The events. + The async continuations. + True if events should be sent, false to stop processing them. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Append" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Add value to the , returns ordinal in + + + lookup so only unique items will be added to + value to add + + + + + Creating a new instance of WcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + This method marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creating a new instance of IWcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + + virtual is used by endusers + + + + Sends log messages by email using SMTP protocol. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ Mail target works best when used with BufferingWrapper target + which lets you send multiple log messages in single mail +

+

+ To set up the buffered mail target in the configuration file, + use the following syntax: +

+ +

+ To set up the buffered mail target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets the mailSettings/smtp configuration from app.config in cases when we need those configuration. + E.g when UseSystemNetMailSettings is enabled and we need to read the From attribute from system.net/mailSettings/smtp + + Internal for mocking + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets sender's email address (e.g. joe@domain.com). + + + + + + Gets or sets recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets a value indicating whether to add new lines between log entries. + + A value of true if new lines should be added; otherwise, false. + + + + + Gets or sets the mail subject. + + + + + + Gets or sets mail message body (repeated for each log message send in one mail). + + Alias for the Layout property. + + + + + Gets or sets encoding to be used for sending e-mail. + + + + + + Gets or sets a value indicating whether to send message as HTML instead of plain text. + + + + + + Gets or sets SMTP Server to be used for sending. + + + + + + Gets or sets SMTP Authentication mode. + + + + + + Gets or sets the username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets the password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets a value indicating whether SSL (secure sockets layer) should be used when communicating with SMTP server. + + . + + + + Gets or sets the port number that SMTP Server is listening on. + + + + + + Gets or sets a value indicating whether the default Settings from System.Net.MailSettings should be used. + + + + + + Specifies how outgoing email messages will be handled. + + + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + + Gets or sets the priority used for sending mails. + + + + + + Gets or sets a value indicating whether NewLine characters in the body should be replaced with
tags. +
+ Only happens when is set to true. + +
+ + + Gets or sets a value indicating the SMTP client timeout. + + Warning: zero is not infinite waiting + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Renders an array logging events. + + Array of logging events. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Create mail and send with SMTP + + event printed in the body of the event + + + + Create buffer for body + + all events + first event for header + last event for footer + + + + + Set properties of + + last event for username/password + client to set properties on + Configure not at , as the properties could have layout renderers. + + + + Handle if it is a virtual directory. + + + + + + + Create key for grouping. Needed for multiple events in one mailmessage + + event for rendering layouts + string to group on + + + + Append rendered layout to the stringbuilder + + append to this + event for rendering + append if not null + + + + Create the mailmessage with the addresses, properties and body. + + + + + Render and add the addresses to + + Addresses appended to this list + layout with addresses, ; separated + event for rendering the + added a address? + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + Increments specified performance counter on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+ + TODO: + 1. Unable to create a category allowing multiple counter instances (.Net 2.0 API only, probably) + 2. Is there any way of adding new counters without deleting the whole category? + 3. There should be some mechanism of resetting the counter (e.g every day starts from 0), or auto-switching to + another counter instance (with dynamic creation of new instance). This could be done with layouts. + +
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether performance counter should be automatically created. + + + + + + Gets or sets the name of the performance counter category. + + + + + + Gets or sets the name of the performance counter. + + + + + + Gets or sets the performance counter instance name. + + + + + + Gets or sets the counter help text. + + + + + + Gets or sets the performance counter type. + + + + + + The value by which to increment the counter. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Increments the configured performance counter. + + Log event. + + + + Closes the target and releases any unmanaged resources. + + + + + Ensures that the performance counter has been initialized. + + True if the performance counter is operational, false otherwise. + + + + SMTP authentication modes. + + + + + No authentication. + + + + + Basic - username and password. + + + + + NTLM Authentication. + + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + threadsafe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + threadsafe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + threadsafe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with MDLC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDLC key + MDLC value + Snapshot of MDLC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDLC value + Snapshot of NDLC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + Internal Layout that allows capture of MDLC context + + + Internal Layout that allows capture of NDLC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Sends log messages through System.Diagnostics.Trace. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Always use independent of + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Writes the specified logging event to the facility. + + Redirects the log message depending on and . + When is false: + - writes to + - writes to + - writes to + - writes to + - writes to + - writes to + + The logging event. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the proxy configuration when calling web service + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Win32 file attributes. + + + For more information see https://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/createfile.asp. + + + + + Read-only file. + + + + + Hidden file. + + + + + System file. + + + + + File should be archived. + + + + + Device file. + + + + + Normal file. + + + + + File is temporary (should be kept in cache and not + written to disk if possible). + + + + + Sparse file. + + + + + Reparse point. + + + + + Compress file contents. + + + + + File should not be indexed by the content indexing service. + + + + + Encrypted file. + + + + + The system writes through any intermediate cache and goes directly to disk. + + + + + The system opens a file with no system caching. + + + + + Delete file after it is closed. + + + + + A file is accessed according to POSIX rules. + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when setted to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was setted to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The aciton to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Concurrent Asynchronous request queue based on + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + Only for debugging purposes + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Impersonates another user for the duration of the write. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Gets or sets username to change context to. + + + + + + Gets or sets the user account password. + + + + + + Gets or sets Windows domain name to change context to. + + + + + + Gets or sets the Logon Type. + + + + + + Gets or sets the type of the logon provider. + + + + + + Gets or sets the required impersonation level. + + + + + + Gets or sets a value indicating whether to revert to the credentials of the process instead of impersonating another user. + + + + + + Initializes the impersonation context. + + + + + Closes the impersonation context. + + + + + Changes the security context, forwards the call to the .Write() + and switches the context back to original. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Changes the security context, forwards the call to the .Write() + and switches the context back to original. + + Log events. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Helper class which reverts the given + to its original value as part of . + + + + + Initializes a new instance of the class. + + The windows impersonation context. + + + + Reverts the impersonation context. + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and setted to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Logon provider. + + + + + Use the standard logon provider for the system. + + + The default security provider is negotiate, unless you pass NULL for the domain name and the user name + is not in UPN format. In this case, the default provider is NTLM. + NOTE: Windows 2000/NT: The default security provider is NTLM. + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Impersonation level. + + + + + Anonymous Level. + + + + + Identification Level. + + + + + Impersonation Level. + + + + + Delegation Level. + + + + + Logon type. + + + + + Interactive Logon. + + + This logon type is intended for users who will be interactively using the computer, such as a user being logged on + by a terminal server, remote shell, or similar process. + This logon type has the additional expense of caching logon information for disconnected operations; + therefore, it is inappropriate for some client/server applications, + such as a mail server. + + + + + Network Logon. + + + This logon type is intended for high performance servers to authenticate plaintext passwords. + The LogonUser function does not cache credentials for this logon type. + + + + + Batch Logon. + + + This logon type is intended for batch servers, where processes may be executing on behalf of a user without + their direct intervention. This type is also for higher performance servers that process many plaintext + authentication attempts at a time, such as mail or Web servers. + The LogonUser function does not cache credentials for this logon type. + + + + + Logon as a Service. + + + Indicates a service-type logon. The account provided must have the service privilege enabled. + + + + + Network Clear Text Logon. + + + This logon type preserves the name and password in the authentication package, which allows the server to make + connections to other network servers while impersonating the client. A server can accept plaintext credentials + from a client, call LogonUser, verify that the user can access the system across the network, and still + communicate with other servers. + NOTE: Windows NT: This value is not supported. + + + + + New Network Credentials. + + + This logon type allows the caller to clone its current token and specify new credentials for outbound connections. + The new logon session has the same local identifier but uses different credentials for other network connections. + NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider. + NOTE: Windows NT: This value is not supported. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + +
+
diff --git a/packages/Common/Newtonsoft.Json.dll b/packages/Common/Newtonsoft.Json.dll new file mode 100644 index 000000000..628aaf03b Binary files /dev/null and b/packages/Common/Newtonsoft.Json.dll differ diff --git a/packages/Common/Newtonsoft.Json.xml b/packages/Common/Newtonsoft.Json.xml new file mode 100644 index 000000000..0cbf62cd5 --- /dev/null +++ b/packages/Common/Newtonsoft.Json.xml @@ -0,0 +1,9646 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Initializes a new instance of the class. + + The Oid value. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data. + + + + + Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data. + + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Initializes a new instance of the class. + + The to write to. + + + + Initializes a new instance of the class. + + The to write to. + + + + Flushes whatever is in the buffer to the underlying and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a JSON array. + + + + + Writes the beginning of a JSON object. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Closes this writer. + If is set to true, the underlying is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a parameterized constructor. + + + + + Converts a binary value to and from a base 64 string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Creates a custom object. + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. "2008-04-12T12:53Z"). + + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Converts a to and from a JavaScript Date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + The default value is false. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets the naming strategy used to resolve how enum text is written. + + The naming strategy used to resolve how enum text is written. + + + + Gets or sets a value indicating whether integer values are allowed when serializing and deserializing. + The default value is true. + + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + true if the written enum text will be camel case; otherwise, false. + + + + Initializes a new instance of the class. + + The naming strategy used to resolve how enum text is written. + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from Unix epoch time + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements. + + The name of the deserialized root element. + + + + Gets or sets a value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attribute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Gets or sets a value indicating whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + true if special characters are encoded; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + true if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + The default JSON name table implementation. + + + + + Initializes a new instance of the class. + + + + + Gets a string containing the same characters as the specified range of characters in the given array. + + The character array containing the name to find. + The zero-based index into the array specifying the first character of the name. + The number of characters in the name. + A string containing the same characters as the specified range of characters in the given array. + + + + Adds the specified string into name table. + + The string to add. + This method is not thread-safe. + The resolved string. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that it is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and set members to their default value when deserializing. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a of property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface for using pooled arrays. + + The array type content. + + + + Rent an array from the pool. This array must be returned when it is no longer needed. + + The minimum required length of the array. The returned array may be longer. + The rented array from the pool. This array must be returned when it is no longer needed. + + + + Return an array to the pool. + + The array that is being returned. + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if and can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, when returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, when returns false). + + + + Instructs the how to serialize the collection. + + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items. + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the object. + + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets or sets the collection's items converter. + + The collection's items converter. + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Provides methods for converting between .NET types and JSON types. + + + + + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + The string escape handling. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output should be formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection of converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output should be formatted. + A collection of converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output should be formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output should be formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be inferred from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be inferred from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + + + Serializes the to a JSON string. + + The node to serialize. + A JSON string of the . + + + + Serializes the to a JSON string using formatting. + + The node to serialize. + Indicates how the output should be formatted. + A JSON string of the . + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output should be formatted. + Omits writing the root object. + A JSON string of the . + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by + and writes a Json.NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by , + writes a Json.NET array attribute for collections, and encodes special characters. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + + A value to indicate whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + The deserialized . + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the . + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output should be formatted. + A JSON string of the . + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output should be formatted. + Omits writing the root object. + A JSON string of the . + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by + and writes a Json.NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by , + writes a Json.NET array attribute for collections, and encodes special characters. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + + A value to indicate whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + The deserialized . + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Converts an object to and from JSON. + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. If there is no existing value then null will be used. + The existing value has a value. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Gets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + + + + + Initializes a new instance of the class. + + Type of the . + + + + Initializes a new instance of the class. + + Type of the . + Parameter list to use when constructing the . Can be null. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Initializes a new instance of the class. + + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Base class for a table of atomized string objects. + + + + + Gets a string containing the same characters as the specified range of characters in the given array. + + The character array containing the name to find. + The zero-based index into the array specifying the first character of the name. + The number of characters in the name. + A string containing the same characters as the specified range of characters in the given array. + + + + Instructs the how to serialize the object. + + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets the missing member handling used when deserializing this object. + + The missing member handling. + + + + Gets or sets how the object's properties with null values are handled during serialization and deserialization. + + How the object's properties with null values are handled during serialization and deserialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to always serialize the member with the specified name. + + + + + Gets or sets the type used when serializing the property's collection items. + + The collection's items type. + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Specifies the state of the reader. + + + + + A read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader is in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the source should be closed when this reader is closed. + + + true to close the source when this reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. + The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Gets or sets how time zones are handled when reading JSON. + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets how custom date formatted strings are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets the .NET type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Initializes a new instance of the class. + + + + + Reads the next JSON token from the source. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a []. + + A [] or null if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the current token and value. + + The new token. + The value. + A flag indicating whether the position index inside an array should be updated. + + + + Sets the state based on current token type. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the reader's state to . + If is set to true, the source is also closed. + + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The line number indicating where the error occurred. + The line position indicating where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Instructs the to always serialize the member, and to require that the member has a value. + + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The line number indicating where the error occurred. + The line position indicating where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + The default value is . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + The default value is . + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + The default value is . + + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + The default value is . + + + + + Gets or sets how null values are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how default values are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how objects are created during deserialization. + The default value is . + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + The default value is . + + The constructor handling. + + + + Gets or sets how metadata properties are used during deserialization. + The default value is . + + The metadata properties handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + The default value is . + + + + + Gets or sets how dates are written to JSON text. + The default value is . + + + + + Gets or sets how time zones are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + The default value is . + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + The default value is . + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written as JSON text. + The default value is . + + + + + Gets or sets how strings are escaped when writing JSON text. + The default value is . + + + + + Gets or sets how and values are formatted when writing JSON text, + and the expected date format when reading JSON text. + The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". + + + + + Gets or sets the culture used when reading JSON. + The default value is . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + A null value means there is no maximum. + The default value is null. + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + The default value is false. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings + from . + + + A new instance. + The will not use default settings + from . + + + + + Creates a new instance using the specified . + The will not use default settings + from . + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings + from . + + + + + Creates a new instance. + The will use default settings + from . + + + A new instance. + The will use default settings + from . + + + + + Creates a new instance using the specified . + The will use default settings + from as well as the specified . + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings + from as well as the specified . + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to read values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to read values from. + The target object to populate values onto. + + + + Deserializes the JSON structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Specifies the settings on a object. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) are handled. + The default value is . + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + The default value is . + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + The default value is . + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + The default value is . + + Null value handling. + + + + Gets or sets how default values are handled during serialization and deserialization. + The default value is . + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + The default value is . + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + The default value is . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + The type name handling. + + + + Gets or sets how metadata properties are used during deserialization. + The default value is . + + The metadata properties handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + The default value is . + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets a function that creates the used by the serializer when resolving references. + + A function that creates the used by the serializer when resolving references. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets how and values are formatted when writing JSON text, + and the expected date format when reading JSON text. + The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + A null value means there is no maximum. + The default value is null. + + + + + Indicates how JSON text output is formatted. + The default value is . + + + + + Gets or sets how dates are written to JSON text. + The default value is . + + + + + Gets or sets how time zones are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + The default value is . + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written as JSON. + The default value is . + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + The default value is . + + + + + Gets or sets how strings are escaped when writing JSON text. + The default value is . + + + + + Gets or sets the culture used when reading JSON. + The default value is . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + The default value is false. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The containing the JSON data to read. + + + + Gets or sets the reader's property name table. + + + + + Gets or sets the reader's character buffer pool. + + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a []. + + A [] or null if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if and can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets the writer's character array pool. + + + + + Gets or sets how many s to write for each level in the hierarchy when is set to . + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to . + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Initializes a new instance of the class using the specified . + + The to write to. + + + + Flushes whatever is in the buffer to the underlying and also flushes the underlying . + + + + + Closes this writer. + If is set to true, the underlying is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the given white space. + + The string of white space characters. + + + + Specifies the type of JSON token. + + + + + This is returned by the if a read method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + + Represents a reader that provides validation. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the .NET type for the current JSON token. + + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a []. + + + A [] or null if the next JSON token is null. + + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets or sets a value indicating whether the destination should be closed when this writer is closed. + + + true to close the destination when this writer is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed. + + + true to auto-complete the JSON when this writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Gets or sets a value indicating how JSON text output should be formatted. + + + + + Gets or sets how dates are written to JSON text. + + + + + Gets or sets how time zones are handled when writing JSON text. + + + + + Gets or sets how strings are escaped when writing JSON text. + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Gets or sets how and values are formatted when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the destination and also flushes the destination. + + + + + Closes this writer. + If is set to true, the destination is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the end of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair of a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair of a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current JSON object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + null can be passed to the method for tokens that don't have a value, e.g. . + + + + + Writes the token. + + The to write. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the given white space. + + The string of white space characters. + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Sets the state of the . + + The being written. + The value being written. + + + + The exception thrown when an error occurs while writing JSON text. + + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Specifies how JSON comments are handled when loading JSON. + + + + + Ignore comments. + + + + + Load comments as a with type . + + + + + Specifies how duplicate property names are handled when loading JSON. + + + + + Replace the existing value when there is a duplicate property. The value of the last property in the JSON object will be used. + + + + + Ignore the new value when there is a duplicate property. The value of the first property in the JSON object will be used. + + + + + Throw a when a duplicate property is encountered. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, and the descendants of every token in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every token in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every token in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every token in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every token in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token. + + + + Gets the of with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object. + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + + + + + Returns an enumerator that iterates through the collection. + + + A of that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies the elements of the to an array, starting at a particular array index. + + The array. + Index of the array. + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + Represents a JSON constructor. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a token that can contain other tokens. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An of containing the descendant tokens of the . + + + + Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. + + An of containing this token, and all the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates a that can be used to add tokens to the . + + A that is ready to have content written to it. + + + + Replaces the child nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Merge the specified content into this . + + The content to be merged. + + + + Merge the specified content into this using . + + The content to be merged. + The used to merge the content. + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens. + + + + Represents a collection of objects. + + The type of token. + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that can be used to iterate through the collection. + + + A that can be used to iterate through the collection. + + + + + Gets the of with the specified key. + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Represents a JSON object. + + + + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets the node type for this . + + The type. + + + + Gets an of of this object's properties. + + An of of this object's properties. + + + + Gets a with the specified name. + + The property name. + A with the specified name or null. + + + + Gets the with the specified name. + The exact name will be searched for first and if no matching property is found then + the will be used to match a property. + + The property name. + One of the enumeration values that specifies how the strings will be compared. + A matched with the specified name or null. + + + + Gets a of of this object's property values. + + A of of this object's property values. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + is not valid JSON. + + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + is not valid JSON. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + is not valid JSON. + + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + is not valid JSON. + + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object. + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Determines whether the JSON object has the specified property name. + + Name of the property. + true if the JSON object has the specified property name; otherwise, false. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries to get the with the specified property name. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that can be used to iterate through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Represents a JSON property. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. + When the or + + methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a raw JSON string. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Specifies the settings used when loading JSON. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how JSON comments are handled when loading JSON. + The default value is . + + The JSON comment handling. + + + + Gets or sets how JSON line info is handled when loading JSON. + The default value is . + + The JSON line info handling. + + + + Gets or sets how duplicate property names in JSON objects are handled when loading JSON. + The default value is . + + The JSON duplicate property name handling. + + + + Specifies the settings used when merging JSON. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the method used when merging JSON arrays. + + The method used when merging JSON arrays. + + + + Gets or sets how null value properties are merged. + + How null value properties are merged. + + + + Gets or sets the comparison used to match property names while merging. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + The comparison used to match property names while merging. + + + + Represents an abstract JSON token. + + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of tokens that contain this token, and the ancestors of this token. + + A collection of tokens that contain this token, and the ancestors of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + ToString() returns a non-JSON string value for tokens with a type of . + If you want the JSON for all token types then you should use . + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output should be formatted. + A collection of s which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to []. + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from [] to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Creates a for this token. + + A that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object. + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object. + + + + Creates an instance of the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + A positioned at the token to read into this . + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + Creates a from a . + + A positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + A positioned at the token to read into this . + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JSONPath expression. Selects the token that matches the object path. + + + A that contains a JSONPath expression. + + A , or null. + + + + Selects a using a JSONPath expression. Selects the token that matches the object path. + + + A that contains a JSONPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JSONPath expression. + + + A that contains a JSONPath expression. + + An of that contains the selected elements. + + + + Selects a collection of elements using a JSONPath expression. + + + A that contains a JSONPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An of that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Adds an object to the annotation list of this . + + The annotation to add. + + + + Get the first annotation object of the specified type from this . + + The type of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets the first annotation object of the specified type from this . + + The of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets a collection of annotations of the specified type for this . + + The type of the annotations to retrieve. + An that contains the annotations for this . + + + + Gets a collection of annotations of the specified type for this . + + The of the annotations to retrieve. + An of that contains the annotations that match the specified type for this . + + + + Removes the annotations of the specified type from this . + + The type of annotations to remove. + + + + Removes the annotations of the specified type from this . + + The of annotations to remove. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets the at the reader's current position. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Initializes a new instance of the class. + + The token to read from. + The initial path of the token. It is prepended to the returned . + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Gets the path of the current JSON token. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets the at the writer's current position. + + + + + Gets the token being written. + + The token being written. + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying . + + + + + Closes this writer. + If is set to true, the JSON is auto-completed. + + + Setting to true has no additional effect, since the underlying is a type that cannot be closed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes a value. + An error will be raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Creates a null value. + + A null value. + + + + Creates a undefined value. + + A undefined value. + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Writes this token to a . + + A into which this method will write. + A collection of s which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + ToString() returns a non-JSON string value for tokens with a type of . + If you want the JSON for all token types then you should use . + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being 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 . + + + is not of the same type as this instance. + + + + + Specifies how line information is handled when loading JSON. + + + + + Ignore line information. + + + + + Load line information. + + + + + Specifies how JSON arrays are merged together. + + + + Concatenate arrays. + + + Union arrays, skipping items that already exist. + + + Replace all array items. + + + Merge array items together, matched by index. + + + + Specifies how null value properties are merged. + + + + + The content's null value properties will be ignored during merging. + + + + + The content's null value properties will be merged. + + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies metadata property handling options for the . + + + + + Read metadata properties located at the start of a JSON object. + + + + + Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. + + + + + Do not try to read metadata properties. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + The property is not required but it cannot be a null value. + + + + + + Contains the JSON schema extension methods. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + + Determines whether the is valid. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + + Determines whether the is valid. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + + Validates the specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + + + + + Validates the specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + The validation event handler. + + + + + An in-memory representation of a JSON Schema. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read-only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisible by. + + A number that the value should be divisible by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the minimum attribute (). + + A flag indicating whether the value can not equal the number defined by the minimum attribute (). + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the maximum attribute (). + + A flag indicating whether the value can not equal the number defined by the maximum attribute (). + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallowed types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains JSON Schema. + + A that contains JSON Schema. + A populated from the string that contains JSON Schema. + + + + Load a from a string that contains JSON Schema using the specified . + + A that contains JSON Schema. + The resolver. + A populated from the string that contains JSON Schema. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + + Returns detailed information about the schema exception. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + + Generates a from a specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + + Resolves from an id. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + + The value types allowed by the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + + Specifies undefined schema Id handling options for the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + + Returns detailed information related to the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + + Represents the callback method that will handle JSON schema validation events and the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + A camel case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Initializes a new instance of the class. + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Used by to resolve a for a given . + + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore IsSpecified members when serializing and deserializing types. + + + true if the IsSpecified members will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and deserializing types. + + + true if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized. + + The naming strategy used to resolve how property names and dictionary keys are serialized. + + + + Initializes a new instance of the class. + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Resolved name of the property. + + + + Resolves the name of the extension data. By default no changes are made to extension data names. + + Name of the extension data. + Resolved name of the extension data. + + + + Resolves the key of the dictionary. By default is used to resolve dictionary keys. + + Key of the dictionary. + Resolved key of the dictionary. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + The default naming strategy. Property names and dictionary keys are unchanged. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + Initializes a new instance of the class. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Represents a trace writer that writes to the application's instances. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides methods to get attributes. + + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Used by to resolve a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that was resolved from the reference. + + + + Gets the reference for the specified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Allows users to control class loading and mandate what class to load. + + + + + When implemented, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When implemented, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Represents a trace writer. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the collection values. + + true if the creator has a parameter with the collection values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets the internally resolved for the contract's type. + This converter is used as a fallback converter when no other converter is resolved. + Setting will always override this converter. + + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non-public. + + true if the default object creator is non-public; otherwise, false. + + + + Contract details for a used by the . + + + + + Gets or sets the dictionary key resolver. + + The dictionary key resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the dictionary values. + + true if the creator has a parameter with the dictionary values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the object constructor. + + The object constructor. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets the missing member handling used when deserializing this object. + + The missing member handling. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets or sets how the object's properties with null values are handled during serialization and deserialization. + + How the object's properties with null values are handled during serialization and deserialization. + + + + Gets the object's properties. + + The object's properties. + + + + Gets a collection of instances that define the parameters used with . + + + + + Gets or sets the function used to create the object. When set this function will override . + This function is called with a collection of arguments which are defined by the collection. + + The function used to create the object. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Gets or sets the extension data value type. + + + + + Gets or sets the extension data name resolver. + + The extension data name resolver. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the for this property. + + The for this property. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes precedence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether has a value specified. + + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets a predicate used to determine whether the property should be deserialized. + + A predicate used to determine whether the property should be deserialized. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Lookup and create an instance of the type described by the argument. + + The type to create. + Optional arguments to pass to an initializing constructor of the JsonConverter. + If null, the default constructor is used. + + + + A kebab case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + A base class for resolving how property names and dictionary keys are serialized. + + + + + A flag indicating whether dictionary keys should be processed. + Defaults to false. + + + + + A flag indicating whether extension data names should be processed. + Defaults to false. + + + + + A flag indicating whether explicitly specified property names, + e.g. a property name customized with a , should be processed. + Defaults to false. + + + + + Gets the serialized name for a given property name. + + The initial property name. + A flag indicating whether the property has had a name explicitly specified. + The serialized property name. + + + + Gets the serialized name for a given extension data name. + + The initial extension data name. + The serialized extension data name. + + + + Gets the serialized key for a given dictionary key. + + The initial dictionary key. + The serialized dictionary key. + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Hash code calculation + + + + + + Object equality implementation + + + + + + + Compare to another NamingStrategy + + + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Provides methods to get attributes from a , , or . + + + + + Initializes a new instance of the class. + + The instance to get attributes for. This parameter should be a , , or . + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + A snake case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method of the class is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the class is used to load the assembly. + + + + + Specifies type name handling options for the . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON + you must specify a root type object with + or . + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic . + + The list to add to. + The collection of elements to add. + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Helper class for serializing immutable collections. + Note that this is used by all builds, even those that don't support immutable collections, in case the DLL is GACed + https://github.com/JamesNK/Newtonsoft.Json/issues/652 + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike this class lets you reuse its internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls result in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + An array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + Specifies that an output will not be null even if the corresponding type allows it. + + + 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 an output may be null even if the corresponding type disallows it. + + + Specifies that null is allowed as an input even if the corresponding type disallows it. + + + + Specifies that the method will not return if the associated Boolean parameter is passed the specified value. + + + + + Initializes a new instance of the class. + + + The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to + the associated parameter matches this value. + + + + Gets the condition parameter value. + + + diff --git a/packages/Common/NlogConfig.xml b/packages/Common/NlogConfig.xml new file mode 100644 index 000000000..b6e01e2b6 --- /dev/null +++ b/packages/Common/NlogConfig.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Common/PdfSharp.dll b/packages/Common/PdfSharp.dll new file mode 100644 index 000000000..4fcde52f1 Binary files /dev/null and b/packages/Common/PdfSharp.dll differ diff --git a/packages/Common/PdfSharp.xml b/packages/Common/PdfSharp.xml new file mode 100644 index 000000000..8ac853e90 --- /dev/null +++ b/packages/Common/PdfSharp.xml @@ -0,0 +1,23546 @@ + + + + PdfSharp + + + + + Floating point formatting. + + + + + Factor to convert from degree to radian measure. + + + + + Sinus of the angle to turn a regular font to look oblique. Used for italic simulation. + + + + + Factor of the em size of a regular font to look bold. Used for bold simulation. + Value of 2% found in original XPS 1.0 documentation. + + + + + Static locking functions to make PDFsharp thread save. + + + + + A bunch of internal helper functions. + + + + + A bunch of internal helper functions. + + + + + Indirectly throws NotImplementedException. + Required because PDFsharp Release builds tread warnings as errors and + throwing NotImplementedException may lead to unreachable code which + crashes the build. + + + + + Helper class around the Debugger class. + + + + + Call Debugger.Break() if a debugger is attached. + + + + + Call Debugger.Break() if a debugger is attached or when always is set to true. + + + + + Internal stuff for development of PDFsharp. + + + + + Creates font and enforces bold/italic simulation. + + + + + Dumps the font caches to a string. + + + + + Some static helper functions for calculations. + + + + + Degree to radiant factor. + + + + + Get page size in point from specified PageSize. + + + + + Some floating point utilities. Partially reflected from WPF, later equalized with original source code. + + + + + Indicates whether the values are so close that they can be considered as equal. + + + + + Indicates whether the values are so close that they can be considered as equal. + + + + + Indicates whether the values are so close that they can be considered as equal. + + + + + Indicates whether the values are so close that they can be considered as equal. + + + + + Indicates whether the values are so close that they can be considered as equal. + + + + + Indicates whether the values are so close that they can be considered as equal. + + + + + Indicates whether value1 is greater than value2 and the values are not close to each other. + + + + + Indicates whether value1 is greater than value2 or the values are close to each other. + + + + + Indicates whether value1 is less than value2 and the values are not close to each other. + + + + + Indicates whether value1 is less than value2 or the values are close to each other. + + + + + Indicates whether the value is between 0 and 1 or close to 0 or 1. + + + + + Indicates whether the value is not a number. + + + + + Indicates whether at least one of the four rectangle values is not a number. + + + + + Indicates whether the value is 1 or close to 1. + + + + + Indicates whether the value is 0 or close to 0. + + + + + Converts a double to integer. + + + + + Required native Win32 calls. + + + + + Reflected from System.Drawing.SafeNativeMethods+LOGFONT + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Move to next token. + + + + + Move to next token. + + + + + Represents the base class of all bar codes. + + + + + Initializes a new instance of the class. + + + + + + + + Creates a bar code from the specified code type. + + + + + Creates a bar code from the specified code type. + + + + + Creates a bar code from the specified code type. + + + + + Creates a bar code from the specified code type. + + + + + When overridden in a derived class gets or sets the wide narrow ratio. + + + + + Gets or sets the location of the text next to the bar code. + + + + + Gets or sets the length of the data that defines the bar code. + + + + + Gets or sets the optional start character. + + + + + Gets or sets the optional end character. + + + + + Gets or sets a value indicating whether the turbo bit is to be drawn. + (A turbo bit is something special to Kern (computer output processing) company (as far as I know)) + + + + + When defined in a derived class renders the code. + + + + + Holds all temporary information needed during rendering. + + + + + String resources for the empira barcode renderer. + + + + + Implementation of the Code 2 of 5 bar code. + + + + + Initializes a new instance of Interleaved2of5. + + + + + Initializes a new instance of Interleaved2of5. + + + + + Initializes a new instance of Interleaved2of5. + + + + + Initializes a new instance of Interleaved2of5. + + + + + Returns an array of size 5 that represents the thick (true) and thin (false) lines or spaces + representing the specified digit. + + The digit to represent. + + + + Renders the bar code. + + + + + Calculates the thick and thin line widths, + taking into account the required rendering size. + + + + + Renders the next digit pair as bar code element. + + + + + Checks the code to be convertible into an interleaved 2 of 5 bar code. + + The code to be checked. + + + + Imlpementation of the Code 3 of 9 bar code. + + + + + Initializes a new instance of Standard3of9. + + + + + Initializes a new instance of Standard3of9. + + + + + Initializes a new instance of Standard3of9. + + + + + Initializes a new instance of Standard3of9. + + + + + Returns an array of size 9 that represents the thick (true) and thin (false) lines and spaces + representing the specified digit. + + The character to represent. + + + + Calculates the thick and thin line widths, + taking into account the required rendering size. + + + + + Checks the code to be convertible into an standard 3 of 9 bar code. + + The code to be checked. + + + + Renders the bar code. + + + + + Represents the base class of all codes. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the size. + + + + + Gets or sets the text the bar code shall represent. + + + + + Always MiddleCenter. + + + + + Gets or sets the drawing direction. + + + + + When implemented in a derived class, determines whether the specified string can be used as Text + for this bar code type. + + The code string to check. + True if the text can be used for the actual barcode. + + + + Calculates the distance between an old anchor point and a new anchor point. + + + + + + + + Defines the DataMatrix 2D barcode. THIS IS AN EMPIRA INTERNAL IMPLEMENTATION. THE CODE IN + THE OPEN SOURCE VERSION IS A FAKE. + + + + + Initializes a new instance of CodeDataMatrix. + + + + + Initializes a new instance of CodeDataMatrix. + + + + + Initializes a new instance of CodeDataMatrix. + + + + + Initializes a new instance of CodeDataMatrix. + + + + + Initializes a new instance of CodeDataMatrix. + + + + + Initializes a new instance of CodeDataMatrix. + + + + + Initializes a new instance of CodeDataMatrix. + + + + + Initializes a new instance of CodeDataMatrix. + + + + + Initializes a new instance of CodeDataMatrix. + + + + + Sets the encoding of the DataMatrix. + + + + + Gets or sets the size of the Matrix' Quiet Zone. + + + + + Renders the matrix code. + + + + + Determines whether the specified string can be used as data in the DataMatrix. + + The code to be checked. + + + + Represents an OMR code. + + + + + initializes a new OmrCode with the given data. + + + + + Renders the OMR code. + + + + + Gets or sets a value indicating whether a synchronize mark is rendered. + + + + + Gets or sets the distance of the markers. + + + + + Gets or sets the thickness of the makers. + + + + + Determines whether the specified string can be used as Text for the OMR code. + + + + + Creates the XImage object for a DataMatrix. + + + + + Possible ECC200 Matrices. + + + + + Creates the DataMatrix code. + + + + + Encodes the DataMatrix. + + + + + Encodes the barcode with the DataMatrix ECC200 Encoding. + + + + + Places the data in the right positions according to Annex M of the ECC200 specification. + + + + + Places the ECC200 bits in the right positions. + + + + + Calculate and append the Reed Solomon Code. + + + + + Initialize the Galois Field. + + + + + + Initializes the Reed-Solomon Encoder. + + + + + Encodes the Reed-Solomon encoding + + + + + Creates a DataMatrix image object. + + A hex string like "AB 08 C3...". + I.e. 26 for a 26x26 matrix + + + + Creates a DataMatrix image object. + + + + + Creates a DataMatrix image object. + + + + + Specifies whether and how the text is displayed at the code area. + + + + + The anchor is located top left. + + + + + The anchor is located top center. + + + + + The anchor is located top right. + + + + + The anchor is located middle left. + + + + + The anchor is located middle center. + + + + + The anchor is located middle right. + + + + + The anchor is located bottom left. + + + + + The anchor is located bottom center. + + + + + The anchor is located bottom right. + + + + + Specifies the drawing direction of the code. + + + + + Does not rotate the code. + + + + + Rotates the code 180° at the anchor position. + + + + + Rotates the code 180° at the anchor position. + + + + + Rotates the code 180° at the anchor position. + + + + + Specifies the type of the bar code. + + + + + The standard 2 of 5 interleaved bar code. + + + + + The standard 3 of 9 bar code. + + + + + The OMR code. + + + + + The data matrix code. + + + + + docDaSt + + + + + docDaSt + + + + + docDaSt + + + + + docDaSt + + + + + docDaSt + + + + + docDaSt + + + + + docDaSt + + + + + Specifies whether and how the text is displayed at the code. + + + + + No text is drawn. + + + + + The text is located above the code. + + + + + The text is located below the code. + + + + + The text is located above within the code. + + + + + The text is located below within the code. + + + + + Represents the base class of all 2D codes. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the encoding. docDaSt + + + + + docDaSt + + + + + docDaSt + + + + + docDaSt + + + + + When implemented in a derived class renders the 2D code. + + + + + Determines whether the specified string can be used as Text for this matrix code type. + + + + + Internal base class for several bar code types. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the ration between thick an thin lines. Must be between 2 and 3. + Optimal and also default value is 2.6. + + + + + Renders a thick or thin line for the bar code. + + + Determines whether a thick or a thin line is about to be rendered. + + + + Renders a thick or thin gap for the bar code. + + + Determines whether a thick or a thin gap is about to be rendered. + + + + Renders a thick bar before or behind the code. + + + + + Gets the width of a thick or a thin line (or gap). CalcLineWidth must have been called before. + + + Determines whether a thick line's with shall be returned. + + + + Specifies the alignment of a paragraph. + + + + + Default alignment, typically left alignment. + + + + + The paragraph is rendered left aligned. + + + + + The paragraph is rendered centered. + + + + + The paragraph is rendered right aligned. + + + + + The paragraph is rendered justified. + + + + + Represents a very simple text formatter. + If this class does not satisfy your needs on formatting paragraphs I recommend to take a look + at MigraDoc Foundation. Alternatively you should copy this class in your own source code and modify it. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the text. + + The text. + + + + Gets or sets the font. + + + + + Gets or sets the bounding box of the layout. + + + + + Gets or sets the alignment of the text. + + + + + Draws the text. + + The text to be drawn. + The font. + The text brush. + The layout rectangle. + + + + Draws the text. + + The text to be drawn. + The font. + The text brush. + The layout rectangle. + The format. Must be XStringFormat.TopLeft + + + + Align center, right, or justify. + + + + + Represents a single word. + + + + + Initializes a new instance of the class. + + The text of the block. + The type of the block. + The width of the text. + + + + Initializes a new instance of the class. + + The type. + + + + The text represented by this block. + + + + + The type of the block. + + + + + The width of the text. + + + + + The location relative to the upper left corner of the layout rectangle. + + + + + The alignment of this line. + + + + + A flag indicating that this is the last block that fits in the layout rectangle. + + + + + Indicates whether we are within a BT/ET block. + + + + + Graphic mode. This is default. + + + + + Text mode. + + + + + Represents the current PDF graphics state. + + + Completely revised for PDFsharp 1.4. + + + + + Indicates that the text transformation matrix currently skews 20° to the right. + + + + + The already realized part of the current transformation matrix. + + + + + The not yet realized part of the current transformation matrix. + + + + + Product of RealizedCtm and UnrealizedCtm. + + + + + Inverse of EffectiveCtm used for transformation. + + + + + Realizes the CTM. + + + + + Represents a drawing surface for PdfPages. + + + + + Gets the content created by this renderer. + + + + + Strokes a single connection of two points. + + + + + Strokes a series of connected points. + + + + + Clones the current graphics state and push it on a stack. + + + + + Sets the clip path empty. Only possible if graphic state level has the same value as it has when + the first time SetClip was invoked. + + + + + The nesting level of the PDF graphics state stack when the clip region was set to non empty. + Because of the way PDF is made the clip region can only be reset at this level. + + + + + Writes a comment to the PDF content stream. May be useful for debugging purposes. + + + + + Appends one or up to five Bézier curves that interpolate the arc. + + + + + Gets the quadrant (0 through 3) of the specified angle. If the angle lies on an edge + (0, 90, 180, etc.) the result depends on the details how the angle is used. + + + + + Appends a Bézier curve for an arc within a quadrant. + + + + + Appends a Bézier curve for a cardinal spline through pt1 and pt2. + + + + + Appends the content of a GraphicsPath object. + + + + + Initializes the default view transformation, i.e. the transformation from the user page + space to the PDF page space. + + + + + Ends the content stream, i.e. ends the text mode and balances the graphic state stack. + + + + + Begins the graphic mode (i.e. ends the text mode). + + + + + Begins the graphic mode (i.e. ends the text mode). + + + + + Makes the specified pen and brush to the current graphics objects. + + + + + Makes the specified pen to the current graphics object. + + + + + Makes the specified brush to the current graphics object. + + + + + Makes the specified font and brush to the current graphics objects. + + + + + PDFsharp uses the Td operator to set the text position. Td just sets the offset of the text matrix + and produces lesser code as Tm. + + The absolute text position. + The dy. + true if skewing for italic simulation is currently on. + + + + Makes the specified image to the current graphics object. + + + + + Realizes the current transformation matrix, if necessary. + + + + + Convert a point from Windows world space to PDF world space. + + + + + Gets the owning PdfDocument of this page or form. + + + + + Gets the PdfResources of this page or form. + + + + + Gets the size of this page or form. + + + + + Gets the resource name of the specified font within this page or form. + + + + + Gets the resource name of the specified image within this page or form. + + + + + Gets the resource name of the specified form within this page or form. + + + + + The q/Q nesting level is 0. + + + + + The q/Q nesting level is 1. + + + + + The q/Q nesting level is 2. + + + + + Saves the current graphical state. + + + + + Restores the previous graphical state. + + + + + The current graphical state. + + + + + The graphical state stack. + + + + + The height of the PDF page in point including the trim box. + + + + + The final transformation from the world space to the default page space. + + + + + Represents a graphics path that uses the same notation as GDI+. + + + + + Adds an arc that fills exactly one quadrant (quarter) of an ellipse. + Just a quick hack to draw rounded rectangles before AddArc is fully implemented. + + + + + Closes the current subpath. + + + + + Gets or sets the current fill mode (alternate or winding). + + + + + Gets the path points in GDI+ style. + + + + + Gets the path types in GDI+ style. + + + + + Defines the direction an elliptical arc is drawn. + + + + + Specifies that arcs are drawn in a counter clockwise (negative-angle) direction. + + + + + Specifies that arcs are drawn in a clockwise (positive-angle) direction. + + + + + Describes the simulation style of a font. + + + + + No font style simulation. + + + + + Bold style simulation. + + + + + Italic style simulation. + + + + + Bold and Italic style simulation. + + + + + Indicates how to handle the first point of a path. + + + + + Set the current position to the first point. + + + + + Draws a line to the first point. + + + + + Ignores the first point. + + + + + Currently not used. Only DeviceRGB is rendered in PDF. + + + + + Identifies the RGB color space. + + + + + Identifies the CMYK color space. + + + + + Identifies the gray scale color space. + + + + + Specifies how different clipping regions can be combined. + + + + + One clipping region is replaced by another. + + + + + Two clipping regions are combined by taking their intersection. + + + + + Not yet implemented in PDFsharp. + + + + + Not yet implemented in PDFsharp. + + + + + Not yet implemented in PDFsharp. + + + + + Not yet implemented in PDFsharp. + + + + + Specifies the style of dashed lines drawn with an XPen object. + + + + + Specifies a solid line. + + + + + Specifies a line consisting of dashes. + + + + + Specifies a line consisting of dots. + + + + + Specifies a line consisting of a repeating pattern of dash-dot. + + + + + Specifies a line consisting of a repeating pattern of dash-dot-dot. + + + + + Specifies a user-defined custom dash style. + + + + + Specifies how the interior of a closed path is filled. + + + + + Specifies the alternate fill mode. Called the 'odd-even rule' in PDF terminology. + + + + + Specifies the winding fill mode. Called the 'nonzero winding number rule' in PDF terminology. + + + + + Specifies style information applied to text. + + + + + Normal text. + + + + + Bold text. + + + + + Italic text. + + + + + Bold and italic text. + + + + + Underlined text. + + + + + Text with a line through the middle. + + + + + Backward compatibility. + + + + + Normal text. + + + + + Bold text. + + + + + Italic text. + + + + + Bold and italic text. + + + + + Underlined text. + + + + + Text with a line through the middle. + + + + + Determines whether rendering based on GDI+ or WPF. + For internal use in hybrid build only only. + + + + + Rendering does not depent on a particular technology. + + + + + Renders using GDI+. + + + + + Renders using WPF (including Silverlight). + + + + + Universal Windows Platform. + + + + + Type of the path data. + + + + + Specifies how the content of an existing PDF page and new content is combined. + + + + + The new content is inserted behind the old content and any subsequent drawing in done above the existing graphic. + + + + + The new content is inserted before the old content and any subsequent drawing in done beneath the existing graphic. + + + + + The new content entirely replaces the old content and any subsequent drawing in done on a blank page. + + + + + Specifies the unit of measure. + + + + + Specifies a printer's point (1/72 inch) as the unit of measure. + + + + + Specifies the inch (2.54 cm) as the unit of measure. + + + + + Specifies the millimeter as the unit of measure. + + + + + Specifies the centimeter as the unit of measure. + + + + + Specifies a presentation point (1/96 inch) as the unit of measure. + + + + + Specifies all pre-defined colors. Used to identify the pre-defined colors and to + localize their names. + + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + A pre-defined color. + + + + Specifies the alignment of a text string relative to its layout rectangle + + + + + Specifies the text be aligned near the layout. + In a left-to-right layout, the near position is left. In a right-to-left layout, the near + position is right. + + + + + Specifies that text is aligned in the center of the layout rectangle. + + + + + Specifies that text is aligned far from the origin position of the layout rectangle. + In a left-to-right layout, the far position is right. In a right-to-left layout, the far + position is left. + + + + + Specifies that text is aligned relative to its base line. + With this option the layout rectangle must have a height of 0. + + + + + Specifies the direction of a linear gradient. + + + + + Specifies a gradient from left to right. + + + + + Specifies a gradient from top to bottom. + + + + + Specifies a gradient from upper left to lower right. + + + + + Specifies a gradient from upper right to lower left. + + + + + Specifies the available cap styles with which an XPen object can start and end a line. + + + + + Specifies a flat line cap. + + + + + Specifies a round line cap. + + + + + Specifies a square line cap. + + + + + Specifies how to join consecutive line or curve segments in a figure or subpath. + + + + + Specifies a mitered join. This produces a sharp corner or a clipped corner, + depending on whether the length of the miter exceeds the miter limit + + + + + Specifies a circular join. This produces a smooth, circular arc between the lines. + + + + + Specifies a beveled join. This produces a diagonal corner. + + + + + Specifies the order for matrix transform operations. + + + + + The new operation is applied before the old operation. + + + + + The new operation is applied after the old operation. + + + + + Specifies the direction of the y-axis. + + + + + Increasing Y values go downwards. This is the default. + + + + + Increasing Y values go upwards. This is only possible when drawing on a PDF page. + It is not implemented when drawing on a System.Drawing.Graphics object. + + + + + Specifies whether smoothing (or antialiasing) is applied to lines and curves + and the edges of filled areas. + + + + + Specifies an invalid mode. + + + + + Specifies the default mode. + + + + + Specifies high speed, low quality rendering. + + + + + Specifies high quality, low speed rendering. + + + + + Specifies no antialiasing. + + + + + Specifies antialiased rendering. + + + + + Specifies the alignment of a text string relative to its layout rectangle. + + + + + Specifies the text be aligned near the layout. + In a left-to-right layout, the near position is left. In a right-to-left layout, the near + position is right. + + + + + Specifies that text is aligned in the center of the layout rectangle. + + + + + Specifies that text is aligned far from the origin position of the layout rectangle. + In a left-to-right layout, the far position is right. In a right-to-left layout, the far + position is left. + + + + + Internal implementation class of XFontFamily. + + + + + Gets the family name this family was originally created with. + + + + + Gets the name that uniquely identifies this font family. + + + + + Gets the underlying GDI+ font family object. + Is null if the font was created by a font resolver. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + A bunch of functions that do not have a better place. + + + + + Measure string directly from font data. + + + + + Calculates an Adler32 checksum combined with the buffer length + in a 64 bit unsigned integer. + + + + + Helper class for Geometry paths. + + + + + Creates between 1 and 5 Béziers curves from parameters specified like in GDI+. + + + + + Calculates the quadrant (0 through 3) of the specified angle. If the angle lies on an edge + (0, 90, 180, etc.) the result depends on the details how the angle is used. + + + + + Appends a Bézier curve for an arc within a full quadrant. + + + + + Creates between 1 and 5 Béziers curves from parameters specified like in WPF. + + + + + Represents a stack of XGraphicsState and XGraphicsContainer objects. + + + + + Helper class for processing image files. + + + + + Represents the internal state of an XGraphics object. + Used when the state is saved and restored. + + + + + Gets or sets the current transformation matrix. + + + + + Called after this instanced was pushed on the internal graphics stack. + + + + + Called after this instanced was popped from the internal graphics stack. + + + + + This interface will be implemented by specialized classes, one for JPEG, one for BMP, one for PNG, one for GIF. Maybe more. + + + + + Imports the image. Returns null if the image importer does not support the format. + + + + + Prepares the image data needed for the PDF file. + + + + + Helper for dealing with Stream data. + + + + + Resets this instance. + + + + + Gets the original stream. + + + + + Gets the data as byte[]. + + + + + Gets the length of Data. + + + + + The imported image. + + + + + Initializes a new instance of the class. + + + + + Gets information about the image. + + + + + Gets a value indicating whether image data for the PDF file was already prepared. + + + + + Gets the image data needed for the PDF file. + + + + + Public information about the image, filled immediately. + Note: The stream will be read and decoded on the first call to PrepareImageData(). + ImageInformation can be filled for corrupted images that will throw an expection on PrepareImageData(). + + + + + Standard JPEG format (RGB). + + + + + Grayscale JPEG format. + + + + + JPEG file with inverted CMYK, thus RGBW. + + + + + JPEG file with CMYK. + + + + + The horizontal DPI (dots per inch). Can be 0 if not supported by the image format. + Note: JFIF (JPEG) files may contain either DPI or DPM or just the aspect ratio. Windows BMP files will contain DPM. Other formats may support any combination, including none at all. + + + + + The vertical DPI (dots per inch). Can be 0 if not supported by the image format. + + + + + The horizontal DPM (dots per meter). Can be 0 if not supported by the image format. + + + + + The vertical DPM (dots per meter). Can be 0 if not supported by the image format. + + + + + The horizontal component of the aspect ratio. Can be 0 if not supported by the image format. + Note: Aspect ratio will be set if either DPI or DPM was set, but may also be available in the absence of both DPI and DPM. + + + + + The vertical component of the aspect ratio. Can be 0 if not supported by the image format. + + + + + The colors used. Only valid for images with palettes, will be 0 otherwise. + + + + + Contains internal data. This includes a reference to the Stream if data for PDF was not yet prepared. + + + + + Gets the image. + + + + + Contains data needed for PDF. Will be prepared when needed. + + + + + Bitmap refers to the format used in PDF. Will be used for BMP, PNG, TIFF, GIF and others. + + + + + Initializes a new instance of the class. + + + + + Contains data needed for PDF. Will be prepared when needed. + Bitmap refers to the format used in PDF. Will be used for BMP, PNG, TIFF, GIF and others. + + + + + Gets the data. + + + + + Gets the length. + + + + + Gets the data. + + + + + Gets the length. + + + + + Image data needed for PDF bitmap images. + + + + + Initializes a new instance of the class. + + + + + Gets the data. + + + + + Gets the length. + + + + + True if first line is the top line, false if first line is the bottom line of the image. When needed, lines will be reversed while converting data into PDF format. + + + + + The offset of the image data in Data. + + + + + The offset of the color palette in Data. + + + + + Copies images without color palette. + + 4 (32bpp RGB), 3 (24bpp RGB, 32bpp ARGB) + 8 + true (ARGB), false (RGB) + Destination + + + + Imported JPEG image. + + + + + Initializes a new instance of the class. + + + + + Contains data needed for PDF. Will be prepared when needed. + + + + + Gets the data. + + + + + Gets the length. + + + + + Private data for JPEG images. + + + + + Initializes a new instance of the class. + + + + + Gets the data. + + + + + Gets the length. + + + + + The class that imports images of various formats. + + + + + Gets the image importer. + + + + + Imports the image. + + + + + Imports the image. + + + + + Represents an abstract drawing surface for PdfPages. + + + + + Draws a straight line. + + + + + Draws a series of straight lines. + + + + + Draws a Bézier spline. + + + + + Draws a series of Bézier splines. + + + + + Draws a cardinal spline. + + + + + Draws an arc. + + + + + Draws a rectangle. + + + + + Draws a series of rectangles. + + + + + Draws a rectangle with rounded corners. + + + + + Draws an ellipse. + + + + + Draws a polygon. + + + + + Draws a pie. + + + + + Draws a cardinal spline. + + + + + Draws a graphical path. + + + + + Draws a series of glyphs identified by the specified text and font. + + + + + Draws an image. + + + + + Saves the current graphics state without changing it. + + + + + Restores the specified graphics state. + + + + + + + + + + + + + + + Gets or sets the transformation matrix. + + + + + Writes a comment to the output stream. Comments have no effect on the rendering of the output. + + + + + Specifies details about how the font is used in PDF creation. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets a value indicating the font embedding. + + + + + Gets a value indicating how the font is encoded. + + + + + Gets the default options with WinAnsi encoding and always font embedding. + + + + + Gets the default options with Unicode encoding and always font embedding. + + + + + Provides functionality to load a bitmap image encoded in a specific format. + + + + + Gets a new instance of the PNG image decoder. + + + + + Provides functionality to save a bitmap image in a specific format. + + + + + Gets a new instance of the PNG image encoder. + + + + + Gets or sets the bitmap source to be encoded. + + + + + When overridden in a derived class saves the image on the specified stream + in the respective format. + + + + + Saves the image on the specified stream in PNG format. + + + + + Defines a pixel based bitmap image. + + + + + Initializes a new instance of the class. + + + + + Creates a default 24 bit ARGB bitmap with the specified pixel size. + + + + + Classes derived from this abstract base class define objects used to fill the + interiors of paths. + + + + + Brushes for all the pre-defined colors. + + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + Gets a pre-defined XBrush object. + + + + Represents a RGB, CMYK, or gray scale color. + + + + + Creates an XColor structure from a 32-bit ARGB value. + + + + + Creates an XColor structure from a 32-bit ARGB value. + + + + + Creates an XColor structure from the specified 8-bit color values (red, green, and blue). + The alpha value is implicitly 255 (fully opaque). + + + + + Creates an XColor structure from the four ARGB component (alpha, red, green, and blue) values. + + + + + Creates an XColor structure from the specified alpha value and color. + + + + + Creates an XColor structure from the specified CMYK values. + + + + + Creates an XColor structure from the specified CMYK values. + + + + + Creates an XColor structure from the specified gray value. + + + + + Creates an XColor from the specified pre-defined color. + + + + + Creates an XColor from the specified name of a pre-defined color. + + + + + Gets or sets the color space to be used for PDF generation. + + + + + Indicates whether this XColor structure is uninitialized. + + + + + Determines whether the specified object is a Color structure and is equivalent to this + Color structure. + + + + + Returns the hash code for this instance. + + + + + Determines whether two colors are equal. + + + + + Determines whether two colors are not equal. + + + + + Gets a value indicating whether this color is a known color. + + + + + Gets the hue-saturation-brightness (HSB) hue value, in degrees, for this color. + + The hue, in degrees, of this color. The hue is measured in degrees, ranging from 0 through 360, in HSB color space. + + + + Gets the hue-saturation-brightness (HSB) saturation value for this color. + + The saturation of this color. The saturation ranges from 0 through 1, where 0 is grayscale and 1 is the most saturated. + + + + Gets the hue-saturation-brightness (HSB) brightness value for this color. + + The brightness of this color. The brightness ranges from 0 through 1, where 0 represents black and 1 represents white. + + + + One of the RGB values changed; recalculate other color representations. + + + + + One of the CMYK values changed; recalculate other color representations. + + + + + The gray scale value changed; recalculate other color representations. + + + + + Gets or sets the alpha value the specifies the transparency. + The value is in the range from 1 (opaque) to 0 (completely transparent). + + + + + Gets or sets the red value. + + + + + Gets or sets the green value. + + + + + Gets or sets the blue value. + + + + + Gets the RGB part value of the color. Internal helper function. + + + + + Gets the ARGB part value of the color. Internal helper function. + + + + + Gets or sets the cyan value. + + + + + Gets or sets the magenta value. + + + + + Gets or sets the yellow value. + + + + + Gets or sets the black (or key) value. + + + + + Gets or sets the gray scale value. + + + + + Represents the null color. + + + + + Special property for XmlSerializer only. + + + + + Manages the localization of the color class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The culture info. + + + + Gets a known color from an ARGB value. Throws an ArgumentException if the value is not a known color. + + + + + Gets all known colors. + + Indicates whether to include the color Transparent. + + + + Converts a known color to a localized color name. + + + + + Converts a color to a localized color name or an ARGB value. + + + + + Represents a set of 141 pre-defined RGB colors. Incidentally the values are the same + as in System.Drawing.Color. + + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + Gets a predefined color. + + + + Converts XGraphics enums to GDI+ enums. + + + + + Defines an object used to draw text. + + + + + Initializes a new instance of the class. + + Name of the font family. + The em size. + + + + Initializes a new instance of the class. + + Name of the font family. + The em size. + The font style. + + + + Initializes a new instance of the class. + + Name of the font family. + The em size. + The font style. + Additional PDF options. + + + + Initializes a new instance of the class with enforced style simulation. + Only for testing PDFsharp. + + + + + Initializes a new instance of the class from a System.Drawing.FontFamily. + + The System.Drawing.FontFamily. + The em size. + The font style. + + + + Initializes a new instance of the class from a System.Drawing.FontFamily. + + The System.Drawing.FontFamily. + The em size. + The font style. + Additional PDF options. + + + + Initializes a new instance of the class from a System.Drawing.Font. + + The System.Drawing.Font. + + + + Initializes a new instance of the class from a System.Drawing.Font. + + The System.Drawing.Font. + Additional PDF options. + + + + Initializes this instance by computing the glyph typeface, font family, font source and TrueType fontface. + (PDFsharp currently only deals with TrueType fonts.) + + + + + A GDI+ font object is used to setup the internal font objects. + + + + + Code separated from Metric getter to make code easier to debug. + (Setup properties in their getters caused side effects during debugging because Visual Studio calls a getter + to early to show its value in a debugger window.) + + + + + Gets the XFontFamily object associated with this XFont object. + + + + + WRONG: Gets the face name of this Font object. + Indeed it returns the font family name. + + + + + Gets the em-size of this font measured in the unit of this font object. + + + + + Gets style information for this Font object. + + + + + Indicates whether this XFont object is bold. + + + + + Indicates whether this XFont object is italic. + + + + + Indicates whether this XFont object is stroke out. + + + + + Indicates whether this XFont object is underlined. + + + + + Temporary HACK for XPS to PDF converter. + + + + + Gets the PDF options of the font. + + + + + Indicates whether this XFont is encoded as Unicode. + + + + + Gets the cell space for the font. The CellSpace is the line spacing, the sum of CellAscent and CellDescent and optionally some extra space. + + + + + Gets the cell ascent, the area above the base line that is used by the font. + + + + + Gets the cell descent, the area below the base line that is used by the font. + + + + + Gets the font metrics. + + The metrics. + + + + Returns the line spacing, in pixels, of this font. The line spacing is the vertical distance + between the base lines of two consecutive lines of text. Thus, the line spacing includes the + blank space between lines along with the height of the character itself. + + + + + Returns the line spacing, in the current unit of a specified Graphics object, of this font. + The line spacing is the vertical distance between the base lines of two consecutive lines of + text. Thus, the line spacing includes the blank space between lines along with the height of + + + + + Gets the line spacing of this font. + + + + + Override style simulations by using the value of StyleSimulations. + + + + + Used to enforce style simulations by renderer. For development purposes only. + + + + + Gets the GDI family. + + The GDI family. + + + + Implicit conversion form Font to XFont + + + + + Cache PdfFontTable.FontSelector to speed up finding the right PdfFont + if this font is used more than once. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + Global cache of all internal font family objects. + + + + + Caches the font family or returns a previously cached one. + + + + + Gets the singleton. + + + + + Maps family name to internal font family. + + + + + Defines a group of typefaces having a similar basic design and certain variations in styles. + + + + + Initializes a new instance of the class. + + The family name of a font. + + + + Initializes a new instance of the class from FontFamilyInternal. + + + + + An XGlyphTypeface for a font source that comes from a custom font resolver + creates a solitary font family exclusively for it. + + + + + Gets the name of the font family. + + + + + Returns the cell ascent, in design units, of the XFontFamily object of the specified style. + + + + + Returns the cell descent, in design units, of the XFontFamily object of the specified style. + + + + + Gets the height, in font design units, of the em square for the specified style. + + + + + Returns the line spacing, in design units, of the FontFamily object of the specified style. + The line spacing is the vertical distance between the base lines of two consecutive lines of text. + + + + + Indicates whether the specified FontStyle enumeration is available. + + + + + Returns an array that contains all the FontFamily objects associated with the current graphics context. + + + + + Returns an array that contains all the FontFamily objects available for the specified + graphics context. + + + + + The implementation sigleton of font family; + + + + + Collects information of a font. + + + + + Gets the font name. + + + + + Gets the ascent value. + + + + + Gets the ascent value. + + + + + Gets the descent value. + + + + + Gets the average width. + + + + + Gets the height of capital letters. + + + + + Gets the leading value. + + + + + Gets the line spacing value. + + + + + Gets the maximum width of a character. + + + + + Gets an internal value. + + + + + Gets an internal value. + + + + + Gets the height of a lower-case character. + + + + + Gets the underline position. + + + + + Gets the underline thicksness. + + + + + Gets the strikethrough position. + + + + + Gets the strikethrough thicksness. + + + + + Represents a graphical object that can be used to render retained graphics on it. + In GDI+ it is represented by a Metafile, in WPF by a DrawingVisual, and in PDF by a Form XObjects. + + + + + The form is an imported PDF page. + + + + + The template is just created. + + + + + XGraphics.FromForm() was called. + + + + + The form was drawn at least once and is 'frozen' now. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class that represents a page of a PDF document. + + The PDF document. + The view box of the page. + + + + Initializes a new instance of the class that represents a page of a PDF document. + + The PDF document. + The size of the page. + + + + Initializes a new instance of the class that represents a page of a PDF document. + + The PDF document. + The width of the page. + The height of the page + + + + This function should be called when drawing the content of this form is finished. + The XGraphics object used for drawing the content is disposed by this function and + cannot be used for any further drawing operations. + PDFsharp automatically calls this function when this form was used the first time + in a DrawImage function. + + + + + Called from XGraphics constructor that creates an instance that work on this form. + + + + + Disposes this instance. + + + + + Sets the form in the state FormState.Finished. + + + + + Gets the owning document. + + + + + Gets the color model used in the underlying PDF document. + + + + + Gets a value indicating whether this instance is a template. + + + + + Get the width of the page identified by the property PageNumber. + + + + + Get the width of the page identified by the property PageNumber. + + + + + Get the width in point of this image. + + + + + Get the height in point of this image. + + + + + Get the width of the page identified by the property PageNumber. + + + + + Get the height of the page identified by the property PageNumber. + + + + + Get the size of the page identified by the property PageNumber. + + + + + Gets the view box of the form. + + + + + Gets 72, the horizontal resolution by design of a form object. + + + + + Gets 72 always, the vertical resolution by design of a form object. + + + + + Gets or sets the bounding box. + + + + + Gets or sets the transformation matrix. + + + + + Implements the interface because the primary function is internal. + + + + + Gets the resource name of the specified font within this form. + + + + + Tries to get the resource name of the specified font data within this form. + Returns null if no such font exists. + + + + + Gets the resource name of the specified font data within this form. + + + + + Gets the resource name of the specified image within this form. + + + + + Implements the interface because the primary function is internal. + + + + + Gets the resource name of the specified form within this form. + + + + + Implements the interface because the primary function is internal. + + + + + The PdfFormXObject gets invalid when PageNumber or transform changed. This is because a modification + of an XPdfForm must not change objects that are already been drawn. + + + + + The bytes of a font file. + + + + + Gets an existing font source or creates a new one. + A new font source is cached in font factory. + + + + + Gets or sets the fontface. + + + + + Gets the key that uniquely identifies this font source. + + + + + Gets the name of the font's name table. + + + + + Gets the bytes of the font. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + Specifies a physical font face that corresponds to a font file on the disk or in memory. + + + + + Gets the name of the font face. This can be a file name, an uri, or a GUID. + + + + + Gets the English family name of the font, for example "Arial". + + + + + Gets the English subfamily name of the font, + for example "Bold". + + + + + Gets the English display name of the font, + for example "Arial italic". + + + + + Gets a value indicating whether the font weight is bold. + + + + + Gets a value indicating whether the font style is italic. + + + + + Gets the suffix of the face name in a PDF font and font descriptor. + The name based on the effective value of bold and italic from the OS/2 table. + + + + + Computes the bijective key for a typeface. + + + + + Computes the bijective key for a typeface. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + Holds information about the current state of the XGraphics object. + + + + + Represents a drawing surface for a fixed size page. + + + + + Initializes a new instance of the XGraphics class for drawing on a PDF page. + + + + + Initializes a new instance of the XGraphics class used for drawing on a form. + + + + + Creates the measure context. This is a graphics context created only for querying measures of text. + Drawing on a measure context has no effect. + + + + + Creates a new instance of the XGraphics class from a PdfSharp.Pdf.PdfPage object. + + + + + Creates a new instance of the XGraphics class from a PdfSharp.Pdf.PdfPage object. + + + + + Creates a new instance of the XGraphics class from a PdfSharp.Pdf.PdfPage object. + + + + + Creates a new instance of the XGraphics class from a PdfSharp.Pdf.PdfPage object. + + + + + Creates a new instance of the XGraphics class from a PdfSharp.Pdf.PdfPage object. + + + + + Creates a new instance of the XGraphics class from a PdfSharp.Pdf.PdfPage object. + + + + + Creates a new instance of the XGraphics class from a PdfSharp.Pdf.PdfPage object. + + + + + Creates a new instance of the XGraphics class from a PdfSharp.Drawing.XPdfForm object. + + + + + Creates a new instance of the XGraphics class from a PdfSharp.Drawing.XForm object. + + + + + Creates a new instance of the XGraphics class from a PdfSharp.Drawing.XForm object. + + + + + Creates a new instance of the XGraphics class from a PdfSharp.Drawing.XImage object. + + + + + Internal setup. + + + + + Releases all resources used by this object. + + + + + Internal hack for MigraDoc. Will be removed in further releases. + Unicode support requires a global refactoring of MigraDoc and will be done in further releases. + + + + + A value indicating whether GDI+ or WPF is used as context. + + + + + Gets or sets the unit of measure used for page coordinates. + CURRENTLY ONLY POINT IS IMPLEMENTED. + + + + + Gets or sets the a value indicating in which direction y-value grow. + + + + + Gets the current page origin. Setting the origin is not yet implemented. + + + + + Gets the current size of the page. + + + + + Draws a line connecting two XPoint structures. + + + + + Draws a line connecting the two points specified by coordinate pairs. + + + + + Draws a series of line segments that connect an array of points. + + + + + Draws a series of line segments that connect an array of x and y pairs. + + + + + Draws a Bézier spline defined by four points. + + + + + Draws a Bézier spline defined by four points. + + + + + Draws a series of Bézier splines from an array of points. + + + + + Draws a cardinal spline through a specified array of points. + + + + + Draws a cardinal spline through a specified array of point using a specified tension. + The drawing begins offset from the beginning of the array. + + + + + Draws a cardinal spline through a specified array of points using a specified tension. + + + + + Draws an arc representing a portion of an ellipse. + + + + + Draws an arc representing a portion of an ellipse. + + + + + Draws a rectangle. + + + + + Draws a rectangle. + + + + + Draws a rectangle. + + + + + Draws a rectangle. + + + + + Draws a rectangle. + + + + + Draws a rectangle. + + + + + Draws a series of rectangles. + + + + + Draws a series of rectangles. + + + + + Draws a series of rectangles. + + + + + Draws a rectangles with round corners. + + + + + Draws a rectangles with round corners. + + + + + Draws a rectangles with round corners. + + + + + Draws a rectangles with round corners. + + + + + Draws a rectangles with round corners. + + + + + Draws a rectangles with round corners. + + + + + Draws an ellipse defined by a bounding rectangle. + + + + + Draws an ellipse defined by a bounding rectangle. + + + + + Draws an ellipse defined by a bounding rectangle. + + + + + Draws an ellipse defined by a bounding rectangle. + + + + + Draws an ellipse defined by a bounding rectangle. + + + + + Draws an ellipse defined by a bounding rectangle. + + + + + Draws a polygon defined by an array of points. + + + + + Draws a polygon defined by an array of points. + + + + + Draws a polygon defined by an array of points. + + + + + Draws a pie defined by an ellipse. + + + + + Draws a pie defined by an ellipse. + + + + + Draws a pie defined by an ellipse. + + + + + Draws a pie defined by an ellipse. + + + + + Draws a pie defined by an ellipse. + + + + + Draws a pie defined by an ellipse. + + + + + Draws a closed cardinal spline defined by an array of points. + + + + + Draws a closed cardinal spline defined by an array of points. + + + + + Draws a closed cardinal spline defined by an array of points. + + + + + Draws a closed cardinal spline defined by an array of points. + + + + + Draws a closed cardinal spline defined by an array of points. + + + + + Draws a closed cardinal spline defined by an array of points. + + + + + Draws a closed cardinal spline defined by an array of points. + + + + + Draws a closed cardinal spline defined by an array of points. + + + + + Draws a graphical path. + + + + + Draws a graphical path. + + + + + Draws a graphical path. + + + + + Draws the specified text string. + + + + + Draws the specified text string. + + + + + Draws the specified text string. + + + + + Draws the specified text string. + + + + + Draws the specified text string. + + + + + Draws the specified text string. + + + + + Measures the specified string when drawn with the specified font. + + + + + Measures the specified string when drawn with the specified font. + + + + + Draws the specified image. + + + + + Draws the specified image. + + + + + Draws the specified image. + + + + + Draws the specified image. + + + + + Draws the specified image. + + + + + Checks whether drawing is allowed and disposes the XGraphics object, if necessary. + + + + + Draws the specified bar code. + + + + + Draws the specified bar code. + + + + + Draws the specified bar code. + + + + + Draws the specified data matrix code. + + + + + Draws the specified data matrix code. + + + + + Saves the current state of this XGraphics object and identifies the saved state with the + returned XGraphicsState object. + + + + + Restores the state of this XGraphics object to the state represented by the specified + XGraphicsState object. + + + + + Restores the state of this XGraphics object to the state before the most recently call of Save. + + + + + Saves a graphics container with the current state of this XGraphics and + opens and uses a new graphics container. + + + + + Saves a graphics container with the current state of this XGraphics and + opens and uses a new graphics container. + + + + + Closes the current graphics container and restores the state of this XGraphics + to the state saved by a call to the BeginContainer method. + + + + + Gets the current graphics state level. The default value is 0. Each call of Save or BeginContainer + increased and each call of Restore or EndContainer decreased the value by 1. + + + + + Gets or sets the smoothing mode. + + The smoothing mode. + + + + Applies the specified translation operation to the transformation matrix of this object by + prepending it to the object's transformation matrix. + + + + + Applies the specified translation operation to the transformation matrix of this object + in the specified order. + + + + + Applies the specified scaling operation to the transformation matrix of this object by + prepending it to the object's transformation matrix. + + + + + Applies the specified scaling operation to the transformation matrix of this object + in the specified order. + + + + + Applies the specified scaling operation to the transformation matrix of this object by + prepending it to the object's transformation matrix. + + + + + Applies the specified scaling operation to the transformation matrix of this object + in the specified order. + + + + + Applies the specified scaling operation to the transformation matrix of this object by + prepending it to the object's transformation matrix. + + + + + Applies the specified scaling operation to the transformation matrix of this object by + prepending it to the object's transformation matrix. + + + + + Applies the specified rotation operation to the transformation matrix of this object by + prepending it to the object's transformation matrix. + + + + + Applies the specified rotation operation to the transformation matrix of this object + in the specified order. The angle unit of measure is degree. + + + + + Applies the specified rotation operation to the transformation matrix of this object by + prepending it to the object's transformation matrix. + + + + + Applies the specified rotation operation to the transformation matrix of this object by + prepending it to the object's transformation matrix. + + + + + Applies the specified shearing operation to the transformation matrix of this object by + prepending it to the object's transformation matrix. + ShearTransform is a synonym for SkewAtTransform. + Parameter shearX specifies the horizontal skew which is measured in degrees counterclockwise from the y-axis. + Parameter shearY specifies the vertical skew which is measured in degrees counterclockwise from the x-axis. + + + + + Applies the specified shearing operation to the transformation matrix of this object + in the specified order. + ShearTransform is a synonym for SkewAtTransform. + Parameter shearX specifies the horizontal skew which is measured in degrees counterclockwise from the y-axis. + Parameter shearY specifies the vertical skew which is measured in degrees counterclockwise from the x-axis. + + + + + Applies the specified shearing operation to the transformation matrix of this object by + prepending it to the object's transformation matrix. + ShearTransform is a synonym for SkewAtTransform. + Parameter shearX specifies the horizontal skew which is measured in degrees counterclockwise from the y-axis. + Parameter shearY specifies the vertical skew which is measured in degrees counterclockwise from the x-axis. + + + + + Applies the specified shearing operation to the transformation matrix of this object by + prepending it to the object's transformation matrix. + ShearTransform is a synonym for SkewAtTransform. + Parameter shearX specifies the horizontal skew which is measured in degrees counterclockwise from the y-axis. + Parameter shearY specifies the vertical skew which is measured in degrees counterclockwise from the x-axis. + + + + + Multiplies the transformation matrix of this object and specified matrix. + + + + + Multiplies the transformation matrix of this object and specified matrix in the specified order. + + + + + Gets the current transformation matrix. + The transformation matrix cannot be set. Instead use Save/Restore or BeginContainer/EndContainer to + save the state before Transform is called and later restore to the previous transform. + + + + + Applies a new transformation to the current transformation matrix. + + + + + Updates the clip region of this XGraphics to the intersection of the + current clip region and the specified rectangle. + + + + + Updates the clip region of this XGraphics to the intersection of the + current clip region and the specified graphical path. + + + + + Writes a comment to the output stream. Comments have no effect on the rendering of the output. + They may be useful to mark a position in a content stream of a PDF document. + + + + + Permits access to internal data. + + + + + (Under construction. May change in future versions.) + + + + + The transformation matrix from the XGraphics page space to the Graphics world space. + (The name 'default view matrix' comes from Microsoft OS/2 Presentation Manager. I choose + this name because I have no better one.) + + + + + Indicates whether to send drawing operations to _gfx or _dc. + + + + + Interface to an (optional) renderer. Currently it is the XGraphicsPdfRenderer, if defined. + + + + + The transformation matrix from XGraphics world space to page unit space. + + + + + The graphics state stack. + + + + + Gets the PDF page that serves as drawing surface if PDF is rendered, + or null, if no such object exists. + + + + + Provides access to internal data structures of the XGraphics class. + + + + + (This class is under construction.) + Currently used in MigraDoc + + + + + Gets the smallest rectangle in default page space units that completely encloses the specified rect + in world space units. + + + + + Represents the internal state of an XGraphics object. + + + + + Represents a series of connected lines and curves. + + + + + Initializes a new instance of the class. + + + + + Clones this instance. + + + + + Adds a line segment to current figure. + + + + + Adds a line segment to current figure. + + + + + Adds a series of connected line segments to current figure. + + + + + Adds a cubic Bézier curve to the current figure. + + + + + Adds a cubic Bézier curve to the current figure. + + + + + Adds a sequence of connected cubic Bézier curves to the current figure. + + + + + Adds a spline curve to the current figure. + + + + + Adds a spline curve to the current figure. + + + + + Adds a spline curve to the current figure. + + + + + Adds an elliptical arc to the current figure. + + + + + Adds an elliptical arc to the current figure. + + + + + Adds an elliptical arc to the current figure. The arc is specified WPF like. + + + + + Adds a rectangle to this path. + + + + + Adds a rectangle to this path. + + + + + Adds a series of rectangles to this path. + + + + + Adds a rectangle with rounded corners to this path. + + + + + Adds an ellipse to the current path. + + + + + Adds an ellipse to the current path. + + + + + Adds a polygon to this path. + + + + + Adds the outline of a pie shape to this path. + + + + + Adds the outline of a pie shape to this path. + + + + + Adds a closed curve to this path. + + + + + Adds a closed curve to this path. + + + + + Adds the specified path to this path. + + + + + Adds a text string to this path. + + + + + Adds a text string to this path. + + + + + Closes the current figure and starts a new figure. + + + + + Starts a new figure without closing the current figure. + + + + + Gets or sets an XFillMode that determines how the interiors of shapes are filled. + + + + + Converts each curve in this XGraphicsPath into a sequence of connected line segments. + + + + + Converts each curve in this XGraphicsPath into a sequence of connected line segments. + + + + + Converts each curve in this XGraphicsPath into a sequence of connected line segments. + + + + + Replaces this path with curves that enclose the area that is filled when this path is drawn + by the specified pen. + + + + + Replaces this path with curves that enclose the area that is filled when this path is drawn + by the specified pen. + + + + + Replaces this path with curves that enclose the area that is filled when this path is drawn + by the specified pen. + + + + + Grants access to internal objects of this class. + + + + + Gets access to underlying Core graphics path. + + + + + Provides access to the internal data structures of XGraphicsPath. + This class prevents the public interface from pollution with internal functions. + + + + + Represents the internal state of an XGraphics object. + This class is used as a handle for restoring the context. + + + + + Defines an abstract base class for pixel based images. + + + + + Gets the width of the image in pixels. + + + + + Gets the height of the image in pixels. + + + + + Defines an object used to draw image files (bmp, png, jpeg, gif) and PDF forms. + An abstract base class that provides functionality for the Bitmap and Metafile descended classes. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from an image read by ImageImporter. + + The image. + image + + + + Creates an image from the specified file. + + The path to a BMP, PNG, GIF, JPEG, TIFF, or PDF file. + + + + Creates an image from the specified stream.
+ Silverlight supports PNG and JPEG only. +
+ The stream containing a BMP, PNG, GIF, JPEG, TIFF, or PDF file. +
+ + + Tests if a file exist. Supports PDF files with page number suffix. + + The path to a BMP, PNG, GIF, JPEG, TIFF, or PDF file. + + + + Under construction + + + + + Disposes underlying GDI+ object. + + + + + Gets the width of the image. + + + + + Gets the height of the image. + + + + + The factor for conversion from DPM to PointWidth or PointHeight. + 72 points per inch, 1000 mm per meter, 25.4 mm per inch => 72 * 1000 / 25.4. + + + + + The factor for conversion from DPM to PointWidth or PointHeight. + 1000 mm per meter, 25.4 mm per inch => 1000 / 25.4. + + + + + Gets the width of the image in point. + + + + + Gets the height of the image in point. + + + + + Gets the width of the image in pixels. + + + + + Gets the height of the image in pixels. + + + + + Gets the size in point of the image. + + + + + Gets the horizontal resolution of the image. + + + + + Gets the vertical resolution of the image. + + + + + Gets or sets a flag indicating whether image interpolation is to be performed. + + + + + Gets the format of the image. + + + + + If path starts with '*' the image is created from a stream and the path is a GUID. + + + + + Contains a reference to the original stream if image was created from a stream. + + + + + Cache PdfImageTable.ImageSelector to speed up finding the right PdfImage + if this image is used more than once. + + + + + Specifies the format of the image. + + + + + Determines whether the specified object is equal to the current object. + + + + + Returns the hash code for this instance. + + + + + Gets the Portable Network Graphics (PNG) image format. + + + + + Gets the Graphics Interchange Format (GIF) image format. + + + + + Gets the Joint Photographic Experts Group (JPEG) image format. + + + + + Gets the Tag Image File Format (TIFF) image format. + + + + + Gets the Portable Document Format (PDF) image format + + + + + Gets the Windows icon image format. + + + + + Defines a Brush with a linear gradient. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets an XMatrix that defines a local geometric transform for this LinearGradientBrush. + + + + + Translates the brush with the specified offset. + + + + + Translates the brush with the specified offset. + + + + + Scales the brush with the specified scalars. + + + + + Scales the brush with the specified scalars. + + + + + Rotates the brush with the specified angle. + + + + + Rotates the brush with the specified angle. + + + + + Multiply the brush transformation matrix with the specified matrix. + + + + + Multiply the brush transformation matrix with the specified matrix. + + + + + Resets the brush transformation matrix with identity matrix. + + + + + Represents a 3-by-3 matrix that represents an affine 2D transformation. + + + + + Initializes a new instance of the XMatrix struct. + + + + + Gets the identity matrix. + + + + + Sets this matrix into an identity matrix. + + + + + Gets a value indicating whether this matrix instance is the identity matrix. + + + + + Gets an array of double values that represents the elements of this matrix. + + + + + Multiplies two matrices. + + + + + Multiplies two matrices. + + + + + Appends the specified matrix to this matrix. + + + + + Prepends the specified matrix to this matrix. + + + + + Appends the specified matrix to this matrix. + + + + + Prepends the specified matrix to this matrix. + + + + + Multiplies this matrix with the specified matrix. + + + + + Appends a translation of the specified offsets to this matrix. + + + + + Appends a translation of the specified offsets to this matrix. + + + + + Prepends a translation of the specified offsets to this matrix. + + + + + Translates the matrix with the specified offsets. + + + + + Appends the specified scale vector to this matrix. + + + + + Appends the specified scale vector to this matrix. + + + + + Prepends the specified scale vector to this matrix. + + + + + Scales the matrix with the specified scalars. + + + + + Scales the matrix with the specified scalar. + + + + + Appends the specified scale vector to this matrix. + + + + + Prepends the specified scale vector to this matrix. + + + + + Scales the matrix with the specified scalar. + + + + + Function is obsolete. + + + + + Apppends the specified scale about the specified point of this matrix. + + + + + Prepends the specified scale about the specified point of this matrix. + + + + + Function is obsolete. + + + + + Appends a rotation of the specified angle to this matrix. + + + + + Prepends a rotation of the specified angle to this matrix. + + + + + Rotates the matrix with the specified angle. + + + + + Function is obsolete. + + + + + Appends a rotation of the specified angle at the specified point to this matrix. + + + + + Prepends a rotation of the specified angle at the specified point to this matrix. + + + + + Rotates the matrix with the specified angle at the specified point. + + + + + Appends a rotation of the specified angle at the specified point to this matrix. + + + + + Prepends a rotation of the specified angle at the specified point to this matrix. + + + + + Rotates the matrix with the specified angle at the specified point. + + + + + Function is obsolete. + + + + + Appends a skew of the specified degrees in the x and y dimensions to this matrix. + + + + + Prepends a skew of the specified degrees in the x and y dimensions to this matrix. + + + + + Shears the matrix with the specified scalars. + + + + + Function is obsolete. + + + + + Appends a skew of the specified degrees in the x and y dimensions to this matrix. + + + + + Prepends a skew of the specified degrees in the x and y dimensions to this matrix. + + + + + Transforms the specified point by this matrix and returns the result. + + + + + Transforms the specified points by this matrix. + + + + + Multiplies all points of the specified array with the this matrix. + + + + + Transforms the specified vector by this Matrix and returns the result. + + + + + Transforms the specified vectors by this matrix. + + + + + Gets the determinant of this matrix. + + + + + Gets a value that indicates whether this matrix is invertible. + + + + + Inverts the matrix. + + + + + Gets or sets the value of the first row and first column of this matrix. + + + + + Gets or sets the value of the first row and second column of this matrix. + + + + + Gets or sets the value of the second row and first column of this matrix. + + + + + Gets or sets the value of the second row and second column of this matrix. + + + + + Gets or sets the value of the third row and first column of this matrix. + + + + + Gets or sets the value of the third row and second column of this matrix. + + + + + Determines whether the two matrices are equal. + + + + + Determines whether the two matrices are not equal. + + + + + Determines whether the two matrices are equal. + + + + + Determines whether this matrix is equal to the specified object. + + + + + Determines whether this matrix is equal to the specified matrix. + + + + + Returns the hash code for this instance. + + + + + Parses a matrix from a string. + + + + + Converts this XMatrix to a human readable string. + + + + + Converts this XMatrix to a human readable string. + + + + + Converts this XMatrix to a human readable string. + + + + + Sets the matrix. + + + + + Internal matrix helper. + + + + + Gets the DebuggerDisplayAttribute text. + + The debugger display. + + + + Represents a so called 'PDF form external object', which is typically an imported page of an external + PDF document. XPdfForm objects are used like images to draw an existing PDF page of an external + document in the current document. XPdfForm objects can only be placed in PDF documents. If you try + to draw them using a XGraphics based on an GDI+ context no action is taken if no placeholder image + is specified. Otherwise the place holder is drawn. + + + + + Initializes a new instance of the XPdfForm class from the specified path to an external PDF document. + Although PDFsharp internally caches XPdfForm objects it is recommended to reuse XPdfForm objects + in your code and change the PageNumber property if more than one page is needed form the external + document. Furthermore, because XPdfForm can occupy very much memory, it is recommended to + dispose XPdfForm objects if not needed anymore. + + + + + Initializes a new instance of the class from a stream. + + The stream. + + + + Creates an XPdfForm from a file. + + + + + Creates an XPdfForm from a stream. + + + + + Sets the form in the state FormState.Finished. + + + + + Frees the memory occupied by the underlying imported PDF document, even if other XPdfForm objects + refer to this document. A reuse of this object doesn't fail, because the underlying PDF document + is re-imported if necessary. + + + + + Gets or sets an image that is used for drawing if the current XGraphics object cannot handle + PDF forms. A place holder is useful for showing a preview of a page on the display, because + PDFsharp cannot render native PDF objects. + + + + + Gets the underlying PdfPage (if one exists). + + + + + Gets the number of pages in the PDF form. + + + + + Gets the width in point of the page identified by the property PageNumber. + + + + + Gets the height in point of the page identified by the property PageNumber. + + + + + Gets the width in point of the page identified by the property PageNumber. + + + + + Gets the height in point of the page identified by the property PageNumber. + + + + + Gets the width in point of the page identified by the property PageNumber. + + + + + Gets the height in point of the page identified by the property PageNumber. + + + + + Get the size of the page identified by the property PageNumber. + + + + + Gets or sets the transformation matrix. + + + + + Gets or sets the page number in the external PDF document this object refers to. The page number + is one-based, i.e. it is in the range from 1 to PageCount. The default value is 1. + + + + + Gets or sets the page index in the external PDF document this object refers to. The page index + is zero-based, i.e. it is in the range from 0 to PageCount - 1. The default value is 0. + + + + + Gets the underlying document from which pages are imported. + + + + + Extracts the page number if the path has the form 'MyFile.pdf#123' and returns + the actual path without the number sign and the following digits. + + + + + Defines an object used to draw lines and curves. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Clones this instance. + + + + + Gets or sets the color. + + + + + Gets or sets the width. + + + + + Gets or sets the line join. + + + + + Gets or sets the line cap. + + + + + Gets or sets the miter limit. + + + + + Gets or sets the dash style. + + + + + Gets or sets the dash offset. + + + + + Gets or sets the dash pattern. + + + + + Gets or sets a value indicating whether the pen enables overprint when used in a PDF document. + Experimental, takes effect only on CMYK color mode. + + + + + Pens for all the pre-defined colors. + + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + Gets a pre-defined XPen object. + + + + Represents a pair of floating point x- and y-coordinates that defines a point + in a two-dimensional plane. + + + + + Initializes a new instance of the XPoint class with the specified coordinates. + + + + + Determines whether two points are equal. + + + + + Determines whether two points are not equal. + + + + + Indicates whether the specified points are equal. + + + + + Indicates whether this instance and a specified object are equal. + + + + + Indicates whether this instance and a specified point are equal. + + + + + Returns the hash code for this instance. + + + + + Parses the point from a string. + + + + + Parses an array of points from a string. + + + + + Gets the x-coordinate of this XPoint. + + + + + Gets the x-coordinate of this XPoint. + + + + + Converts this XPoint to a human readable string. + + + + + Converts this XPoint to a human readable string. + + + + + Converts this XPoint to a human readable string. + + + + + Implements ToString. + + + + + Offsets the x and y value of this point. + + + + + Adds a point and a vector. + + + + + Adds a point and a size. + + + + + Adds a point and a vector. + + + + + Subtracts a vector from a point. + + + + + Subtracts a vector from a point. + + + + + Subtracts a point from a point. + + + + + Subtracts a size from a point. + + + + + Subtracts a point from a point. + + + + + Multiplies a point with a matrix. + + + + + Multiplies a point with a matrix. + + + + + Multiplies a point with a scalar value. + + + + + Multiplies a point with a scalar value. + + + + + Performs an explicit conversion from XPoint to XSize. + + + + + Performs an explicit conversion from XPoint to XVector. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + Makes fonts that are not installed on the system available within the current application domain.
+ In Silverlight required for all fonts used in PDF documents. +
+
+ + + Initializes a new instance of the class. + + + + + Gets the global font collection. + + + + + Adds the specified font data to the global PrivateFontCollection. + Family name and style are automatically retrieved from the font. + + + + + Adds the specified font data to the global PrivateFontCollection. + Family name and style are automatically retrieved from the font. + + + + + Stores a set of four floating-point numbers that represent the location and size of a rectangle. + + + + + Initializes a new instance of the XRect class. + + + + + Initializes a new instance of the XRect class. + + + + + Initializes a new instance of the XRect class. + + + + + Initializes a new instance of the XRect class. + + + + + Initializes a new instance of the XRect class. + + + + + Creates a rectangle from for straight lines. + + + + + Determines whether the two rectangles are equal. + + + + + Determines whether the two rectangles are not equal. + + + + + Determines whether the two rectangles are equal. + + + + + Determines whether this instance and the specified object are equal. + + + + + Determines whether this instance and the specified rect are equal. + + + + + Returns the hash code for this instance. + + + + + Parses the rectangle from a string. + + + + + Converts this XRect to a human readable string. + + + + + Converts this XRect to a human readable string. + + + + + Converts this XRect to a human readable string. + + + + + Gets the empty rectangle. + + + + + Gets a value indicating whether this instance is empty. + + + + + Gets or sets the location of the rectangle. + + + + + Gets or sets the size of the rectangle. + + + + + Gets or sets the X value of the rectangle. + + + + + Gets or sets the Y value of the rectangle. + + + + + Gets or sets the width of the rectangle. + + + + + Gets or sets the height of the rectangle. + + + + + Gets the x-axis value of the left side of the rectangle. + + + + + Gets the y-axis value of the top side of the rectangle. + + + + + Gets the x-axis value of the right side of the rectangle. + + + + + Gets the y-axis value of the bottom side of the rectangle. + + + + + Gets the position of the top-left corner of the rectangle. + + + + + Gets the position of the top-right corner of the rectangle. + + + + + Gets the position of the bottom-left corner of the rectangle. + + + + + Gets the position of the bottom-right corner of the rectangle. + + + + + Gets the center of the rectangle. + + + + + Indicates whether the rectangle contains the specified point. + + + + + Indicates whether the rectangle contains the specified point. + + + + + Indicates whether the rectangle contains the specified rectangle. + + + + + Indicates whether the specified rectangle intersects with the current rectangle. + + + + + Sets current rectangle to the intersection of the current rectangle and the specified rectangle. + + + + + Returns the intersection of two rectangles. + + + + + Sets current rectangle to the union of the current rectangle and the specified rectangle. + + + + + Returns the union of two rectangles. + + + + + Sets current rectangle to the union of the current rectangle and the specified point. + + + + + Returns the intersection of a rectangle and a point. + + + + + Moves a rectangle by the specified amount. + + + + + Moves a rectangle by the specified amount. + + + + + Returns a rectangle that is offset from the specified rectangle by using the specified vector. + + + + + Returns a rectangle that is offset from the specified rectangle by using specified horizontal and vertical amounts. + + + + + Translates the rectangle by adding the specified point. + + + + + Translates the rectangle by subtracting the specified point. + + + + + Expands the rectangle by using the specified Size, in all directions. + + + + + Expands or shrinks the rectangle by using the specified width and height amounts, in all directions. + + + + + Returns the rectangle that results from expanding the specified rectangle by the specified Size, in all directions. + + + + + Creates a rectangle that results from expanding or shrinking the specified rectangle by the specified width and height amounts, in all directions. + + + + + Returns the rectangle that results from applying the specified matrix to the specified rectangle. + + + + + Transforms the rectangle by applying the specified matrix. + + + + + Multiplies the size of the current rectangle by the specified x and y values. + + + + + Gets the DebuggerDisplayAttribute text. + + The debugger display. + + + + Represents a pair of floating-point numbers, typically the width and height of a + graphical object. + + + + + Initializes a new instance of the XPoint class with the specified values. + + + + + Determines whether two size objects are equal. + + + + + Determines whether two size objects are not equal. + + + + + Indicates whether this two instance are equal. + + + + + Indicates whether this instance and a specified object are equal. + + + + + Indicates whether this instance and a specified size are equal. + + + + + Returns the hash code for this instance. + + + + + Parses the size from a string. + + + + + Converts this XSize to an XPoint. + + + + + Converts this XSize to an XVector. + + + + + Converts this XSize to a human readable string. + + + + + Converts this XSize to a human readable string. + + + + + Converts this XSize to a human readable string. + + + + + Returns an empty size, i.e. a size with a width or height less than 0. + + + + + Gets a value indicating whether this instance is empty. + + + + + Gets or sets the width. + + + + + Gets or sets the height. + + + + + Performs an explicit conversion from XSize to XVector. + + + + + Performs an explicit conversion from XSize to XPoint. + + + + + Gets the DebuggerDisplayAttribute text. + + The debugger display. + + + + Defines a single color object used to fill shapes and draw text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the color of this brush. + + + + + Gets or sets a value indicating whether the brush enables overprint when used in a PDF document. + Experimental, takes effect only on CMYK color mode. + + + + + Represents the text layout information. + + + + + Initializes a new instance of the class. + + + + + Gets or sets horizontal text alignment information. + + + + + Gets or sets the line alignment. + + + + + Gets a new XStringFormat object that aligns the text left on the base line. + + + + + Gets a new XStringFormat object that aligns the text top left of the layout rectangle. + + + + + Gets a new XStringFormat object that centers the text in the middle of the layout rectangle. + + + + + Gets a new XStringFormat object that centers the text at the top of the layout rectangle. + + + + + Gets a new XStringFormat object that centers the text at the bottom of the layout rectangle. + + + + + Represents predefined text layouts. + + + + + Gets a new XStringFormat object that aligns the text left on the base line. + This is the same as BaseLineLeft. + + + + + Gets a new XStringFormat object that aligns the text left on the base line. + This is the same as Default. + + + + + Gets a new XStringFormat object that aligns the text top left of the layout rectangle. + + + + + Gets a new XStringFormat object that aligns the text center left of the layout rectangle. + + + + + Gets a new XStringFormat object that aligns the text bottom left of the layout rectangle. + + + + + Gets a new XStringFormat object that centers the text in the middle of the base line. + + + + + Gets a new XStringFormat object that centers the text at the top of the layout rectangle. + + + + + Gets a new XStringFormat object that centers the text in the middle of the layout rectangle. + + + + + Gets a new XStringFormat object that centers the text at the bottom of the layout rectangle. + + + + + Gets a new XStringFormat object that aligns the text in right on the base line. + + + + + Gets a new XStringFormat object that aligns the text top right of the layout rectangle. + + + + + Gets a new XStringFormat object that aligns the text center right of the layout rectangle. + + + + + Gets a new XStringFormat object that aligns the text at the bottom right of the layout rectangle. + + + + + Represents a value and its unit of measure. The structure converts implicitly from and to + double with a value measured in point. + + + + + Initializes a new instance of the XUnit class with type set to point. + + + + + Initializes a new instance of the XUnit class. + + + + + Gets the raw value of the object without any conversion. + To determine the XGraphicsUnit use property Type. + To get the value in point use the implicit conversion to double. + + + + + Gets the unit of measure. + + + + + Gets or sets the value in point. + + + + + Gets or sets the value in inch. + + + + + Gets or sets the value in millimeter. + + + + + Gets or sets the value in centimeter. + + + + + Gets or sets the value in presentation units (1/96 inch). + + + + + Returns the object as string using the format information. + The unit of measure is appended to the end of the string. + + + + + Returns the object as string using the specified format and format information. + The unit of measure is appended to the end of the string. + + + + + Returns the object as string. The unit of measure is appended to the end of the string. + + + + + Returns the unit of measure of the object as a string like 'pt', 'cm', or 'in'. + + + + + Returns an XUnit object. Sets type to point. + + + + + Returns an XUnit object. Sets type to inch. + + + + + Returns an XUnit object. Sets type to millimeters. + + + + + Returns an XUnit object. Sets type to centimeters. + + + + + Returns an XUnit object. Sets type to Presentation. + + + + + Converts a string to an XUnit object. + If the string contains a suffix like 'cm' or 'in' the object will be converted + to the appropriate type, otherwise point is assumed. + + + + + Converts an int to an XUnit object with type set to point. + + + + + Converts a double to an XUnit object with type set to point. + + + + + Returns a double value as point. + + + + + Memberwise comparison. To compare by value, + use code like Math.Abs(a.Pt - b.Pt) < 1e-5. + + + + + Memberwise comparison. To compare by value, + use code like Math.Abs(a.Pt - b.Pt) < 1e-5. + + + + + Calls base class Equals. + + + + + Returns the hash code for this instance. + + + + + This member is intended to be used by XmlDomainObjectReader only. + + + + + Converts an existing object from one unit into another unit type. + + + + + Represents a unit with all values zero. + + + + + Gets the DebuggerDisplayAttribute text. + + The debugger display. + + + + Represents a two-dimensional vector specified by x- and y-coordinates. + + + + + Gets the DebuggerDisplayAttribute text. + + The debugger display. + + + + Identifies the technology of an OpenType font file. + + + + + Font is Adobe Postscript font in CFF. + + + + + Font is a TrueType font. + + + + + Font is a TrueType font collection. + + + + + TrueType font table names. + + + + + Character to glyph mapping. + + + + + Font header . + + + + + Horizontal header. + + + + + Horizontal Metrics. + + + + + Maximum profile. + + + + + Naming table. + + + + + OS/2 and Windows specific Metrics. + + + + + PostScript information. + + + + + Control Value Table. + + + + + Font program. + + + + + Glyph data. + + + + + Index to location. + + + + + CVT Program. + + + + + PostScript font program (compact font format). + + + + + Vertical Origin. + + + + + Embedded bitmap data. + + + + + Embedded bitmap location data. + + + + + Embedded bitmap scaling data. + + + + + Baseline data. + + + + + Glyph definition data. + + + + + Glyph positioning data. + + + + + Glyph substitution data. + + + + + Justification data. + + + + + Digital signature. + + + + + Grid-fitting/Scan-conversion. + + + + + Horizontal device Metrics. + + + + + Kerning. + + + + + Linear threshold data. + + + + + PCL 5 data. + + + + + Vertical device Metrics. + + + + + Vertical Header. + + + + + Vertical Metrics. + + + + + Base class for all font descriptors. + Currently only OpenTypeDescriptor is derived from this base class. + + + + + + + + + + + + + + + Gets a value indicating whether this instance belongs to a bold font. + + + + + + + + + + Gets a value indicating whether this instance belongs to an italic font. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This table contains information that describes the glyphs in the font in the TrueType outline format. + Information regarding the rasterizer (scaler) refers to the TrueType rasterizer. + http://www.microsoft.com/typography/otspec/glyf.htm + + + + + Converts the bytes in a handy representation + + + + + Gets the data of the specified glyph. + + + + + Gets the size of the byte array that defines the glyph. + + + + + Gets the offset of the specified glyph relative to the first byte of the font image. + + + + + Adds for all composite glyphs the glyphs the composite one is made of. + + + + + If the specified glyph is a composite glyph add the glyphs it is made of to the glyph table. + + + + + Prepares the font table to be compiled into its binary representation. + + + + + Converts the font into its binary representation. + + + + + Global table of all OpenType fontfaces cached by their face name and check sum. + + + + + Tries to get fontface by its key. + + + + + Tries to get fontface by its check sum. + + + + + Gets the singleton. + + + + + Maps face name to OpenType fontface. + + + + + Maps font source key to OpenType fontface. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + Global table of all glyph typefaces. + + + + + Gets the singleton. + + + + + Maps typeface key to glyph typeface. + + + + + The indexToLoc table stores the offsets to the locations of the glyphs in the font, + relative to the beginning of the glyphData table. In order to compute the length of + the last glyph element, there is an extra entry after the last valid index. + + + + + Converts the bytes in a handy representation + + + + + Prepares the font table to be compiled into its binary representation. + + + + + Converts the font into its binary representation. + + + + + Represents an indirect reference to an existing font table in a font image. + Used to create binary copies of an existing font table that is not modified. + + + + + Prepares the font table to be compiled into its binary representation. + + + + + Converts the font into its binary representation. + + + + + The OpenType font descriptor. + Currently the only font type PDFsharp supports. + + + + + New... + + + + + Gets a value indicating whether this instance belongs to a bold font. + + + + + Gets a value indicating whether this instance belongs to an italic font. + + + + + Maps a unicode to the index of the corresponding glyph. + See OpenType spec "cmap - Character To Glyph Index Mapping Table / Format 4: Segment mapping to delta values" + for details about this a little bit strange looking algorithm. + + + + + Converts the width of a glyph identified by its index to PDF design units. + + + + + //Converts the width of a glyph identified by its index to PDF design units. + + + + + //Converts the width of a glyph identified by its index to PDF design units. + + + + + Represents an OpenType fontface in memory. + + + + + Shallow copy for font subset. + + + + + Initializes a new instance of the class. + + + + + Gets the full face name from the name table. + Name is also used as the key. + + + + + Gets the bytes that represents the font data. + + + + + The dictionary of all font tables. + + + + + Adds the specified table to this font image. + + + + + Reads all required tables from the font data. + + + + + Creates a new font image that is a subset of this font image containing only the specified glyphs. + + + + + Compiles the font to its binary representation. + + + + + Reads a System.Byte. + + + + + Reads a System.Int16. + + + + + Reads a System.UInt16. + + + + + Reads a System.Int32. + + + + + Reads a System.UInt32. + + + + + Reads a System.Int32. + + + + + Reads a System.Int16. + + + + + Reads a System.UInt16. + + + + + Reads a System.Int64. + + + + + Reads a System.String with the specified size. + + + + + Reads a System.Byte[] with the specified size. + + + + + Reads the specified buffer. + + + + + Reads the specified buffer. + + + + + Reads a System.Char[4] as System.String. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + Represents the font offset table. + + + + + 0x00010000 for Version 1.0. + + + + + Number of tables. + + + + + (Maximum power of 2 ≤ numTables) x 16. + + + + + Log2(maximum power of 2 ≤ numTables). + + + + + NumTables x 16-searchRange. + + + + + Writes the offset table. + + + + + Base class for all OpenType tables used in PDFsharp. + + + + + Creates a deep copy of the current instance. + + + + + Gets the font image the table belongs to. + + + + + When overridden in a derived class, prepares the font table to be compiled into its binary representation. + + + + + When overridden in a derived class, converts the font into its binary representation. + + + + + Calculates the checksum of a table represented by its bytes. + + + + + Only Symbol and Unicode is used by PDFsharp. + + + + + CMap format 4: Segment mapping to delta values. + The Windows standard format. + + + + + This table defines the mapping of character codes to the glyph index values used in the font. + It may contain more than one subtable, in order to support more than one character encoding scheme. + + + + + Is true for symbol font encoding. + + + + + Initializes a new instance of the class. + + + + + This table gives global information about the font. The bounding box values should be computed using + only glyphs that have contours. Glyphs with no contours should be ignored for the purposes of these calculations. + + + + + This table contains information for horizontal layout. The values in the minRightSidebearing, + MinLeftSideBearing and xMaxExtent should be computed using only glyphs that have contours. + Glyphs with no contours should be ignored for the purposes of these calculations. + All reserved areas must be set to 0. + + + + + The type longHorMetric is defined as an array where each element has two parts: + the advance width, which is of type USHORT, and the left side bearing, which is of type SHORT. + These fields are in font design units. + + + + + The vertical Metrics table allows you to specify the vertical spacing for each glyph in a + vertical font. This table consists of either one or two arrays that contain metric + information (the advance heights and top sidebearings) for the vertical layout of each + of the glyphs in the font. + + + + + This table establishes the memory requirements for this font. + Fonts with CFF data must use Version 0.5 of this table, specifying only the numGlyphs field. + Fonts with TrueType outlines must use Version 1.0 of this table, where all data is required. + Both formats of OpenType require a 'maxp' table because a number of applications call the + Windows GetFontData() API on the 'maxp' table to determine the number of glyphs in the font. + + + + + The naming table allows multilingual strings to be associated with the OpenTypeTM font file. + These strings can represent copyright notices, font names, family names, style names, and so on. + To keep this table short, the font manufacturer may wish to make a limited set of entries in some + small set of languages; later, the font can be "localized" and the strings translated or added. + Other parts of the OpenType font file that require these strings can then refer to them simply by + their index number. Clients that need a particular string can look it up by its platform ID, character + encoding ID, language ID and name ID. Note that some platforms may require single byte character + strings, while others may require double byte strings. + + For historical reasons, some applications which install fonts perform Version control using Macintosh + platform (platform ID 1) strings from the 'name' table. Because of this, we strongly recommend that + the 'name' table of all fonts include Macintosh platform strings and that the syntax of the Version + number (name id 5) follows the guidelines given in this document. + + + + + Get the font family name. + + + + + Get the font subfamily name. + + + + + Get the full font name. + + + + + The OS/2 table consists of a set of Metrics that are required in OpenType fonts. + + + + + This table contains additional information needed to use TrueType or OpenTypeTM fonts + on PostScript printers. + + + + + This table contains a list of values that can be referenced by instructions. + They can be used, among other things, to control characteristics for different glyphs. + The length of the table must be an integral number of FWORD units. + + + + + This table is similar to the CVT Program, except that it is only run once, when the font is first used. + It is used only for FDEFs and IDEFs. Thus the CVT Program need not contain function definitions. + However, the CVT Program may redefine existing FDEFs or IDEFs. + + + + + The Control Value Program consists of a set of TrueType instructions that will be executed whenever the font or + point size or transformation matrix change and before each glyph is interpreted. Any instruction is legal in the + CVT Program but since no glyph is associated with it, instructions intended to move points within a particular + glyph outline cannot be used in the CVT Program. The name 'prep' is anachronistic. + + + + + This table contains information that describes the glyphs in the font in the TrueType outline format. + Information regarding the rasterizer (scaler) refers to the TrueType rasterizer. + + + + + Represents a writer for True Type font files. + + + + + Initializes a new instance of the class. + + + + + Writes a table name. + + + + + Represents an entry in the fonts table dictionary. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + 4 -byte identifier. + + + + + CheckSum for this table. + + + + + Offset from beginning of TrueType font file. + + + + + Actual length of this table in bytes. + + + + + Gets the length rounded up to a multiple of four bytes. + + + + + Associated font table. + + + + + Creates and reads a TableDirectoryEntry from the font image. + + + + + Helper class that determines the characters used in a particular font. + + + + + Adds the characters of the specified string to the hashtable. + + + + + Adds the glyphIndices to the hashtable. + + + + + Adds a ANSI characters. + + + + + Parameters that affect font selection. + + + + + Represents a font resolver info created by the platform font resolver. + + + + + Default platform specific font resolving. + + + + + Resolves the typeface by generating a font resolver info. + + Name of the font family. + Indicates whether a bold font is requested. + Indicates whether an italic font is requested. + + + + Internal implementation. + + + + + Create a GDI+ font and use its handle to retrieve font data using native calls. + + + + + Describes the physical font that must be used to render a particular XFont. + + + + + Initializes a new instance of the struct. + + The name that uniquely identifies the fontface. + + + + Initializes a new instance of the struct. + + The name that uniquely identifies the fontface. + Set to true to simulate bold when rendered. Not implemented and must be false. + Set to true to simulate italic when rendered. + Index of the font in a true type font collection. + Not yet implemented and must be zero. + + + + + Initializes a new instance of the struct. + + The name that uniquely identifies the fontface. + Set to true to simulate bold when rendered. Not implemented and must be false. + Set to true to simulate italic when rendered. + + + + Initializes a new instance of the struct. + + The name that uniquely identifies the fontface. + The style simulation flags. + + + + Gets the key for this object. + + + + + A name that uniquely identifies the font (not the family), e.g. the file name of the font. PDFsharp does not use this + name internally, but passes it to the GetFont function of the IFontResolver interface to retrieve the font data. + + + + + Indicates whether bold must be simulated. Bold simulation is not implemented in PDFsharp. + + + + + Indicates whether italic must be simulated. + + + + + Gets the style simulation flags. + + + + + The number of the font in a Truetype font collection file. The number of the first font is 0. + NOT YET IMPLEMENTED. Must be zero. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + Provides functionality that converts a requested typeface into a physical font. + + + + + Converts specified information about a required typeface into a specific font. + + Name of the font family. + Set to true when a bold fontface is required. + Set to true when an italic fontface is required. + Information about the physical font, or null if the request cannot be satisfied. + + + + Gets the bytes of a physical font with specified face name. + + A face name previously retrieved by ResolveTypeface. + + + + Provides functionality to specify information about the handling of fonts in the current application domain. + + + + + The name of the default font. + + + + + Gets or sets the global font resolver for the current application domain. + This static function must be called only once and before any font operation was executed by PDFsharp. + If this is not easily to obtain, e.g. because your code is running on a web server, you must provide the + same instance of your font resolver in every subsequent setting of this property. + In a web application set the font resolver in Global.asax. + + + + + Gets or sets the default font encoding used for XFont objects where encoding is not explicitly specified. + If it is not set, the default value is PdfFontEncoding.Unicode. + If you are sure your document contains only Windows-1252 characters (see https://en.wikipedia.org/wiki/Windows-1252) + set default encoding to PdfFontEncodingj.Windows1252. + Must be set only once per app domain. + + + + + Global table of OpenType font descriptor objects. + + + + + Gets the FontDescriptor identified by the specified XFont. If no such object + exists, a new FontDescriptor is created and added to the cache. + + + + + Gets the FontDescriptor identified by the specified FontSelector. If no such object + exists, a new FontDescriptor is created and added to the stock. + + + + + Gets the singleton. + + + + + Maps font font descriptor key to font descriptor. + + + + + Provides functionality to map a fontface request to a physical font. + + + + + Converts specified information about a required typeface into a specific font. + + Name of the font family. + The font resolving options. + Typeface key if already known by caller, null otherwise. + + Information about the typeface, or null if no typeface can be found. + + + + + Gets the bytes of a physical font with specified face name. + + + + + Gets the bytes of a physical font with specified face name. + + + + + Gets a value indicating whether at least one font source was created. + + + + + Caches a font source under its face name and its key. + + + + + Caches a font source under its face name and its key. + + + + + Maps font typeface key to font resolver info. + + + + + Maps typeface key or font name to font source. + + + + + Maps font source key to font source. + + + + + Represents a writer for generation of font file streams. + + + + + Initializes a new instance of the class. + Data is written in Motorola format (big-endian). + + + + + Closes the writer and, if specified, the underlying stream. + + + + + Closes the writer and the underlying stream. + + + + + Gets or sets the position within the stream. + + + + + Writes the specified value to the font stream. + + + + + Writes the specified value to the font stream. + + + + + Writes the specified value to the font stream using big-endian. + + + + + Writes the specified value to the font stream using big-endian. + + + + + Writes the specified value to the font stream using big-endian. + + + + + Writes the specified value to the font stream using big-endian. + + + + + Writes the specified value to the font stream using big-endian. + + + + + Writes the specified value to the font stream using big-endian. + + + + + Gets the underlying stream. + + + + + Specifies the flags of AcroForm fields. + + + + + If set, the user may not change the value of the field. Any associated widget + annotations will not interact with the user; that is, they will not respond to + mouse clicks or change their appearance in response to mouse motions. This + flag is useful for fields whose values are computed or imported from a database. + + + + + If set, the field must have a value at the time it is exported by a submit-form action. + + + + + If set, the field must not be exported by a submit-form action. + + + + + If set, the field is a pushbutton that does not retain a permanent value. + + + + + If set, the field is a set of radio buttons; if clear, the field is a checkbox. + This flag is meaningful only if the Pushbutton flag is clear. + + + + + (Radio buttons only) If set, exactly one radio button must be selected at all times; + clicking the currently selected button has no effect. If clear, clicking + the selected button deselects it, leaving no button selected. + + + + + If set, the field may contain multiple lines of text; if clear, the field’s text + is restricted to a single line. + + + + + If set, the field is intended for entering a secure password that should + not be echoed visibly to the screen. Characters typed from the keyboard + should instead be echoed in some unreadable form, such as + asterisks or bullet characters. + To protect password confidentiality, viewer applications should never + store the value of the text field in the PDF file if this flag is set. + + + + + (PDF 1.4) If set, the text entered in the field represents the pathname of + a file whose contents are to be submitted as the value of the field. + + + + + (PDF 1.4) If set, the text entered in the field will not be spell-checked. + + + + + (PDF 1.4) If set, the field will not scroll (horizontally for single-line + fields, vertically for multiple-line fields) to accommodate more text + than will fit within its annotation rectangle. Once the field is full, no + further text will be accepted. + + + + + If set, the field is a combo box; if clear, the field is a list box. + + + + + If set, the combo box includes an editable text box as well as a drop list; + if clear, it includes only a drop list. This flag is meaningful only if the + Combo flag is set. + + + + + If set, the field’s option items should be sorted alphabetically. This flag is + intended for use by form authoring tools, not by PDF viewer applications; + viewers should simply display the options in the order in which they occur + in the Opt array. + + + + + (PDF 1.4) If set, more than one of the field’s option items may be selected + simultaneously; if clear, no more than one item at a time may be selected. + + + + + (PDF 1.4) If set, the text entered in the field will not be spell-checked. + This flag is meaningful only if the Combo and Edit flags are both set. + + + + + Represents the base class for all interactive field dictionaries. + + + + + Initializes a new instance of PdfAcroField. + + + + + Initializes a new instance of the class. Used for type transformation. + + + + + Gets the name of this field. + + + + + Gets the field flags of this instance. + + + + + Gets or sets the value of the field. + + + + + Gets or sets a value indicating whether the field is read only. + + + + + Gets the field with the specified name. + + + + + Gets a child field by name. + + + + + Indicates whether the field has child fields. + + + + + Gets the names of all descendants of this field. + + + + + Gets the names of all descendants of this field. + + + + + Gets the names of all appearance dictionaries of this AcroField. + + + + + Gets the collection of fields within this field. + + + + + Holds a collection of interactive fields. + + + + + Gets the number of elements in the array. + + + + + Gets the names of all fields in the collection. + + + + + Gets an array of all descendant names. + + + + + Gets a field from the collection. For your convenience an instance of a derived class like + PdfTextField or PdfCheckBox is returned if PDFsharp can guess the actual type of the dictionary. + If the actual type cannot be guessed by PDFsharp the function returns an instance + of PdfGenericField. + + + + + Gets the field with the specified name. + + + + + Create a derived type like PdfTextField or PdfCheckBox if possible. + If the actual cannot be guessed by PDFsharp the function returns an instance + of PdfGenericField. + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + (Required for terminal fields; inheritable) The type of field that this dictionary + describes: + Btn Button + Tx Text + Ch Choice + Sig (PDF 1.3) Signature + Note: This entry may be present in a nonterminal field (one whose descendants + are themselves fields) in order to provide an inheritable FT value. However, a + nonterminal field does not logically have a type of its own; it is merely a container + for inheritable attributes that are intended for descendant terminal fields of + any type. + + + + + (Required if this field is the child of another in the field hierarchy; absent otherwise) + The field that is the immediate parent of this one (the field, if any, whose Kids array + includes this field). A field can have at most one parent; that is, it can be included + in the Kids array of at most one other field. + + + + + (Optional) An array of indirect references to the immediate children of this field. + + + + + (Optional) The partial field name. + + + + + (Optional; PDF 1.3) An alternate field name, to be used in place of the actual + field name wherever the field must be identified in the user interface (such as + in error or status messages referring to the field). This text is also useful + when extracting the document’s contents in support of accessibility to disabled + users or for other purposes. + + + + + (Optional; PDF 1.3) The mapping name to be used when exporting interactive form field + data from the document. + + + + + (Optional; inheritable) A set of flags specifying various characteristics of the field. + Default value: 0. + + + + + (Optional; inheritable) The field’s value, whose format varies depending on + the field type; see the descriptions of individual field types for further information. + + + + + (Optional; inheritable) The default value to which the field reverts when a + reset-form action is executed. The format of this value is the same as that of V. + + + + + (Optional; PDF 1.2) An additional-actions dictionary defining the field’s behavior + in response to various trigger events. This entry has exactly the same meaning as + the AA entry in an annotation dictionary. + + + + + (Required; inheritable) A resource dictionary containing default resources + (such as fonts, patterns, or color spaces) to be used by the appearance stream. + At a minimum, this dictionary must contain a Font entry specifying the resource + name and font dictionary of the default font for displaying the field’s text. + + + + + (Required; inheritable) The default appearance string, containing a sequence of + valid page-content graphics or text state operators defining such properties as + the field’s text size and color. + + + + + (Optional; inheritable) A code specifying the form of quadding (justification) + to be used in displaying the text: + 0 Left-justified + 1 Centered + 2 Right-justified + Default value: 0 (left-justified). + + + + + Represents an interactive form (or AcroForm), a collection of fields for + gathering information interactively from the user. + + + + + Initializes a new instance of AcroForm. + + + + + Gets the fields collection of this form. + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + (Required) An array of references to the document’s root fields (those with + no ancestors in the field hierarchy). + + + + + (Optional) A flag specifying whether to construct appearance streams and + appearance dictionaries for all widget annotations in the document. + Default value: false. + + + + + (Optional; PDF 1.3) A set of flags specifying various document-level characteristics + related to signature fields. + Default value: 0. + + + + + (Required if any fields in the document have additional-actions dictionaries + containing a C entry; PDF 1.3) An array of indirect references to field dictionaries + with calculation actions, defining the calculation order in which their values will + be recalculated when the value of any field changes. + + + + + (Optional) A document-wide default value for the DR attribute of variable text fields. + + + + + (Optional) A document-wide default value for the DA attribute of variable text fields. + + + + + (Optional) A document-wide default value for the Q attribute of variable text fields. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents the base class for all button fields. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the name which represents the opposite of /Off. + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + Represents the check box field. + + + + + Initializes a new instance of PdfCheckBoxField. + + + + + Indicates whether the field is checked. + + + + + Gets or sets the name of the dictionary that represents the Checked state. + + The default value is "/Yes". + + + + Gets or sets the name of the dictionary that represents the Unchecked state. + The default value is "/Off". + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + (Optional; inheritable; PDF 1.4) A text string to be used in place of the V entry for the + value of the field. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents the base class for all choice field dictionaries. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the index of the specified string in the /Opt array or -1, if no such string exists. + + + + + Gets the value from the index in the /Opt array. + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + (Required; inheritable) An array of options to be presented to the user. Each element of + the array is either a text string representing one of the available options or a two-element + array consisting of a text string together with a default appearance string for constructing + the item’s appearance dynamically at viewing time. + + + + + (Optional; inheritable) For scrollable list boxes, the top index (the index in the Opt array + of the first option visible in the list). + + + + + (Sometimes required, otherwise optional; inheritable; PDF 1.4) For choice fields that allow + multiple selection (MultiSelect flag set), an array of integers, sorted in ascending order, + representing the zero-based indices in the Opt array of the currently selected option + items. This entry is required when two or more elements in the Opt array have different + names but the same export value, or when the value of the choice field is an array; in + other cases, it is permitted but not required. If the items identified by this entry differ + from those in the V entry of the field dictionary (see below), the V entry takes precedence. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents the combo box field. + + + + + Initializes a new instance of PdfComboBoxField. + + + + + Gets or sets the index of the selected item. + + + + + Gets or sets the value of the field. + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a generic field. Used for AcroForm dictionaries unknown to PDFsharp. + + + + + Initializes a new instance of PdfGenericField. + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents the list box field. + + + + + Initializes a new instance of PdfListBoxField. + + + + + Gets or sets the index of the selected item + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents the push button field. + + + + + Initializes a new instance of PdfPushButtonField. + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents the radio button field. + + + + + Initializes a new instance of PdfRadioButtonField. + + + + + Gets or sets the index of the selected radio button in a radio button group. + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + (Optional; inheritable; PDF 1.4) An array of text strings to be used in + place of the V entries for the values of the widget annotations representing + the individual radio buttons. Each element in the array represents + the export value of the corresponding widget annotation in the + Kids array of the radio button field. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents the signature field. + + + + + Initializes a new instance of PdfSignatureField. + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + (Optional) The type of PDF object that this dictionary describes; if present, + must be Sig for a signature dictionary. + + + + + (Required; inheritable) The name of the signature handler to be used for + authenticating the field’s contents, such as Adobe.PPKLite, Entrust.PPKEF, + CICI.SignIt, or VeriSign.PPKVS. + + + + + (Optional) The name of a specific submethod of the specified handler. + + + + + (Required) An array of pairs of integers (starting byte offset, length in bytes) + describing the exact byte range for the digest calculation. Multiple discontinuous + byte ranges may be used to describe a digest that does not include the + signature token itself. + + + + + (Required) The encrypted signature token. + + + + + (Optional) The name of the person or authority signing the document. + + + + + (Optional) The time of signing. Depending on the signature handler, this + may be a normal unverified computer time or a time generated in a verifiable + way from a secure time server. + + + + + (Optional) The CPU host name or physical location of the signing. + + + + + (Optional) The reason for the signing, such as (I agree…). + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents the text field. + + + + + Initializes a new instance of PdfTextField. + + + + + Gets or sets the text value of the text field. + + + + + Gets or sets the font used to draw the text of the field. + + + + + Gets or sets the foreground color of the field. + + + + + Gets or sets the background color of the field. + + + + + Gets or sets the maximum length of the field. + + The length of the max. + + + + Gets or sets a value indicating whether the field has multiple lines. + + + + + Gets or sets a value indicating whether this field is used for passwords. + + + + + Creates the normal appearance form X object for the annotation that represents + this acro form text field. + + + + + Predefined keys of this dictionary. + The description comes from PDF 1.4 Reference. + + + + + (Optional; inheritable) The maximum length of the field’s text, in characters. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Specifies the predefined PDF actions. + + + + + Go to next page. + + + + + Go to previous page. + + + + + Go to first page. + + + + + Go to last page. + + + + + Represents a PDF Goto actions. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The document that owns this object. + + + + Predefined keys of this dictionary. + + + + + (Required) The destination to jump to (see Section 8.2.1, “Destinations”). + + + + + Represents the base class for all PDF actions. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The document that owns this object. + + + + Predefined keys of this dictionary. + + + + + (Optional) The type of PDF object that this dictionary describes; + if present, must be Action for an action dictionary. + + + + + (Required) The type of action that this dictionary describes. + + + + + (Optional; PDF 1.2) The next action or sequence of actions to be performed + after the action represented by this dictionary. The value is either a + single action dictionary or an array of action dictionaries to be performed + in order; see below for further discussion. + + + + + Represents the catalog dictionary. + + + + + Initializes a new instance of the class. + + + + + Get or sets the version of the PDF specification to which the document conforms. + + + + + Gets the pages collection of this document. + + + + + Implementation of PdfDocument.PageLayout. + + + + + Implementation of PdfDocument.PageMode. + + + + + Implementation of PdfDocument.ViewerPreferences. + + + + + Implementation of PdfDocument.Outlines. + + + + + Gets the AcroForm dictionary of this document. + + + + + Gets or sets the language identifier specifying the natural language for all text in the document. + Sample values are 'en-US' for 'English United States' or 'de-DE' for 'deutsch Deutschland' (i.e. 'German Germany'). + + + + + Dispatches PrepareForSave to the objects that need it. + + + + + Predefined keys of this dictionary. + + + + + (Required) The type of PDF object that this dictionary describes; + must be Catalog for the catalog dictionary. + + + + + (Optional; PDF 1.4) The version of the PDF specification to which the document + conforms (for example, 1.4) if later than the version specified in the file’s header. + If the header specifies a later version, or if this entry is absent, the document + conforms to the version specified in the header. This entry enables a PDF producer + application to update the version using an incremental update. + + + + + (Required; must be an indirect reference) The page tree node that is the root of + the document’s page tree. + + + + + (Optional; PDF 1.3) A number tree defining the page labeling for the document. + The keys in this tree are page indices; the corresponding values are page label dictionaries. + Each page index denotes the first page in a labeling range to which the specified page + label dictionary applies. The tree must include a value for pageindex 0. + + + + + (Optional; PDF 1.2) The document’s name dictionary. + + + + + (Optional; PDF 1.1; must be an indirect reference) A dictionary of names and + corresponding destinations. + + + + + (Optional; PDF 1.2) A viewer preferences dictionary specifying the way the document + is to be displayed on the screen. If this entry is absent, applications should use + their own current user preference settings. + + + + + (Optional) A name object specifying the page layout to be used when the document is + opened: + SinglePage - Display one page at a time. + OneColumn - Display the pages in one column. + TwoColumnLeft - Display the pages in two columns, with oddnumbered pages on the left. + TwoColumnRight - Display the pages in two columns, with oddnumbered pages on the right. + TwoPageLeft - (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left + TwoPageRight - (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right. + + + + + (Optional) A name object specifying how the document should be displayed when opened: + UseNone - Neither document outline nor thumbnail images visible. + UseOutlines - Document outline visible. + UseThumbs - Thumbnail images visible. + FullScreen - Full-screen mode, with no menu bar, windowcontrols, or any other window visible. + UseOC - (PDF 1.5) Optional content group panel visible. + UseAttachments (PDF 1.6) Attachments panel visible. + Default value: UseNone. + + + + + (Optional; must be an indirect reference) The outline dictionary that is the root + of the document’s outline hierarchy. + + + + + (Optional; PDF 1.1; must be an indirect reference) An array of thread dictionaries + representing the document’s article threads. + + + + + (Optional; PDF 1.1) A value specifying a destination to be displayed or an action to be + performed when the document is opened. The value is either an array defining a destination + or an action dictionary representing an action. If this entry is absent, the document + should be opened to the top of the first page at the default magnification factor. + + + + + (Optional; PDF 1.4) An additional-actions dictionary defining the actions to be taken + in response to various trigger events affecting the document as a whole. + + + + + (Optional; PDF 1.1) A URI dictionary containing document-level information for URI + (uniform resource identifier) actions. + + + + + (Optional; PDF 1.2) The document’s interactive form (AcroForm) dictionary. + + + + + (Optional; PDF 1.4; must be an indirect reference) A metadata stream + containing metadata for the document. + + + + + (Optional; PDF 1.3) The document’s structure tree root dictionary. + + + + + (Optional; PDF 1.4) A mark information dictionary containing information + about the document’s usage of Tagged PDF conventions. + + + + + (Optional; PDF 1.4) A language identifier specifying the natural language for all + text in the document except where overridden by language specifications for structure + elements or marked content. If this entry is absent, the language is considered unknown. + + + + + (Optional; PDF 1.3) A Web Capture information dictionary containing state information + used by the Acrobat Web Capture (AcroSpider) plugin extension. + + + + + (Optional; PDF 1.4) An array of output intent dictionaries describing the color + characteristics of output devices on which the document might be rendered. + + + + + (Optional; PDF 1.4) A page-piece dictionary associated with the document. + + + + + (Optional; PDF 1.5; required if a document contains optional content) The document’s + optional content properties dictionary. + + + + + (Optional; PDF 1.5) A permissions dictionary that specifies user access permissions + for the document. + + + + + (Optional; PDF 1.5) A dictionary containing attestations regarding the content of a + PDF document, as it relates to the legality of digital signatures. + + + + + (Optional; PDF 1.7) An array of requirement dictionaries representing + requirements for the document. + + + + + (Optional; PDF 1.7) A collection dictionary that a PDF consumer uses to enhance + the presentation of file attachments stored in the PDF document. + + + + + (Optional; PDF 1.7) A flag used to expedite the display of PDF documents containing XFA forms. + It specifies whether the document must be regenerated when the document is first opened. + If true, the viewer application treats the document as a shell and regenerates the content + when the document is opened, regardless of any dynamic forms settings that appear in the XFA + stream itself. This setting is used to expedite the display of documents whose layout varies + depending on the content of the XFA streams. + If false, the viewer application does not regenerate the content when the document is opened. + See the XML Forms Architecture (XFA) Specification (Bibliography). + Default value: false. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a CIDFont dictionary. + + + + + Prepares the object to get saved. + + + + + Predefined keys of this dictionary. + + + + + (Required) The type of PDF object that this dictionary describes; + must be Font for a CIDFont dictionary. + + + + + (Required) The type of CIDFont; CIDFontType0 or CIDFontType2. + + + + + (Required) The PostScript name of the CIDFont. For Type 0 CIDFonts, this + is usually the value of the CIDFontName entry in the CIDFont program. For + Type 2 CIDFonts, it is derived the same way as for a simple TrueType font; + In either case, the name can have a subset prefix if appropriate. + + + + + (Required) A dictionary containing entries that define the character collection + of the CIDFont. + + + + + (Required; must be an indirect reference) A font descriptor describing the + CIDFont’s default metrics other than its glyph widths. + + + + + (Optional) The default width for glyphs in the CIDFont. + Default value: 1000. + + + + + (Optional) A description of the widths for the glyphs in the CIDFont. The + array’s elements have a variable format that can specify individual widths + for consecutive CIDs or one width for a range of CIDs. + Default value: none (the DW value is used for all glyphs). + + + + + (Optional; applies only to CIDFonts used for vertical writing) An array of two + numbers specifying the default metrics for vertical writing. + Default value: [880 −1000]. + + + + + (Optional; applies only to CIDFonts used for vertical writing) A description + of the metrics for vertical writing for the glyphs in the CIDFont. + Default value: none (the DW2 value is used for all glyphs). + + + + + (Optional; Type 2 CIDFonts only) A specification of the mapping from CIDs + to glyph indices. If the value is a stream, the bytes in the stream contain the + mapping from CIDs to glyph indices: the glyph index for a particular CID + value c is a 2-byte value stored in bytes 2 × c and 2 × c + 1, where the first + byte is the high-order byte. If the value of CIDToGIDMap is a name, it must + be Identity, indicating that the mapping between CIDs and glyph indices is + the identity mapping. + Default value: Identity. + This entry may appear only in a Type 2 CIDFont whose associated True-Type font + program is embedded in the PDF file. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents the content of a page. PDFsharp supports only one content stream per page. + If an imported page has an array of content streams, the streams are concatenated to + one single stream. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The dict. + + + + Sets a value indicating whether the content is compressed with the ZIP algorithm. + + + + + Unfilters the stream. + + + + + Surround content with q/Q operations if necessary. + + + + + Predefined keys of this dictionary. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents an array of PDF content streams of a page. + + + + + Initializes a new instance of the class. + + The document. + + + + Appends a new content stream and returns it. + + + + + Prepends a new content stream and returns it. + + + + + Creates a single content stream with the bytes from the array of the content streams. + This operation does not modify any of the content streams in this array. + + + + + Replaces the current content of the page with the specified content sequence. + + + + + Replaces the current content of the page with the specified bytes. + + + + + Gets the enumerator. + + + + + Represents a PDF cross-reference stream. + + + + + Initializes a new instance of the class. + + + + + Predefined keys for cross-reference dictionaries. + + + + + (Required) The type of PDF object that this dictionary describes; + must be XRef for a cross-reference stream. + + + + + (Required) The number one greater than the highest object number + used in this section or in any section for which this is an update. + It is equivalent to the Size entry in a trailer dictionary. + + + + + (Optional) An array containing a pair of integers for each subsection in this section. + The first integer is the first object number in the subsection; the second integer + is the number of entries in the subsection. + The array is sorted in ascending order by object number. Subsections cannot overlap; + an object number may have at most one entry in a section. + Default value: [0 Size]. + + + + + (Present only if the file has more than one cross-reference stream; not meaningful in + hybrid-reference files) The byte offset from the beginning of the file to the beginning + of the previous cross-reference stream. This entry has the same function as the Prev + entry in the trailer dictionary. + + + + + (Required) An array of integers representing the size of the fields in a single + cross-reference entry. The table describes the types of entries and their fields. + For PDF 1.5, W always contains three integers; the value of each integer is the + number of bytes (in the decoded stream) of the corresponding field. For example, + [1 2 1] means that the fields are one byte, two bytes, and one byte, respectively. + + A value of zero for an element in the W array indicates that the corresponding field + is not present in the stream, and the default value is used, if there is one. If the + first element is zero, the type field is not present, and it defaults to type 1. + + The sum of the items is the total length of each entry; it can be used with the + Indexarray to determine the starting position of each subsection. + + Note: Different cross-reference streams in a PDF file may use different values for W. + + Entries in a cross-reference stream. + + TYPE FIELD DESCRIPTION + 0 1 The type of this entry, which must be 0. Type 0 entries define the linked list of free objects (corresponding to f entries in a cross-reference table). + 2 The object number of the next free object. + 3 The generation number to use if this object number is used again. + 1 1 The type of this entry, which must be 1. Type 1 entries define objects that are in use but are not compressed (corresponding to n entries in a cross-reference table). + 2 The byte offset of the object, starting from the beginning of the file. + 3 The generation number of the object. Default value: 0. + 2 1 The type of this entry, which must be 2. Type 2 entries define compressed objects. + 2 The object number of the object stream in which this object is stored. (The generation number of the object stream is implicitly 0.) + 3 The index of this object within the object stream. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents the cross-reference table of a PDF document. + It contains all indirect objects of a document. + + + + + Represents the relation between PdfObjectID and PdfReference for a PdfDocument. + + + + + Adds a cross reference entry to the table. Used when parsing the trailer. + + + + + Adds a PdfObject to the table. + + + + + Gets a cross reference entry from an object identifier. + Returns null if no object with the specified ID exists in the object table. + + + + + Indicates whether the specified object identifier is in the table. + + + + + Returns the next free object number. + + + + + Writes the xref section in pdf stream. + + + + + Gets an array of all object identifiers. For debugging purposes only. + + + + + Gets an array of all cross references in ascending order by their object identifier. + + + + + Removes all objects that cannot be reached from the trailer. + Returns the number of removed objects. + + + + + Renumbers the objects starting at 1. + + + + + Checks the logical consistence for debugging purposes (useful after reconstruction work). + + + + + Calculates the transitive closure of the specified PdfObject, i.e. all indirect objects + recursively reachable from the specified object. + + + + + Calculates the transitive closure of the specified PdfObject with the specified depth, i.e. all indirect objects + recursively reachable from the specified object in up to maximally depth steps. + + + + + Gets the cross reference to an objects used for undefined indirect references. + + + + + Represents a base class for dictionaries with a content stream. + Implement IContentStream for use with a content writer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The document. + + + + Initializes a new instance from an existing dictionary. Used for object type transformation. + + + + + Gets the resources dictionary of this dictionary. If no such dictionary exists, it is created. + + + + + Implements the interface because the primary function is internal. + + + + + Gets the resource name of the specified image within this dictionary. + + + + + Implements the interface because the primary function is internal. + + + + + Gets the resource name of the specified form within this dictionary. + + + + + Implements the interface because the primary function is internal. + + + + + Predefined keys of this dictionary. + + + + + (Optional but strongly recommended; PDF 1.2) A dictionary specifying any + resources (such as fonts and images) required by the form XObject. + + + + + Represents an extended graphics state object. + + + + + Initializes a new instance of the class. + + The document. + + + + Used in Edf.Xps. + + + + + Used in Edf.Xps. + ...for shading patterns + + + + + Sets the alpha value for stroking operations. + + + + + Sets the alpha value for nonstroking operations. + + + + + Sets the overprint value for stroking operations. + + + + + Sets the overprint value for nonstroking operations. + + + + + Sets a soft mask object. + + + + + Common keys for all streams. + + + + + (Optional) The type of PDF object that this dictionary describes; + must be ExtGState for a graphics state parameter dictionary. + + + + + (Optional; PDF 1.3) The line width (see “Line Width” on page 185). + + + + + (Optional; PDF 1.3) The line cap style. + + + + + (Optional; PDF 1.3) The line join style. + + + + + (Optional; PDF 1.3) The miter limit. + + + + + (Optional; PDF 1.3) The line dash pattern, expressed as an array of the form + [dashArray dashPhase], where dashArray is itself an array and dashPhase is an integer. + + + + + (Optional; PDF 1.3) The name of the rendering intent. + + + + + (Optional) A flag specifying whether to apply overprint. In PDF 1.2 and earlier, + there is a single overprint parameter that applies to all painting operations. + Beginning with PDF 1.3, there are two separate overprint parameters: one for stroking + and one for all other painting operations. Specifying an OP entry sets both parameters + unless there is also an op entry in the same graphics state parameter dictionary, in + which case the OP entry sets only the overprint parameter for stroking. + + + + + (Optional; PDF 1.3) A flag specifying whether to apply overprint for painting operations + other than stroking. If this entry is absent, the OP entry, if any, sets this parameter. + + + + + (Optional; PDF 1.3) The overprint mode. + + + + + (Optional; PDF 1.3) An array of the form [font size], where font is an indirect + reference to a font dictionary and size is a number expressed in text space units. + These two objects correspond to the operands of the Tf operator; however, + the first operand is an indirect object reference instead of a resource name. + + + + + (Optional) The black-generation function, which maps the interval [0.0 1.0] + to the interval [0.0 1.0]. + + + + + (Optional; PDF 1.3) Same as BG except that the value may also be the name Default, + denoting the black-generation function that was in effect at the start of the page. + If both BG and BG2 are present in the same graphics state parameter dictionary, + BG2 takes precedence. + + + + + (Optional) The undercolor-removal function, which maps the interval + [0.0 1.0] to the interval [-1.0 1.0]. + + + + + (Optional; PDF 1.3) Same as UCR except that the value may also be the name Default, + denoting the undercolor-removal function that was in effect at the start of the page. + If both UCR and UCR2 are present in the same graphics state parameter dictionary, + UCR2 takes precedence. + + + + + (Optional) A flag specifying whether to apply automatic stroke adjustment. + + + + + (Optional; PDF 1.4) The current blend mode to be used in the transparent imaging model. + + + + + (Optional; PDF 1.4) The current soft mask, specifying the mask shape or + mask opacity values to be used in the transparent imaging model. + + + + + (Optional; PDF 1.4) The current stroking alpha constant, specifying the constant + shape or constant opacity value to be used for stroking operations in the transparent + imaging model. + + + + + (Optional; PDF 1.4) Same as CA, but for nonstroking operations. + + + + + (Optional; PDF 1.4) The alpha source flag (“alpha is shape”), specifying whether + the current soft mask and alpha constant are to be interpreted as shape values (true) + or opacity values (false). + + + + + (Optional; PDF 1.4) The text knockout flag, which determines the behavior of + overlapping glyphs within a text object in the transparent imaging model. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Contains all used ExtGState objects of a document. + + + + + Initializes a new instance of this class, which is a singleton for each document. + + + + + Gets a PdfExtGState with the key 'CA' set to the specified alpha value. + + + + + Gets a PdfExtGState with the key 'ca' set to the specified alpha value. + + + + + Represents a PDF font. + + + + + Initializes a new instance of the class. + + + + + Gets a value indicating whether this instance is symbol font. + + + + + Gets or sets the CMapInfo. + + + + + Gets or sets ToUnicodeMap. + + + + + Adds a tag of exactly six uppercase letters to the font name + according to PDF Reference Section 5.5.3 'Font Subsets' + + + + + Predefined keys common to all font dictionaries. + + + + + (Required) The type of PDF object that this dictionary describes; + must be Font for a font dictionary. + + + + + (Required) The type of font. + + + + + (Required) The PostScript name of the font. + + + + + (Required except for the standard 14 fonts; must be an indirect reference) + A font descriptor describing the font’s metrics other than its glyph widths. + Note: For the standard 14 fonts, the entries FirstChar, LastChar, Widths, and + FontDescriptor must either all be present or all be absent. Ordinarily, they are + absent; specifying them enables a standard font to be overridden. + + + + + The PDF font descriptor flags. + + + + + All glyphs have the same width (as opposed to proportional or variable-pitch + fonts, which have different widths). + + + + + Glyphs have serifs, which are short strokes drawn at an angle on the top and + bottom of glyph stems. (Sans serif fonts do not have serifs.) + + + + + Font contains glyphs outside the Adobe standard Latin character set. This + flag and the Nonsymbolic flag cannot both be set or both be clear. + + + + + Glyphs resemble cursive handwriting. + + + + + Font uses the Adobe standard Latin character set or a subset of it. + + + + + Glyphs have dominant vertical strokes that are slanted. + + + + + Font contains no lowercase letters; typically used for display purposes, + such as for titles or headlines. + + + + + Font contains both uppercase and lowercase letters. The uppercase letters are + similar to those in the regular version of the same typeface family. The glyphs + for the lowercase letters have the same shapes as the corresponding uppercase + letters, but they are sized and their proportions adjusted so that they have the + same size and stroke weight as lowercase glyphs in the same typeface family. + + + + + Determines whether bold glyphs are painted with extra pixels even at very small + text sizes. + + + + + A PDF font descriptor specifies metrics and other attributes of a simple font, + as distinct from the metrics of individual glyphs. + + + + + Gets or sets the name of the font. + + + + + Gets a value indicating whether this instance is symbol font. + + + + + Predefined keys of this dictionary. + + + + + (Required) The type of PDF object that this dictionary describes; must be + FontDescriptor for a font descriptor. + + + + + (Required) The PostScript name of the font. This name should be the same as the + value of BaseFont in the font or CIDFont dictionary that refers to this font descriptor. + + + + + (Optional; PDF 1.5; strongly recommended for Type 3 fonts in Tagged PDF documents) + A string specifying the preferred font family name. For example, for the font + Times Bold Italic, the FontFamily is Times. + + + + + (Optional; PDF 1.5; strongly recommended for Type 3 fonts in Tagged PDF documents) + The font stretch value. It must be one of the following names (ordered from + narrowest to widest): UltraCondensed, ExtraCondensed, Condensed, SemiCondensed, + Normal, SemiExpanded, Expanded, ExtraExpanded or UltraExpanded. + Note: The specific interpretation of these values varies from font to font. + For example, Condensed in one font may appear most similar to Normal in another. + + + + + (Optional; PDF 1.5; strongly recommended for Type 3 fonts in Tagged PDF documents) + The weight (thickness) component of the fully-qualified font name or font specifier. + The possible values are 100, 200, 300, 400, 500, 600, 700, 800, or 900, where each + number indicates a weight that is at least as dark as its predecessor. A value of + 400 indicates a normal weight; 700 indicates bold. + Note: The specific interpretation of these values varies from font to font. + For example, 300 in one font may appear most similar to 500 in another. + + + + + (Required) A collection of flags defining various characteristics of the font. + + + + + (Required, except for Type 3 fonts) A rectangle (see Section 3.8.4, “Rectangles”), + expressed in the glyph coordinate system, specifying the font bounding box. This + is the smallest rectangle enclosing the shape that would result if all of the + glyphs of the font were placed with their origins coincident and then filled. + + + + + (Required) The angle, expressed in degrees counterclockwise from the vertical, of + the dominant vertical strokes of the font. (For example, the 9-o’clock position is 90 + degrees, and the 3-o’clock position is –90 degrees.) The value is negative for fonts + that slope to the right, as almost all italic fonts do. + + + + + (Required, except for Type 3 fonts) The maximum height above the baseline reached + by glyphs in this font, excluding the height of glyphs for accented characters. + + + + + (Required, except for Type 3 fonts) The maximum depth below the baseline reached + by glyphs in this font. The value is a negative number. + + + + + (Optional) The spacing between baselines of consecutive lines of text. + Default value: 0. + + + + + (Required for fonts that have Latin characters, except for Type 3 fonts) The vertical + coordinate of the top of flat capital letters, measured from the baseline. + + + + + (Optional) The font’s x height: the vertical coordinate of the top of flat nonascending + lowercase letters (like the letter x), measured from the baseline, in fonts that have + Latin characters. Default value: 0. + + + + + (Required, except for Type 3 fonts) The thickness, measured horizontally, of the dominant + vertical stems of glyphs in the font. + + + + + (Optional) The thickness, measured vertically, of the dominant horizontal stems + of glyphs in the font. Default value: 0. + + + + + (Optional) The average width of glyphs in the font. Default value: 0. + + + + + (Optional) The maximum width of glyphs in the font. Default value: 0. + + + + + (Optional) The width to use for character codes whose widths are not specified in a + font dictionary’s Widths array. This has a predictable effect only if all such codes + map to glyphs whose actual widths are the same as the value of the MissingWidth entry. + Default value: 0. + + + + + (Optional) A stream containing a Type 1 font program. + + + + + (Optional; PDF 1.1) A stream containing a TrueType font program. + + + + + (Optional; PDF 1.2) A stream containing a font program whose format is specified + by the Subtype entry in the stream dictionary. + + + + + (Optional; meaningful only in Type 1 fonts; PDF 1.1) A string listing the character + names defined in a font subset. The names in this string must be in PDF syntax—that is, + each name preceded by a slash (/). The names can appear in any order. The name .notdef + should be omitted; it is assumed to exist in the font subset. If this entry is absent, + the only indication of a font subset is the subset tag in the FontName entry. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + TrueType with WinAnsi encoding. + + + + + TrueType with Identity-H or Identity-V encoding (unicode). + + + + + Contains all used fonts of a document. + + + + + Initializes a new instance of this class, which is a singleton for each document. + + + + + Gets a PdfFont from an XFont. If no PdfFont already exists, a new one is created. + + + + + Gets a PdfFont from a font program. If no PdfFont already exists, a new one is created. + + + + + Tries to gets a PdfFont from the font dictionary. + Returns null if no such PdfFont exists. + + + + + Map from PdfFontSelector to PdfFont. + + + + + Represents an external form object (e.g. an imported page). + + + + + Gets the PdfResources object of this form. + + + + + Gets the resource name of the specified font data within this form XObject. + + + + + Predefined keys of this dictionary. + + + + + (Optional) The type of PDF object that this dictionary describes; if present, + must be XObject for a form XObject. + + + + + (Required) The type of XObject that this dictionary describes; must be Form + for a form XObject. + + + + + (Optional) A code identifying the type of form XObject that this dictionary + describes. The only valid value defined at the time of publication is 1. + Default value: 1. + + + + + (Required) An array of four numbers in the form coordinate system, giving the + coordinates of the left, bottom, right, and top edges, respectively, of the + form XObject’s bounding box. These boundaries are used to clip the form XObject + and to determine its size for caching. + + + + + (Optional) An array of six numbers specifying the form matrix, which maps + form space into user space. + Default value: the identity matrix [1 0 0 1 0 0]. + + + + + (Optional but strongly recommended; PDF 1.2) A dictionary specifying any + resources (such as fonts and images) required by the form XObject. + + + + + (Optional; PDF 1.4) A group attributes dictionary indicating that the contents + of the form XObject are to be treated as a group and specifying the attributes + of that group (see Section 4.9.2, “Group XObjects”). + Note: If a Ref entry (see below) is present, the group attributes also apply to the + external page imported by that entry, which allows such an imported page to be + treated as a group without further modification. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Contains all external PDF files from which PdfFormXObjects are imported into the current document. + + + + + Initializes a new instance of this class, which is a singleton for each document. + + + + + Gets a PdfFormXObject from an XPdfForm. Because the returned objects must be unique, always + a new instance of PdfFormXObject is created if none exists for the specified form. + + + + + Gets the imported object table. + + + + + Gets the imported object table. + + + + + Map from Selector to PdfImportedObjectTable. + + + + + A collection of information that uniquely identifies a particular ImportedObjectTable. + + + + + Initializes a new instance of FormSelector from an XPdfForm. + + + + + Initializes a new instance of FormSelector from a PdfPage. + + + + + Represents a PDF group XObject. + + + + + Predefined keys of this dictionary. + + + + + (Optional) The type of PDF object that this dictionary describes; + if present, must be Group for a group attributes dictionary. + + + + + (Required) The group subtype, which identifies the type of group whose + attributes this dictionary describes and determines the format and meaning + of the dictionary’s remaining entries. The only group subtype defined in + PDF 1.4 is Transparency. Other group subtypes may be added in the future. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents an image. + + + + + Initializes a new instance of PdfImage from an XImage. + + + + + Gets the underlying XImage object. + + + + + Returns 'Image'. + + + + + Creates the keys for a JPEG image. + + + + + Creates the keys for a FLATE image. + + + + + Reads images that are returned from GDI+ without color palette. + + 4 (32bpp RGB), 3 (24bpp RGB, 32bpp ARGB) + 8 + true (ARGB), false (RGB) + + + + Common keys for all streams. + + + + + (Optional) The type of PDF object that this dictionary describes; + if present, must be XObject for an image XObject. + + + + + (Required) The type of XObject that this dictionary describes; + must be Image for an image XObject. + + + + + (Required) The width of the image, in samples. + + + + + (Required) The height of the image, in samples. + + + + + (Required for images, except those that use the JPXDecode filter; not allowed for image masks) + The color space in which image samples are specified; it can be any type of color space except + Pattern. If the image uses the JPXDecode filter, this entry is optional: + • If ColorSpace is present, any color space specifications in the JPEG2000 data are ignored. + • If ColorSpace is absent, the color space specifications in the JPEG2000 data are used. + The Decode array is also ignored unless ImageMask is true. + + + + + (Required except for image masks and images that use the JPXDecode filter) + The number of bits used to represent each color component. Only a single value may be specified; + the number of bits is the same for all color components. Valid values are 1, 2, 4, 8, and + (in PDF 1.5) 16. If ImageMask is true, this entry is optional, and if specified, its value + must be 1. + If the image stream uses a filter, the value of BitsPerComponent must be consistent with the + size of the data samples that the filter delivers. In particular, a CCITTFaxDecode or JBIG2Decode + filter always delivers 1-bit samples, a RunLengthDecode or DCTDecode filter delivers 8-bit samples, + and an LZWDecode or FlateDecode filter delivers samples of a specified size if a predictor function + is used. + If the image stream uses the JPXDecode filter, this entry is optional and ignored if present. + The bit depth is determined in the process of decoding the JPEG2000 image. + + + + + (Optional; PDF 1.1) The name of a color rendering intent to be used in rendering the image. + Default value: the current rendering intent in the graphics state. + + + + + (Optional) A flag indicating whether the image is to be treated as an image mask. + If this flag is true, the value of BitsPerComponent must be 1 and Mask and ColorSpace should + not be specified; unmasked areas are painted using the current nonstroking color. + Default value: false. + + + + + (Optional except for image masks; not allowed for image masks; PDF 1.3) + An image XObject defining an image mask to be applied to this image, or an array specifying + a range of colors to be applied to it as a color key mask. If ImageMask is true, this entry + must not be present. + + + + + (Optional) An array of numbers describing how to map image samples into the range of values + appropriate for the image’s color space. If ImageMask is true, the array must be either + [0 1] or [1 0]; otherwise, its length must be twice the number of color components required + by ColorSpace. If the image uses the JPXDecode filter and ImageMask is false, Decode is ignored. + Default value: see “Decode Arrays”. + + + + + (Optional) A flag indicating whether image interpolation is to be performed. + Default value: false. + + + + + (Optional; PDF 1.3) An array of alternate image dictionaries for this image. The order of + elements within the array has no significance. This entry may not be present in an image + XObject that is itself an alternate image. + + + + + (Optional; PDF 1.4) A subsidiary image XObject defining a soft-mask image to be used as a + source of mask shape or mask opacity values in the transparent imaging model. The alpha + source parameter in the graphics state determines whether the mask values are interpreted as + shape or opacity. If present, this entry overrides the current soft mask in the graphics state, + as well as the image’s Mask entry, if any. (However, the other transparency related graphics + state parameters — blend mode and alpha constant — remain in effect.) If SMask is absent, the + image has no associated soft mask (although the current soft mask in the graphics state may + still apply). + + + + + (Optional for images that use the JPXDecode filter, meaningless otherwise; PDF 1.5) + A code specifying how soft-mask information encoded with image samples should be used: + 0 If present, encoded soft-mask image information should be ignored. + 1 The image’s data stream includes encoded soft-mask values. An application can create + a soft-mask image from the information to be used as a source of mask shape or mask + opacity in the transparency imaging model. + 2 The image’s data stream includes color channels that have been preblended with a + background; the image data also includes an opacity channel. An application can create + a soft-mask image with a Matte entry from the opacity channel information to be used as + a source of mask shape or mask opacity in the transparency model. If this entry has a + nonzero value, SMask should not be specified. + Default value: 0. + + + + + (Required in PDF 1.0; optional otherwise) The name by which this image XObject is + referenced in the XObject subdictionary of the current resource dictionary. + + + + + (Required if the image is a structural content item; PDF 1.3) The integer key of the + image’s entry in the structural parent tree. + + + + + (Optional; PDF 1.3; indirect reference preferred) The digital identifier of the image’s + parent Web Capture content set. + + + + + (Optional; PDF 1.2) An OPI version dictionary for the image. If ImageMask is true, + this entry is ignored. + + + + + (Optional; PDF 1.4) A metadata stream containing metadata for the image. + + + + + (Optional; PDF 1.5) An optional content group or optional content membership dictionary, + specifying the optional content properties for this image XObject. Before the image is + processed, its visibility is determined based on this entry. If it is determined to be + invisible, the entire image is skipped, as if there were no Do operator to invoke it. + + + + + Counts the consecutive one bits in an image line. + + The reader. + The bits left. + + + + Counts the consecutive zero bits in an image line. + + The reader. + The bits left. + + + + Returns the offset of the next bit in the range + [bitStart..bitEnd] that is different from the + specified color. The end, bitEnd, is returned + if no such bit exists. + + The reader. + The offset of the start bit. + The offset of the end bit. + If set to true searches "one" (i. e. white), otherwise searches black. + The offset of the first non-matching bit. + + + + Returns the offset of the next bit in the range + [bitStart..bitEnd] that is different from the + specified color. The end, bitEnd, is returned + if no such bit exists. + Like FindDifference, but also check the + starting bit against the end in case start > end. + + The reader. + The offset of the start bit. + The offset of the end bit. + If set to true searches "one" (i. e. white), otherwise searches black. + The offset of the first non-matching bit. + + + + 2d-encode a row of pixels. Consult the CCITT documentation for the algorithm. + + The writer. + Offset of image data in bitmap file. + The bitmap file. + Index of the current row. + Index of the reference row (0xffffffff if there is none). + The width of the image. + The height of the image. + The bytes per line in the bitmap file. + + + + Encodes a bitonal bitmap using 1D CCITT fax encoding. + + Space reserved for the fax encoded bitmap. An exception will be thrown if this buffer is too small. + The bitmap to be encoded. + Offset of image data in bitmap file. + The width of the image. + The height of the image. + The size of the fax encoded image (0 on failure). + + + + Encodes a bitonal bitmap using 2D group 4 CCITT fax encoding. + + Space reserved for the fax encoded bitmap. An exception will be thrown if this buffer is too small. + The bitmap to be encoded. + Offset of image data in bitmap file. + The width of the image. + The height of the image. + The size of the fax encoded image (0 on failure). + + + + Writes the image data. + + The writer. + The count of bits (pels) to encode. + The color of the pels. + + + + Helper class for creating bitmap masks (8 pels per byte). + + + + + Returns the bitmap mask that will be written to PDF. + + + + + Creates a bitmap mask. + + + + + Starts a new line. + + + + + Adds a pel to the current line. + + + + + + Adds a pel from an alpha mask value. + + + + + The BitReader class is a helper to read bits from an in-memory bitmap file. + + + + + Initializes a new instance of the class. + + The in-memory bitmap file. + The offset of the line to read. + The count of bits that may be read (i. e. the width of the image for normal usage). + + + + Sets the position within the line (needed for 2D encoding). + + The new position. + + + + Gets a single bit at the specified position. + + The position. + True if bit is set. + + + + Returns the bits that are in the buffer (without changing the position). + Data is MSB aligned. + + The count of bits that were returned (1 through 8). + The MSB aligned bits from the buffer. + + + + Moves the buffer to the next byte. + + + + + "Removes" (eats) bits from the buffer. + + The count of bits that were processed. + + + + A helper class for writing groups of bits into an array of bytes. + + + + + Initializes a new instance of the class. + + The byte array to be written to. + + + + Writes the buffered bits into the byte array. + + + + + Masks for n bits in a byte (with n = 0 through 8). + + + + + Writes bits to the byte array. + + The bits to be written (LSB aligned). + The count of bits. + + + + Writes a line from a look-up table. + A "line" in the table are two integers, one containing the values, one containing the bit count. + + + + + Flushes the buffer and returns the count of bytes written to the array. + + + + + Contains all used images of a document. + + + + + Initializes a new instance of this class, which is a singleton for each document. + + + + + Gets a PdfImage from an XImage. If no PdfImage already exists, a new one is created. + + + + + Map from ImageSelector to PdfImage. + + + + + A collection of information that uniquely identifies a particular PdfImage. + + + + + Initializes a new instance of ImageSelector from an XImage. + + + + + Represents the imported objects of an external document. Used to cache objects that are + already imported when a PdfFormXObject is added to a page. + + + + + Initializes a new instance of this class with the document the objects are imported from. + + + + + Gets the document this table belongs to. + + + + + Gets the external document, or null, if the external document is garbage collected. + + + + + Indicates whether the specified object is already imported. + + + + + Adds a cloned object to this table. + + The object identifier in the foreign object. + The cross reference to the clone of the foreign object, which belongs to + this document. In general the clone has a different object identifier. + + + + Gets the cloned object that corresponds to the specified external identifier. + + + + + Maps external object identifiers to cross reference entries of the importing document + {PdfObjectID -> PdfReference}. + + + + + Provides access to the internal document data structures. This class prevents the public + interfaces from pollution with to much internal functions. + + + + + Gets or sets the first document identifier. + + + + + Gets the first document identifier as GUID. + + + + + Gets or sets the second document identifier. + + + + + Gets the first document identifier as GUID. + + + + + Gets the catalog dictionary. + + + + + Gets the ExtGStateTable object. + + + + + Returns the object with the specified Identifier, or null, if no such object exists. + + + + + Maps the specified external object to the substitute object in this document. + Returns null if no such object exists. + + + + + Returns the PdfReference of the specified object, or null, if the object is not in the + document's object table. + + + + + Gets the object identifier of the specified object. + + + + + Gets the object number of the specified object. + + + + + Gets the generation number of the specified object. + + + + + Gets all indirect objects ordered by their object identifier. + + + + + Gets all indirect objects ordered by their object identifier. + + + + + Creates the indirect object of the specified type, adds it to the document, + and returns the object. + + + + + Adds an object to the PDF document. This operation and only this operation makes the object + an indirect object owned by this document. + + + + + Removes an object from the PDF document. + + + + + Returns an array containing the specified object as first element follows by its transitive + closure. The closure of an object are all objects that can be reached by indirect references. + The transitive closure is the result of applying the calculation of the closure to a closure + as long as no new objects came along. This is e.g. useful for getting all objects belonging + to the resources of a page. + + + + + Returns an array containing the specified object as first element follows by its transitive + closure limited by the specified number of iterations. + + + + + Writes a PdfItem into the specified stream. + + + + + The name of the custom value key. + + + + + Provides access to the internal PDF object data structures. This class prevents the public + interfaces from pollution with to much internal functions. + + + + + Gets the object identifier. Returns PdfObjectID.Empty for direct objects. + + + + + Gets the object number. + + + + + Gets the generation number. + + + + + Gets the name of the current type. + Not a very useful property, but can be used for data binding. + + + + + Represents an object stream that contains compressed objects. + PDF 1.5. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance from an existing dictionary. Used for object type transformation. + + + + + Reads the compressed object with the specified index. + + + + + Reads the compressed object with the specified index. + + + + + N pairs of integers. + The first integer represents the object number of the compressed object. + The second integer represents the absolute offset of that object in the decoded stream, + i.e. the byte offset plus First entry. + + + + + Predefined keys common to all font dictionaries. + + + + + (Required) The type of PDF object that this dictionary describes; + must be ObjStmfor an object stream. + + + + + (Required) The number of compressed objects in the stream. + + + + + (Required) The byte offset (in the decoded stream) of the first + compressed object. + + + + + (Optional) A reference to an object stream, of which the current object + stream is considered an extension. Both streams are considered part of + a collection of object streams (see below). A given collection consists + of a set of streams whose Extendslinks form a directed acyclic graph. + + + + + Represents a PDF page object. + + + + + + + + + + Represents an indirect reference to a PdfObject. + + + + + Initializes a new PdfReference instance for the specified indirect object. + + + + + Initializes a new PdfReference instance from the specified object identifier and file position. + + + + + Writes the object in PDF iref table format. + + + + + Writes an indirect reference. + + + + + Gets or sets the object identifier. + + + + + Gets the object number of the object identifier. + + + + + Gets the generation number of the object identifier. + + + + + Gets or sets the file position of the related PdfObject. + + + + + Gets or sets the referenced PdfObject. + + + + + Hack for dead objects. + + + + + Gets or sets the document this object belongs to. + + + + + Gets a string representing the object identifier. + + + + + Implements a comparer that compares PdfReference objects by their PdfObjectID. + + + + + Base class for all dictionaries that map resource names to objects. + + + + + Adds all imported resource names to the specified hashtable. + + + + + Represents a PDF resource object. + + + + + Initializes a new instance of the class. + + The document. + + + + Adds the specified font to this resource dictionary and returns its local resource name. + + + + + Adds the specified image to this resource dictionary + and returns its local resource name. + + + + + Adds the specified form object to this resource dictionary + and returns its local resource name. + + + + + Adds the specified graphics state to this resource dictionary + and returns its local resource name. + + + + + Adds the specified pattern to this resource dictionary + and returns its local resource name. + + + + + Adds the specified pattern to this resource dictionary + and returns its local resource name. + + + + + Adds the specified shading to this resource dictionary + and returns its local resource name. + + + + + Gets the fonts map. + + + + + Gets the external objects map. + + + + + Gets a new local name for this resource. + + + + + Gets a new local name for this resource. + + + + + Gets a new local name for this resource. + + + + + Gets a new local name for this resource. + + + + + Gets a new local name for this resource. + + + + + Gets a new local name for this resource. + + + + + Check whether a resource name is already used in the context of this resource dictionary. + PDF4NET uses GUIDs as resource names, but I think this weapon is to heavy. + + + + + All the names of imported resources. + + + + + Maps all PDFsharp resources to their local resource names. + + + + + Predefined keys of this dictionary. + + + + + (Optional) A dictionary that maps resource names to graphics state + parameter dictionaries. + + + + + (Optional) A dictionary that maps each resource name to either the name of a + device-dependent color space or an array describing a color space. + + + + + (Optional) A dictionary that maps each resource name to either the name of a + device-dependent color space or an array describing a color space. + + + + + (Optional; PDF 1.3) A dictionary that maps resource names to shading dictionaries. + + + + + (Optional) A dictionary that maps resource names to external objects. + + + + + (Optional) A dictionary that maps resource names to font dictionaries. + + + + + (Optional) An array of predefined procedure set names. + + + + + (Optional; PDF 1.2) A dictionary that maps resource names to property list + dictionaries for marked content. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Base class for FontTable, ImageTable, FormXObjectTable etc. + + + + + Base class for document wide resource tables. + + + + + Gets the owning document of this resource table. + + + + + Represents a shading dictionary. + + + + + Initializes a new instance of the class. + + + + + Setups the shading from the specified brush. + + + + + Common keys for all streams. + + + + + (Required) The shading type: + 1 Function-based shading + 2 Axial shading + 3 Radial shading + 4 Free-form Gouraud-shaded triangle mesh + 5 Lattice-form Gouraud-shaded triangle mesh + 6 Coons patch mesh + 7 Tensor-product patch mesh + + + + + (Required) The color space in which color values are expressed. This may be any device, + CIE-based, or special color space except a Pattern space. + + + + + (Optional) An array of color components appropriate to the color space, specifying + a single background color value. If present, this color is used, before any painting + operation involving the shading, to fill those portions of the area to be painted + that lie outside the bounds of the shading object. In the opaque imaging model, + the effect is as if the painting operation were performed twice: first with the + background color and then with the shading. + + + + + (Optional) An array of four numbers giving the left, bottom, right, and top coordinates, + respectively, of the shading’s bounding box. The coordinates are interpreted in the + shading’s target coordinate space. If present, this bounding box is applied as a temporary + clipping boundary when the shading is painted, in addition to the current clipping path + and any other clipping boundaries in effect at that time. + + + + + (Optional) A flag indicating whether to filter the shading function to prevent aliasing + artifacts. The shading operators sample shading functions at a rate determined by the + resolution of the output device. Aliasing can occur if the function is not smooth—that + is, if it has a high spatial frequency relative to the sampling rate. Anti-aliasing can + be computationally expensive and is usually unnecessary, since most shading functions + are smooth enough or are sampled at a high enough frequency to avoid aliasing effects. + Anti-aliasing may not be implemented on some output devices, in which case this flag + is ignored. + Default value: false. + + + + + (Required) An array of four numbers [x0 y0 x1 y1] specifying the starting and + ending coordinates of the axis, expressed in the shading’s target coordinate space. + + + + + (Optional) An array of two numbers [t0 t1] specifying the limiting values of a + parametric variable t. The variable is considered to vary linearly between these + two values as the color gradient varies between the starting and ending points of + the axis. The variable t becomes the input argument to the color function(s). + Default value: [0.0 1.0]. + + + + + (Required) A 1-in, n-out function or an array of n 1-in, 1-out functions (where n + is the number of color components in the shading dictionary’s color space). The + function(s) are called with values of the parametric variable t in the domain defined + by the Domain entry. Each function’s domain must be a superset of that of the shading + dictionary. If the value returned by the function for a given color component is out + of range, it is adjusted to the nearest valid value. + + + + + (Optional) An array of two boolean values specifying whether to extend the shading + beyond the starting and ending points of the axis, respectively. + Default value: [false false]. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a shading pattern dictionary. + + + + + Initializes a new instance of the class. + + + + + Setups the shading pattern from the specified brush. + + + + + Common keys for all streams. + + + + + (Optional) The type of PDF object that this dictionary describes; if present, + must be Pattern for a pattern dictionary. + + + + + (Required) A code identifying the type of pattern that this dictionary describes; + must be 2 for a shading pattern. + + + + + (Required) A shading object (see below) defining the shading pattern’s gradient fill. + + + + + (Optional) An array of six numbers specifying the pattern matrix. + Default value: the identity matrix [1 0 0 1 0 0]. + + + + + (Optional) A graphics state parameter dictionary containing graphics state parameters + to be put into effect temporarily while the shading pattern is painted. Any parameters + that are not so specified are inherited from the graphics state that was in effect + at the beginning of the content stream in which the pattern is defined as a resource. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a PDF soft mask. + + + + + Initializes a new instance of the class. + + The document that owns the object. + + + + Predefined keys of this dictionary. + + + + + (Optional) The type of PDF object that this dictionary describes; + if present, must be Mask for a soft-mask dictionary. + + + + + (Required) A subtype specifying the method to be used in deriving the mask values + from the transparency group specified by the G entry: + Alpha: Use the group’s computed alpha, disregarding its color. + Luminosity: Convert the group’s computed color to a single-component luminosity value. + + + + + (Required) A transparency group XObject to be used as the source of alpha + or color values for deriving the mask. If the subtype S is Luminosity, the + group attributes dictionary must contain a CS entry defining the color space + in which the compositing computation is to be performed. + + + + + (Optional) An array of component values specifying the color to be used + as the backdrop against which to composite the transparency group XObject G. + This entry is consulted only if the subtype S is Luminosity. The array consists of + n numbers, where n is the number of components in the color space specified + by the CS entry in the group attributes dictionary. + Default value: the color space’s initial value, representing black. + + + + + (Optional) A function object specifying the transfer function to be used in + deriving the mask values. The function accepts one input, the computed + group alpha or luminosity (depending on the value of the subtype S), and + returns one output, the resulting mask value. Both the input and output + must be in the range 0.0 to 1.0; if the computed output falls outside this + range, it is forced to the nearest valid value. The name Identity may be + specified in place of a function object to designate the identity function. + Default value: Identity. + + + + + Represents a tiling pattern dictionary. + + + + + Initializes a new instance of the class. + + + + + Common keys for all streams. + + + + + (Optional) The type of PDF object that this dictionary describes; if present, + must be Pattern for a pattern dictionary. + + + + + (Required) A code identifying the type of pattern that this dictionary describes; + must be 1 for a tiling pattern. + + + + + (Required) A code that determines how the color of the pattern cell is to be specified: + 1: Colored tiling pattern. The pattern’s content stream specifies the colors used to + paint the pattern cell. When the content stream begins execution, the current color + is the one that was initially in effect in the pattern’s parent content stream. + 2: Uncolored tiling pattern. The pattern’s content stream does not specify any color + information. Instead, the entire pattern cell is painted with a separately specified color + each time the pattern is used. Essentially, the content stream describes a stencil + through which the current color is to be poured. The content stream must not invoke + operators that specify colors or other color-related parameters in the graphics state; + otherwise, an error occurs. The content stream may paint an image mask, however, + since it does not specify any color information. + + + + + (Required) A code that controls adjustments to the spacing of tiles relative to the device + pixel grid: + 1: Constant spacing. Pattern cells are spaced consistently—that is, by a multiple of a + device pixel. To achieve this, the application may need to distort the pattern cell slightly + by making small adjustments to XStep, YStep, and the transformation matrix. The amount + of distortion does not exceed 1 device pixel. + 2: No distortion. The pattern cell is not distorted, but the spacing between pattern cells + may vary by as much as 1 device pixel, both horizontally and vertically, when the pattern + is painted. This achieves the spacing requested by XStep and YStep on average but not + necessarily for each individual pattern cell. + 3: Constant spacing and faster tiling. Pattern cells are spaced consistently as in tiling + type 1 but with additional distortion permitted to enable a more efficient implementation. + + + + + (Required) An array of four numbers in the pattern coordinate system giving the + coordinates of the left, bottom, right, and top edges, respectively, of the pattern + cell’s bounding box. These boundaries are used to clip the pattern cell. + + + + + (Required) The desired horizontal spacing between pattern cells, measured in the + pattern coordinate system. + + + + + (Required) The desired vertical spacing between pattern cells, measured in the pattern + coordinate system. Note that XStep and YStep may differ from the dimensions of the + pattern cell implied by the BBox entry. This allows tiling with irregularly shaped figures. + XStep and YStep may be either positive or negative but not zero. + + + + + (Required) A resource dictionary containing all of the named resources required by + the pattern’s content stream (see Section 3.7.2, “Resource Dictionaries”). + + + + + (Optional) An array of six numbers specifying the pattern matrix. + Default value: the identity matrix [1 0 0 1 0 0]. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a ToUnicode map for composite font. + + + + + Gets or sets the CMap info. + + + + + Creates the ToUnicode map from the CMapInfo. + + + + + Represents a PDF trailer dictionary. Even though trailers are dictionaries they never have a cross + reference entry in PdfReferenceTable. + + + + + Initializes a new instance of PdfTrailer. + + + + + Initializes a new instance of the class from a . + + + + + (Required; must be an indirect reference) + The catalog dictionary for the PDF document contained in the file. + + + + + Gets the first or second document identifier. + + + + + Sets the first or second document identifier. + + + + + Creates and sets two identical new document IDs. + + + + + Gets the standard security handler. + + + + + Replace temporary irefs by their correct counterparts from the iref table. + + + + + Predefined keys of this dictionary. + + + + + (Required; must not be an indirect reference) The total number of entries in the file’s + cross-reference table, as defined by the combination of the original section and all + update sections. Equivalently, this value is 1 greater than the highest object number + used in the file. + Note: Any object in a cross-reference section whose number is greater than this value is + ignored and considered missing. + + + + + (Present only if the file has more than one cross-reference section; must not be an indirect + reference) The byte offset from the beginning of the file to the beginning of the previous + cross-reference section. + + + + + (Required; must be an indirect reference) The catalog dictionary for the PDF document + contained in the file. + + + + + (Required if document is encrypted; PDF 1.1) The document’s encryption dictionary. + + + + + (Optional; must be an indirect reference) The document’s information dictionary. + + + + + (Optional, but strongly recommended; PDF 1.1) An array of two strings constituting + a file identifier for the file. Although this entry is optional, + its absence might prevent the file from functioning in some workflows + that depend on files being uniquely identified. + + + + + (Optional) The byte offset from the beginning of the file of a cross-reference stream. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a PDF transparency group XObject. + + + + + Predefined keys of this dictionary. + + + + + (Sometimes required, as discussed below) + The group color space, which is used for the following purposes: + • As the color space into which colors are converted when painted into the group + • As the blending color space in which objects are composited within the group + • As the color space of the group as a whole when it in turn is painted as an object onto its backdrop + The group color space may be any device or CIE-based color space that + treats its components as independent additive or subtractive values in the + range 0.0 to 1.0, subject to the restrictions described in Section 7.2.3, “Blending Color Space.” + These restrictions exclude Lab and lightness-chromaticity ICCBased color spaces, + as well as the special color spaces Pattern, Indexed, Separation, and DeviceN. + Device color spaces are subject to remapping according to the DefaultGray, + DefaultRGB, and DefaultCMYK entries in the ColorSpace subdictionary of the + current resource dictionary. + Ordinarily, the CS entry is allowed only for isolated transparency groups + (those for which I, below, is true), and even then it is optional. However, + this entry is required in the group attributes dictionary for any transparency + group XObject that has no parent group or page from which to inherit — in + particular, one that is the value of the G entry in a soft-mask dictionary of + subtype Luminosity. + In addition, it is always permissible to specify CS in the group attributes + dictionary associated with a page object, even if I is false or absent. In the + normal case in which the page is imposed directly on the output medium, + the page group is effectively isolated regardless of the I value, and the + specified CS value is therefore honored. But if the page is in turn used as an + element of some other page and if the group is non-isolated, CS is ignored + and the color space is inherited from the actual backdrop with which the + page is composited. + Default value: the color space of the parent group or page into which this + transparency group is painted. (The parent’s color space in turn can be + either explicitly specified or inherited.) + + + + + (Optional) A flag specifying whether the transparency group is isolated. + If this flag is true, objects within the group are composited against a fully + transparent initial backdrop; if false, they are composited against the + group’s backdrop. + Default value: false. + In the group attributes dictionary for a page, the interpretation of this + entry is slightly altered. In the normal case in which the page is imposed + directly on the output medium, the page group is effectively isolated and + the specified I value is ignored. But if the page is in turn used as an + element of some other page, it is treated as if it were a transparency + group XObject; the I value is interpreted in the normal way to determine + whether the page group is isolated. + + + + + (Optional) A flag specifying whether the transparency group is a knockout + group. If this flag is false, later objects within the group are composited + with earlier ones with which they overlap; if true, they are composited with + the group’s initial backdrop and overwrite (“knock out”) any earlier + overlapping objects. + Default value: false. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a TrueType font. + + + + + Initializes a new instance of PdfTrueTypeFont from an XFont. + + + + + Prepares the object to get saved. + + + + + Predefined keys of this dictionary. + + + + + (Required) The type of PDF object that this dictionary describes; + must be Font for a font dictionary. + + + + + (Required) The type of font; must be TrueType for a TrueType font. + + + + + (Required in PDF 1.0; optional otherwise) The name by which this font is + referenced in the Font subdictionary of the current resource dictionary. + + + + + (Required) The PostScript name of the font. For Type 1 fonts, this is usually + the value of the FontName entry in the font program; for more information. + The Post-Script name of the font can be used to find the font’s definition in + the consumer application or its environment. It is also the name that is used when + printing to a PostScript output device. + + + + + (Required except for the standard 14 fonts) The first character code defined + in the font’s Widths array. + + + + + (Required except for the standard 14 fonts) The last character code defined + in the font’s Widths array. + + + + + (Required except for the standard 14 fonts; indirect reference preferred) + An array of (LastChar - FirstChar + 1) widths, each element being the glyph width + for the character code that equals FirstChar plus the array index. For character + codes outside the range FirstChar to LastChar, the value of MissingWidth from the + FontDescriptor entry for this font is used. The glyph widths are measured in units + in which 1000 units corresponds to 1 unit in text space. These widths must be + consistent with the actual widths given in the font program. + + + + + (Required except for the standard 14 fonts; must be an indirect reference) + A font descriptor describing the font’s metrics other than its glyph widths. + Note: For the standard 14 fonts, the entries FirstChar, LastChar, Widths, and + FontDescriptor must either all be present or all be absent. Ordinarily, they are + absent; specifying them enables a standard font to be overridden. + + + + + (Optional) A specification of the font’s character encoding if different from its + built-in encoding. The value of Encoding is either the name of a predefined + encoding (MacRomanEncoding, MacExpertEncoding, or WinAnsiEncoding, as described in + Appendix D) or an encoding dictionary that specifies differences from the font’s + built-in encoding or from a specified predefined encoding. + + + + + (Optional; PDF 1.2) A stream containing a CMap file that maps character + codes to Unicode values. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a composite font. Used for Unicode encoding. + + + + + Predefined keys of this dictionary. + + + + + (Required) The type of PDF object that this dictionary describes; + must be Font for a font dictionary. + + + + + (Required) The type of font; must be Type0 for a Type 0 font. + + + + + (Required) The PostScript name of the font. In principle, this is an arbitrary + name, since there is no font program associated directly with a Type 0 font + dictionary. The conventions described here ensure maximum compatibility + with existing Acrobat products. + If the descendant is a Type 0 CIDFont, this name should be the concatenation + of the CIDFont’s BaseFont name, a hyphen, and the CMap name given in the + Encoding entry (or the CMapName entry in the CMap). If the descendant is a + Type 2 CIDFont, this name should be the same as the CIDFont’s BaseFont name. + + + + + (Required) The name of a predefined CMap, or a stream containing a CMap + that maps character codes to font numbers and CIDs. If the descendant is a + Type 2 CIDFont whose associated TrueType font program is not embedded + in the PDF file, the Encoding entry must be a predefined CMap name. + + + + + (Required) A one-element array specifying the CIDFont dictionary that is the + descendant of this Type 0 font. + + + + + ((Optional) A stream containing a CMap file that maps character codes to + Unicode values. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Base class for all PDF external objects. + + + + + Initializes a new instance of the class. + + The document that owns the object. + + + + Predefined keys of this dictionary. + + + + + Specifies the annotation flags. + + + + + If set, do not display the annotation if it does not belong to one of the standard + annotation types and no annotation handler is available. If clear, display such an + unknown annotation using an appearance stream specified by its appearancedictionary, + if any. + + + + + (PDF 1.2) If set, do not display or print the annotation or allow it to interact + with the user, regardless of its annotation type or whether an annotation + handler is available. In cases where screen space is limited, the ability to hide + and show annotations selectively can be used in combination with appearance + streams to display auxiliary pop-up information similar in function to online + help systems. + + + + + (PDF 1.2) If set, print the annotation when the page is printed. If clear, never + print the annotation, regardless of whether it is displayed on the screen. This + can be useful, for example, for annotations representing interactive pushbuttons, + which would serve no meaningful purpose on the printed page. + + + + + (PDF 1.3) If set, do not scale the annotation’s appearance to match the magnification + of the page. The location of the annotation on the page (defined by the + upper-left corner of its annotation rectangle) remains fixed, regardless of the + page magnification. See below for further discussion. + + + + + (PDF 1.3) If set, do not rotate the annotation’s appearance to match the rotation + of the page. The upper-left corner of the annotation rectangle remains in a fixed + location on the page, regardless of the page rotation. See below for further discussion. + + + + + (PDF 1.3) If set, do not display the annotation on the screen or allow it to + interact with the user. The annotation may be printed (depending on the setting + of the Print flag) but should be considered hidden for purposes of on-screen + display and user interaction. + + + + + (PDF 1.3) If set, do not allow the annotation to interact with the user. The + annotation may be displayed or printed (depending on the settings of the + NoView and Print flags) but should not respond to mouse clicks or change its + appearance in response to mouse motions. + Note: This flag is ignored for widget annotations; its function is subsumed by + the ReadOnly flag of the associated form field. + + + + + (PDF 1.4) If set, do not allow the annotation to be deleted or its properties + (including position and size) to be modified by the user. However, this flag does + not restrict changes to the annotation’s contents, such as the value of a form + field. + + + + + (PDF 1.5) If set, invert the interpretation of the NoView flag for certain events. + A typical use is to have an annotation that appears only when a mouse cursor is + held over it. + + + + + Specifies the predefined icon names of rubber stamp annotations. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + A pre-defined rubber stamp annotation icon. + + + + + Specifies the pre-defined icon names of text annotations. + + + + + A pre-defined annotation icon. + + + + + A pre-defined annotation icon. + + + + + A pre-defined annotation icon. + + + + + A pre-defined annotation icon. + + + + + A pre-defined annotation icon. + + + + + A pre-defined annotation icon. + + + + + A pre-defined annotation icon. + + + + + A pre-defined annotation icon. + + + + + Represents the base class of all annotations. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Removes an annotation from the document + + + + + + Gets or sets the annotation flags of this instance. + + + + + Gets or sets the PdfAnnotations object that this annotation belongs to. + + + + + Gets or sets the annotation rectangle, defining the location of the annotation + on the page in default user space units. + + + + + Gets or sets the text label to be displayed in the title bar of the annotation’s + pop-up window when open and active. By convention, this entry identifies + the user who added the annotation. + + + + + Gets or sets text representing a short description of the subject being + addressed by the annotation. + + + + + Gets or sets the text to be displayed for the annotation or, if this type of + annotation does not display text, an alternate description of the annotation’s + contents in human-readable form. + + + + + Gets or sets the color representing the components of the annotation. If the color + has an alpha value other than 1, it is ignored. Use property Opacity to get or set the + opacity of an annotation. + + + + + Gets or sets the constant opacity value to be used in painting the annotation. + This value applies to all visible elements of the annotation in its closed state + (including its background and border) but not to the popup window that appears when + the annotation is opened. + + + + + Predefined keys of this dictionary. + + + + + (Optional) The type of PDF object that this dictionary describes; if present, + must be Annot for an annotation dictionary. + + + + + (Required) The type of annotation that this dictionary describes. + + + + + (Required) The annotation rectangle, defining the location of the annotation + on the page in default user space units. + + + + + (Optional) Text to be displayed for the annotation or, if this type of annotation + does not display text, an alternate description of the annotation’s contents + in human-readable form. In either case, this text is useful when + extracting the document’s contents in support of accessibility to users with + disabilities or for other purposes. + + + + + (Optional; PDF 1.4) The annotation name, a text string uniquely identifying it + among all the annotations on its page. + + + + + (Optional; PDF 1.1) The date and time when the annotation was most recently + modified. The preferred format is a date string, but viewer applications should be + prepared to accept and display a string in any format. + + + + + (Optional; PDF 1.1) A set of flags specifying various characteristics of the annotation. + Default value: 0. + + + + + (Optional; PDF 1.2) A border style dictionary specifying the characteristics of + the annotation’s border. + + + + + (Optional; PDF 1.2) An appearance dictionary specifying how the annotation + is presented visually on the page. Individual annotation handlers may ignore + this entry and provide their own appearances. + + + + + (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) + The annotation’s appearance state, which selects the applicable appearance stream from + an appearance subdictionary. + + + + + (Optional) An array specifying the characteristics of the annotation’s border. + The border is specified as a rounded rectangle. + In PDF 1.0, the array consists of three numbers defining the horizontal corner + radius, vertical corner radius, and border width, all in default user space units. + If the corner radii are 0, the border has square (not rounded) corners; if the border + width is 0, no border is drawn. + In PDF 1.1, the array may have a fourth element, an optional dash array defining a + pattern of dashes and gaps to be used in drawing the border. The dash array is + specified in the same format as in the line dash pattern parameter of the graphics state. + For example, a Border value of [0 0 1 [3 2]] specifies a border 1 unit wide, with + square corners, drawn with 3-unit dashes alternating with 2-unit gaps. Note that no + dash phase is specified; the phase is assumed to be 0. + Note: In PDF 1.2 or later, this entry may be ignored in favor of the BS entry. + + + + + (Optional; PDF 1.1) An array of three numbers in the range 0.0 to 1.0, representing + the components of a color in the DeviceRGB color space. This color is used for the + following purposes: + • The background of the annotation’s icon when closed + • The title bar of the annotation’s pop-up window + • The border of a link annotation + + + + + (Required if the annotation is a structural content item; PDF 1.3) + The integer key of the annotation’s entry in the structural parent tree. + + + + + (Optional; PDF 1.1) An action to be performed when the annotation is activated. + Note: This entry is not permitted in link annotations if a Dest entry is present. + Also note that the A entry in movie annotations has a different meaning. + + + + + (Optional; PDF 1.1) The text label to be displayed in the title bar of the annotation’s + pop-up window when open and active. By convention, this entry identifies + the user who added the annotation. + + + + + (Optional; PDF 1.3) An indirect reference to a pop-up annotation for entering or + editing the text associated with this annotation. + + + + + (Optional; PDF 1.4) The constant opacity value to be used in painting the annotation. + This value applies to all visible elements of the annotation in its closed state + (including its background and border) but not to the popup window that appears when + the annotation is opened. + The specified value is not used if the annotation has an appearance stream; in that + case, the appearance stream must specify any transparency. (However, if the viewer + regenerates the annotation’s appearance stream, it may incorporate the CA value + into the stream’s content.) + The implicit blend mode is Normal. + Default value: 1.0. + + + + + (Optional; PDF 1.5) Text representing a short description of the subject being + addressed by the annotation. + + + + + Represents the annotations array of a page. + + + + + Adds the specified annotation. + + The annotation. + + + + Removes an annotation from the document. + + + + + Removes all the annotations from the current page. + + + + + Gets the number of annotations in this collection. + + + + + Gets the at the specified index. + + + + + Gets the page the annotations belongs to. + + + + + Fixes the /P element in imported annotation. + + + + + Returns an enumerator that iterates through a collection. + + + + + Represents a generic annotation. Used for annotation dictionaries unknown to PDFsharp. + + + + + Predefined keys of this dictionary. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a link annotation. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Creates a link within the current document. + + The link area in default page coordinates. + The one-based destination page number. + + + + Creates a link to the web. + + + + + Creates a link to a file. + + + + + Predefined keys of this dictionary. + + + + + (Optional; not permitted if an A entry is present) A destination to be displayed + when the annotation is activated. + + + + + (Optional; PDF 1.2) The annotation’s highlighting mode, the visual effect to be + used when the mouse button is pressed or held down inside its active area: + N (None) No highlighting. + I (Invert) Invert the contents of the annotation rectangle. + O (Outline) Invert the annotation’s border. + P (Push) Display the annotation as if it were being pushed below the surface of the page. + Default value: I. + Note: In PDF 1.1, highlighting is always done by inverting colors inside the annotation rectangle. + + + + + (Optional; PDF 1.3) A URI action formerly associated with this annotation. When Web + Capture changes and annotation from a URI to a go-to action, it uses this entry to save + the data from the original URI action so that it can be changed back in case the target page for + the go-to action is subsequently deleted. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a rubber stamp annotation. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The document. + + + + Gets or sets an icon to be used in displaying the annotation. + + + + + Predefined keys of this dictionary. + + + + + (Optional) The name of an icon to be used in displaying the annotation. Viewer + applications should provide predefined icon appearances for at least the following + standard names: + Approved + AsIs + Confidential + Departmental + Draft + Experimental + Expired + Final + ForComment + ForPublicRelease + NotApproved + NotForPublicRelease + Sold + TopSecret + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a text annotation. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a flag indicating whether the annotation should initially be displayed open. + + + + + Gets or sets an icon to be used in displaying the annotation. + + + + + Predefined keys of this dictionary. + + + + + (Optional) A flag specifying whether the annotation should initially be displayed open. + Default value: false (closed). + + + + + (Optional) The name of an icon to be used in displaying the annotation. Viewer + applications should provide predefined icon appearances for at least the following + standard names: + Comment + Help + Insert + Key + NewParagraph + Note + Paragraph + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a text annotation. + + + + + Predefined keys of this dictionary. + + + + + (Optional) The annotation’s highlighting mode, the visual effect to be used when + the mouse button is pressed or held down inside its active area: + N (None) No highlighting. + I (Invert) Invert the contents of the annotation rectangle. + O (Outline) Invert the annotation’s border. + P (Push) Display the annotation’s down appearance, if any. If no down appearance is defined, + offset the contents of the annotation rectangle to appear as if it were being pushed below + the surface of the page. + T (Toggle) Same as P (which is preferred). + A highlighting mode other than P overrides any down appearance defined for the annotation. + Default value: I. + + + + + (Optional) An appearance characteristics dictionary to be used in constructing a dynamic + appearance stream specifying the annotation’s visual presentation on the page. + The name MK for this entry is of historical significance only and has no direct meaning. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Base class for all PDF content stream objects. + + + + + Initializes a new instance of the class. + + + + + Creates a new object that is a copy of the current instance. + + + + + Creates a new object that is a copy of the current instance. + + + + + Implements the copy mechanism. Must be overridden in derived classes. + + + + + + + + + + Represents a comment in a PDF content stream. + + + + + Creates a new object that is a copy of the current instance. + + + + + Implements the copy mechanism of this class. + + + + + Gets or sets the comment text. + + + + + Returns a string that represents the current comment. + + + + + Represents a sequence of objects in a PDF content stream. + + + + + Creates a new object that is a copy of the current instance. + + + + + Implements the copy mechanism of this class. + + + + + Adds the specified sequence. + + The sequence. + + + + Adds the specified value add the end of the sequence. + + + + + Removes all elements from the sequence. + + + + + Determines whether the specified value is in the sequence. + + + + + Returns the index of the specified value in the sequence or -1, if no such value is in the sequence. + + + + + Inserts the specified value in the sequence. + + + + + Removes the specified value from the sequence. + + + + + Removes the value at the specified index from the sequence. + + + + + Gets or sets a CObject at the specified index. + + + + + + Copies the elements of the sequence to the specified array. + + + + + Gets the number of elements contained in the sequence. + + + + + Returns an enumerator that iterates through the sequence. + + + + + Converts the sequence to a PDF content stream. + + + + + Returns a string containing all elements of the sequence. + + + + + Represents the base class for numerical objects in a PDF content stream. + + + + + Creates a new object that is a copy of the current instance. + + + + + Implements the copy mechanism of this class. + + + + + Represents an integer value in a PDF content stream. + + + + + Creates a new object that is a copy of the current instance. + + + + + Implements the copy mechanism of this class. + + + + + Gets or sets the value. + + + + + Returns a string that represents the current value. + + + + + Represents a real value in a PDF content stream. + + + + + Creates a new object that is a copy of the current instance. + + + + + Implements the copy mechanism of this class. + + + + + Gets or sets the value. + + + + + Returns a string that represents the current value. + + + + + Type of the parsed string. + + + + + The string has the format "(...)". + + + + + The string has the format "<...>". + + + + + The string... TODO. + + + + + The string... TODO. + + + + + HACK: The string is the content of a dictionary. + Currently there is no parser for dictionaries in Content Streams. + + + + + Represents a string value in a PDF content stream. + + + + + Creates a new object that is a copy of the current instance. + + + + + Implements the copy mechanism of this class. + + + + + Gets or sets the value. + + + + + Gets or sets the type of the content string. + + + + + Returns a string that represents the current value. + + + + + Represents a name in a PDF content stream. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name. + + + + Creates a new object that is a copy of the current instance. + + + + + Implements the copy mechanism of this class. + + + + + Gets or sets the name. Names must start with a slash. + + + + + Returns a string that represents the current value. + + + + + Represents an array of objects in a PDF content stream. + + + + + Creates a new object that is a copy of the current instance. + + + + + Implements the copy mechanism of this class. + + + + + Returns a string that represents the current value. + + + + + Represents an operator a PDF content stream. + + + + + Initializes a new instance of the class. + + + + + Creates a new object that is a copy of the current instance. + + + + + Implements the copy mechanism of this class. + + + + + Gets or sets the name of the operator + + The name. + + + + Gets or sets the operands. + + The operands. + + + + Gets the operator description for this instance. + + + + + Returns a string that represents the current operator. + + + + + Specifies the group of operations the op-code belongs to. + + + + + + + + + + + + + + + The names of the op-codes. + + + + + Close, fill, and stroke path using nonzero winding number rule. + + + + + Fill and stroke path using nonzero winding number rule. + + + + + Close, fill, and stroke path using even-odd rule. + + + + + Fill and stroke path using even-odd rule. + + + + + (PDF 1.2) Begin marked-content sequence with property list. + + + + + Begin inline image object. + + + + + (PDF 1.2) Begin marked-content sequence. + + + + + Begin text object. + + + + + (PDF 1.1) Begin compatibility section. + + + + + (PDF 1.2) Define marked-content point with property list. + + + + + (PDF 1.2) End marked-content sequence. + + + + + (PDF 1.1) End compatibility section. + + + + + (PDF 1.2) Define marked-content point + + + + + Move to next line and show text. + + + + + Set word and character spacing, move to next line, and show text. + + + + + Represents a PDF content stream operator description. + + + + + Initializes a new instance of the class. + + The name. + The enum value of the operator. + The number of operands. + The postscript equivalent, or null, if no such operation exists. + The flags. + The description from Adobe PDF Reference. + + + + The name of the operator. + + + + + The enum value of the operator. + + + + + The number of operands. -1 indicates a variable number of operands. + + + + + The flags. + + + + + The postscript equivalent, or null, if no such operation exists. + + + + + The description from Adobe PDF Reference. + + + + + Static class with all PDF op-codes. + + + + + Operators from name. + + The name. + + + + Initializes the class. + + + + + Array of all OpCodes. + + + + + Character table by name. Same as PdfSharp.Pdf.IO.Chars. Not yet clear if necessary. + + + + + Lexical analyzer for PDF content files. Adobe specifies no grammar, but it seems that it + is a simple post-fix notation. + + + + + Initializes a new instance of the Lexer class. + + + + + Initializes a new instance of the Lexer class. + + + + + Reads the next token and returns its type. + + + + + Scans a comment line. (Not yet used, comments are skipped by lexer.) + + + + + Scans the bytes of an inline image. + NYI: Just scans over it. + + + + + Scans a name. + + + + + Scans an integer or real number. + + + + + Scans an operator. + + + + + Move current position one character further in content stream. + + + + + Resets the current token to the empty string. + + + + + Appends current character to the token and reads next one. + + + + + If the current character is not a white space, the function immediately returns it. + Otherwise the PDF cursor is moved forward to the first non-white space or EOF. + White spaces are NUL, HT, LF, FF, CR, and SP. + + + + + Gets or sets the current symbol. + + + + + Gets the current token. + + + + + Interprets current token as integer literal. + + + + + Interpret current token as real or integer literal. + + + + + Indicates whether the specified character is a content stream white-space character. + + + + + Indicates whether the specified character is an content operator character. + + + + + Indicates whether the specified character is a PDF delimiter character. + + + + + Gets the length of the content. + + + + + Represents the functionality for reading PDF content streams. + + + + + Reads the content stream(s) of the specified page. + + The page. + + + + Reads the specified content. + + The content. + + + + Reads the specified content. + + The content. + + + + Exception thrown by ContentReader. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Represents a writer for generation of PDF streams. + + + + + Writes the specified value to the PDF stream. + + + + + Gets or sets the indentation for a new indentation level. + + + + + Increases indent level. + + + + + Decreases indent level. + + + + + Gets an indent string of current indent. + + + + + Gets the underlying stream. + + + + + Provides the functionality to parse PDF content streams. + + + + + Parses whatever comes until the specified stop symbol is reached. + + + + + Reads the next symbol that must be the specified one. + + + + + Terminal symbols recognized by PDF content stream lexer. + + + + + Implements the ASCII85Decode filter. + + + + + Encodes the specified data. + + + + + Decodes the specified data. + + + + + Implements the ASCIIHexDecode filter. + + + + + Encodes the specified data. + + + + + Decodes the specified data. + + + + + Reserved for future extension. + + + + + Base class for all stream filters + + + + + When implemented in a derived class encodes the specified data. + + + + + Encodes a raw string. + + + + + When implemented in a derived class decodes the specified data. + + + + + Decodes the specified data. + + + + + Decodes to a raw string. + + + + + Decodes to a raw string. + + + + + Removes all white spaces from the data. The function assumes that the bytes are characters. + + + + + Applies standard filters to streams. + + + + + Gets the filter specified by the case sensitive name. + + + + + Gets the filter singleton. + + + + + Gets the filter singleton. + + + + + Gets the filter singleton. + + + + + Gets the filter singleton. + + + + + Encodes the data with the specified filter. + + + + + Encodes a raw string with the specified filter. + + + + + Decodes the data with the specified filter. + + + + + Decodes the data with the specified filter. + + + + + Decodes the data with the specified filter. + + + + + Decodes to a raw string with the specified filter. + + + + + Decodes to a raw string with the specified filter. + + + + + Implements the FlateDecode filter by wrapping SharpZipLib. + + + + + Encodes the specified data. + + + + + Encodes the specified data. + + + + + Decodes the specified data. + + + + + Implements the LzwDecode filter. + + + + + Throws a NotImplementedException because the obsolete LZW encoding is not supported by PDFsharp. + + + + + Decodes the specified data. + + + + + Initialize the dictionary. + + + + + Add a new entry to the Dictionary. + + + + + Returns the next set of bits. + + + + + An encoder for PDF AnsiEncoding. + + + + + Gets the byte count. + + + + + Gets the bytes. + + + + + Gets the character count. + + + + + Gets the chars. + + + + + When overridden in a derived class, calculates the maximum number of bytes produced by encoding the specified number of characters. + + The number of characters to encode. + + The maximum number of bytes produced by encoding the specified number of characters. + + + + + When overridden in a derived class, calculates the maximum number of characters produced by decoding the specified number of bytes. + + The number of bytes to decode. + + The maximum number of characters produced by decoding the specified number of bytes. + + + + + Indicates whether the specified Unicode character is available in the ANSI code page 1252. + + + + + Maps Unicode to ANSI code page 1252. + + + + + Maps WinAnsi to Unicode characters. + + + + + Helper functions for RGB and CMYK colors. + + + + + Checks whether a color mode and a color match. + + + + + Checks whether the color mode of a document and a color match. + + + + + Determines whether two colors are equal referring to their CMYK color values. + + + + + An encoder for PDF DocEncoding. + + + + + Converts WinAnsi to DocEncode characters. Based upon PDF Reference 1.6. + + + + + Groups a set of static encoding helper functions. + + + + + Gets the raw encoding. + + + + + Gets the raw Unicode encoding. + + + + + Gets the Windows 1252 (ANSI) encoding. + + + + + Gets the PDF DocEncoding encoding. + + + + + Gets the UNICODE little-endian encoding. + + + + + Converts a raw string into a raw string literal, possibly encrypted. + + + + + Converts a raw string into a raw string literal, possibly encrypted. + + + + + Converts a raw string into a raw hexadecimal string literal, possibly encrypted. + + + + + Converts a raw string into a raw hexadecimal string literal, possibly encrypted. + + + + + Converts the specified byte array into a byte array representing a string literal. + + The bytes of the string. + Indicates whether one or two bytes are one character. + Indicates whether to use Unicode prefix. + Indicates whether to create a hexadecimal string literal. + Encrypts the bytes if specified. + The PDF bytes. + + + + Converts WinAnsi to DocEncode characters. Incomplete, just maps € and some other characters. + + + + + ...because I always forget CultureInfo.InvariantCulture and wonder why Acrobat + cannot understand my German decimal separator... + + + + + Converts a float into a string with up to 3 decimal digits and a decimal point. + + + + + Converts an XColor into a string with up to 3 decimal digits and a decimal point. + + + + + Converts an XMatrix into a string with up to 4 decimal digits and a decimal point. + + + + + An encoder for raw strings. The raw encoding is simply the identity relation between + characters and bytes. PDFsharp internally works with raw encoded strings instead of + byte arrays because strings are much more handy than byte arrays. + + + Raw encoded strings represent an array of bytes. Therefore a character greater than + 255 is not valid in a raw encoded string. + + + + + Initializes a new instance of the class. + + + + + When overridden in a derived class, calculates the number of bytes produced by encoding a set of characters from the specified character array. + + The character array containing the set of characters to encode. + The index of the first character to encode. + The number of characters to encode. + + The number of bytes produced by encoding the specified characters. + + + + + When overridden in a derived class, encodes a set of characters from the specified character array into the specified byte array. + + The character array containing the set of characters to encode. + The index of the first character to encode. + The number of characters to encode. + The byte array to contain the resulting sequence of bytes. + The index at which to start writing the resulting sequence of bytes. + + The actual number of bytes written into . + + + + + When overridden in a derived class, calculates the number of characters produced by decoding a sequence of bytes from the specified byte array. + + The byte array containing the sequence of bytes to decode. + The index of the first byte to decode. + The number of bytes to decode. + + The number of characters produced by decoding the specified sequence of bytes. + + + + + When overridden in a derived class, decodes a sequence of bytes from the specified byte array into the specified character array. + + The byte array containing the sequence of bytes to decode. + The index of the first byte to decode. + The number of bytes to decode. + The character array to contain the resulting set of characters. + The index at which to start writing the resulting set of characters. + + The actual number of characters written into . + + + + + When overridden in a derived class, calculates the maximum number of bytes produced by encoding the specified number of characters. + + The number of characters to encode. + + The maximum number of bytes produced by encoding the specified number of characters. + + + + + When overridden in a derived class, calculates the maximum number of characters produced by decoding the specified number of bytes. + + The number of bytes to decode. + + The maximum number of characters produced by decoding the specified number of bytes. + + + + + An encoder for Unicode strings. + (That means, a character represents a glyph index.) + + + + + Provides a thread-local cache for large objects. + + + + + Maps path to document handle. + + + + + Character table by name. + + + + + The EOF marker. + + + + + The null byte. + + + + + The carriage return character (ignored by lexer). + + + + + The line feed character. + + + + + The bell character. + + + + + The backspace character. + + + + + The form feed character. + + + + + The horizontal tab character. + + + + + The vertical tab character. + + + + + The non-breakable space character (aka no-break space or non-breaking space). + + + + + The space character. + + + + + The double quote character. + + + + + The single quote character. + + + + + The left parenthesis. + + + + + The right parenthesis. + + + + + The left brace. + + + + + The right brace. + + + + + The left bracket. + + + + + The right bracket. + + + + + The less-than sign. + + + + + The greater-than sign. + + + + + The equal sign. + + + + + The period. + + + + + The semicolon. + + + + + The colon. + + + + + The slash. + + + + + The bar character. + + + + + The back slash. + + + + + The percent sign. + + + + + The dollar sign. + + + + + The at sign. + + + + + The number sign. + + + + + The question mark. + + + + + The hyphen. + + + + + The soft hyphen. + + + + + The currency sign. + + + + + Determines the type of the password. + + + + + Password is neither user nor owner password. + + + + + Password is user password. + + + + + Password is owner password. + + + + + Determines how a PDF document is opened. + + + + + The PDF stream is completely read into memory and can be modified. Pages can be deleted or + inserted, but it is not possible to extract pages. This mode is useful for modifying an + existing PDF document. + + + + + The PDF stream is opened for importing pages from it. A document opened in this mode cannot + be modified. + + + + + The PDF stream is completely read into memory, but cannot be modified. This mode preserves the + original internal structure of the document and is useful for analyzing existing PDF files. + + + + + The PDF stream is partially read for information purposes only. The only valid operation is to + call the Info property at the imported document. This option is very fast and needs less memory + and is e.g. useful for browsing information about a collection of PDF documents in a user interface. + + + + + Determines how the PDF output stream is formatted. Even all formats create valid PDF files, + only Compact or Standard should be used for production purposes. + + + + + The PDF stream contains no unnecessary characters. This is default in release build. + + + + + The PDF stream contains some superfluous line feeds, but is more readable. + + + + + The PDF stream is indented to reflect the nesting levels of the objects. This is useful + for analyzing PDF files, but increases the size of the file significantly. + + + + + The PDF stream is indented to reflect the nesting levels of the objects and contains additional + information about the PDFsharp objects. Furthermore content streams are not deflated. This + is useful for debugging purposes only and increases the size of the file significantly. + + + + + INTERNAL USE ONLY. + + + + + If only this flag is specified the result is a regular valid PDF stream. + + + + + Omit writing stream data. For debugging purposes only. + With this option the result is not valid PDF. + + + + + Omit inflate filter. For debugging purposes only. + + + + + Terminal symbols recognized by lexer. + + + + + Lexical analyzer for PDF files. Technically a PDF file is a stream of bytes. Some chunks + of bytes represent strings in several encodings. The actual encoding depends on the + context where the string is used. Therefore the bytes are 'raw encoded' into characters, + i.e. a character or token read by the lexer has always character values in the range from + 0 to 255. + + + + + Initializes a new instance of the Lexer class. + + + + + Gets or sets the position within the PDF stream. + + + + + Reads the next token and returns its type. If the token starts with a digit, the parameter + testReference specifies how to treat it. If it is false, the lexer scans for a single integer. + If it is true, the lexer checks if the digit is the prefix of a reference. If it is a reference, + the token is set to the object ID followed by the generation number separated by a blank + (the 'R' is omitted from the token). + + + + + Reads the raw content of a stream. + + + + + Reads a string in raw encoding. + + + + + Scans a comment line. + + + + + Scans a name. + + + + + Scans a number. + + + + + Scans a keyword. + + + + + Scans a literal string, contained between "(" and ")". + + + + + Move current position one character further in PDF stream. + + + + + Appends current character to the token and reads next one. + + + + + If the current character is not a white space, the function immediately returns it. + Otherwise the PDF cursor is moved forward to the first non-white space or EOF. + White spaces are NUL, HT, LF, FF, CR, and SP. + + + + + Gets the current symbol. + + + + + Gets the current token. + + + + + Interprets current token as boolean literal. + + + + + Interprets current token as integer literal. + + + + + Interprets current token as unsigned integer literal. + + + + + Interprets current token as real or integer literal. + + + + + Interprets current token as object ID. + + + + + Indicates whether the specified character is a PDF white-space character. + + + + + Indicates whether the specified character is a PDF delimiter character. + + + + + Gets the length of the PDF output. + + + + + Provides the functionality to parse PDF documents. + + + + + Sets PDF input stream position to the specified object. + + + + + Reads PDF object from input stream. + + Either the instance of a derived type or null. If it is null + an appropriate object is created. + The address of the object. + If true, specifies that all indirect objects + are included recursively. + If true, the objects is parsed from an object stream. + + + + Reads the stream of a dictionary. + + + + + Parses whatever comes until the specified stop symbol is reached. + + + + + Reads the object ID and the generation and sets it into the specified object. + + + + + Reads the next symbol that must be the specified one. + + + + + Reads the next token that must be the specified one. + + + + + Reads a name from the PDF data stream. The preceding slash is part of the result string. + + + + + Reads an integer value directly from the PDF data stream. + + + + + Reads an object from the PDF input stream using the default parser. + + + + + Reads the irefs from the compressed object with the specified index in the object stream + of the object with the specified object id. + + + + + Reads the compressed object with the specified index in the object stream + of the object with the specified object id. + + + + + Reads the compressed object with the specified number at the given offset. + The parser must be initialized with the stream an object stream object. + + + + + Reads the object stream header as pairs of integers from the beginning of the + stream of an object stream. Parameter first is the value of the First entry of + the object stream object. + + + + + Reads the cross-reference table(s) and their trailer dictionary or + cross-reference streams. + + + + + Reads cross reference table(s) and trailer(s). + + + + + Checks the x reference table entry. Returns true if everything is correct. + Return false if the keyword "obj" was found, but ID or Generation are incorrect. + Throws an exception otherwise. + + The position where the object is supposed to be. + The ID from the XRef table. + The generation from the XRef table. + The identifier found in the PDF file. + The generation found in the PDF file. + + + + + Reads cross reference stream(s). + + + + + Parses a PDF date string. + + + + + Encapsulates the arguments of the PdfPasswordProvider delegate. + + + + + Sets the password to open the document with. + + + + + When set to true the PdfReader.Open function returns null indicating that no PdfDocument was created. + + + + + A delegated used by the PdfReader.Open function to retrieve a password if the document is protected. + + + + + Represents the functionality for reading PDF documents. + + + + + Determines whether the file specified by its path is a PDF file by inspecting the first eight + bytes of the data. If the file header has the form «%PDF-x.y» the function returns the version + number as integer (e.g. 14 for PDF 1.4). If the file header is invalid or inaccessible + for any reason, 0 is returned. The function never throws an exception. + + + + + Determines whether the specified stream is a PDF file by inspecting the first eight + bytes of the data. If the data begins with «%PDF-x.y» the function returns the version + number as integer (e.g. 14 for PDF 1.4). If the data is invalid or inaccessible + for any reason, 0 is returned. The function never throws an exception. + + + + + Determines whether the specified data is a PDF file by inspecting the first eight + bytes of the data. If the data begins with «%PDF-x.y» the function returns the version + number as integer (e.g. 14 for PDF 1.4). If the data is invalid or inaccessible + for any reason, 0 is returned. The function never throws an exception. + + + + + Implements scanning the PDF file version. + + + + + Opens an existing PDF document. + + + + + Opens an existing PDF document. + + + + + Opens an existing PDF document. + + + + + Opens an existing PDF document. + + + + + Opens an existing PDF document. + + + + + Opens an existing PDF document. + + + + + Opens an existing PDF document. + + + + + Opens an existing PDF document. + + + + + Opens an existing PDF document. + + + + + Opens an existing PDF document. + + + + + Opens an existing PDF document. + + + + + Exception thrown by PdfReader. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Represents a writer for generation of PDF streams. + + + + + Gets or sets the kind of layout. + + + + + Writes the specified value to the PDF stream. + + + + + Writes the specified value to the PDF stream. + + + + + Writes the specified value to the PDF stream. + + + + + Writes the specified value to the PDF stream. + + + + + Writes the specified value to the PDF stream. + + + + + Writes the specified value to the PDF stream. + + + + + Writes the specified value to the PDF stream. + + + + + Writes the specified value to the PDF stream. + + + + + Writes the specified value to the PDF stream. + + + + + Writes the specified value to the PDF stream. + + + + + Begins a direct or indirect dictionary or array. + + + + + Ends a direct or indirect dictionary or array. + + + + + Writes the stream of the specified dictionary. + + + + + Gets or sets the indentation for a new indentation level. + + + + + Increases indent level. + + + + + Decreases indent level. + + + + + Gets an indent string of current indent. + + + + + Gets the underlying stream. + + + + + Represents the stack for the shift-reduce parser. It seems that it is only needed for + reduction of indirect references. + + + + + Gets the stack pointer index. + + + + + Gets the value at the specified index. Valid index is in range 0 up to sp-1. + + + + + Gets an item relative to the current stack pointer. The index must be a negative value (-1, -2, etc.). + + + + + Gets an item relative to the current stack pointer. The index must be a negative value (-1, -2, etc.). + + + + + Pushes the specified item onto the stack. + + + + + Replaces the last 'count' items with the specified item. + + + + + Replaces the last 'count' items with the specified item. + + + + + The stack pointer index. Points to the next free item. + + + + + An array representing the stack. + + + + + Specifies the security level of the PDF document. + + + + + Document is not protected. + + + + + Document is protected with 40-bit security. This option is for compatibility with + Acrobat 3 and 4 only. Use Encrypted128Bit whenever possible. + + + + + Document is protected with 128-bit security. + + + + + Specifies which operations are permitted when the document is opened with user access. + + + + + Permits everything. This is the default value. + + + + + Represents the base of all security handlers. + + + + + Predefined keys of this dictionary. + + + + + (Required) The name of the preferred security handler for this document. Typically, + it is the name of the security handler that was used to encrypt the document. If + SubFilter is not present, only this security handler should be used when opening + the document. If it is present, consumer applications can use any security handler + that implements the format specified by SubFilter. + Standard is the name of the built-in password-based security handler. Names for other + security handlers can be registered by using the procedure described in Appendix E. + + + + + (Optional; PDF 1.3) A name that completely specifies the format and interpretation of + the contents of the encryption dictionary. It is needed to allow security handlers other + than the one specified by Filter to decrypt the document. If this entry is absent, other + security handlers should not be allowed to decrypt the document. + + + + + (Optional but strongly recommended) A code specifying the algorithm to be used in encrypting + and decrypting the document: + 0 An algorithm that is undocumented and no longer supported, and whose use is strongly discouraged. + 1 Algorithm 3.1, with an encryption key length of 40 bits. + 2 (PDF 1.4) Algorithm 3.1, but permitting encryption key lengths greater than 40 bits. + 3 (PDF 1.4) An unpublished algorithm that permits encryption key lengths ranging from 40 to 128 bits. + 4 (PDF 1.5) The security handler defines the use of encryption and decryption in the document, using + the rules specified by the CF, StmF, and StrF entries. + The default value if this entry is omitted is 0, but a value of 1 or greater is strongly recommended. + + + + + (Optional; PDF 1.4; only if V is 2 or 3) The length of the encryption key, in bits. + The value must be a multiple of 8, in the range 40 to 128. Default value: 40. + + + + + (Optional; meaningful only when the value of V is 4; PDF 1.5) + A dictionary whose keys are crypt filter names and whose values are the corresponding + crypt filter dictionaries. Every crypt filter used in the document must have an entry + in this dictionary, except for the standard crypt filter names. + + + + + (Optional; meaningful only when the value of V is 4; PDF 1.5) + The name of the crypt filter that is used by default when decrypting streams. + The name must be a key in the CF dictionary or a standard crypt filter name. All streams + in the document, except for cross-reference streams or streams that have a Crypt entry in + their Filter array, are decrypted by the security handler, using this crypt filter. + Default value: Identity. + + + + + (Optional; meaningful only when the value of V is 4; PDF 1.) + The name of the crypt filter that is used when decrypting all strings in the document. + The name must be a key in the CF dictionary or a standard crypt filter name. + Default value: Identity. + + + + + (Optional; meaningful only when the value of V is 4; PDF 1.6) + The name of the crypt filter that should be used by default when encrypting embedded + file streams; it must correspond to a key in the CF dictionary or a standard crypt + filter name. This entry is provided by the security handler. Applications should respect + this value when encrypting embedded files, except for embedded file streams that have + their own crypt filter specifier. If this entry is not present, and the embedded file + stream does not contain a crypt filter specifier, the stream should be encrypted using + the default stream crypt filter specified by StmF. + + + + + Encapsulates access to the security settings of a PDF document. + + + + + Indicates whether the granted access to the document is 'owner permission'. Returns true if the document + is unprotected or was opened with the owner password. Returns false if the document was opened with the + user password. + + + + + Gets or sets the document security level. If you set the security level to anything but PdfDocumentSecurityLevel.None + you must also set a user and/or an owner password. Otherwise saving the document will fail. + + + + + Sets the user password of the document. Setting a password automatically sets the + PdfDocumentSecurityLevel to PdfDocumentSecurityLevel.Encrypted128Bit if its current + value is PdfDocumentSecurityLevel.None. + + + + + Sets the owner password of the document. Setting a password automatically sets the + PdfDocumentSecurityLevel to PdfDocumentSecurityLevel.Encrypted128Bit if its current + value is PdfDocumentSecurityLevel.None. + + + + + Determines whether the document can be saved. + + + + + Permits printing the document. Should be used in conjunction with PermitFullQualityPrint. + + + + + Permits modifying the document. + + + + + Permits content copying or extraction. + + + + + Permits commenting the document. + + + + + Permits filling of form fields. + + + + + Permits content extraction for accessibility. + + + + + Permits to insert, rotate, or delete pages and create bookmarks or thumbnail images even if + PermitModifyDocument is not set. + + + + + Permits to print in high quality. insert, rotate, or delete pages and create bookmarks or thumbnail images + even if PermitModifyDocument is not set. + + + + + PdfStandardSecurityHandler is the only implemented handler. + + + + + Represents the standard PDF security handler. + + + + + Sets the user password of the document. Setting a password automatically sets the + PdfDocumentSecurityLevel to PdfDocumentSecurityLevel.Encrypted128Bit if its current + value is PdfDocumentSecurityLevel.None. + + + + + Sets the owner password of the document. Setting a password automatically sets the + PdfDocumentSecurityLevel to PdfDocumentSecurityLevel.Encrypted128Bit if its current + value is PdfDocumentSecurityLevel.None. + + + + + Gets or sets the user access permission represented as an integer in the P key. + + + + + Encrypts the whole document. + + + + + Encrypts an indirect object. + + + + + Encrypts a dictionary. + + + + + Encrypts an array. + + + + + Encrypts a string. + + + + + Encrypts an array. + + + + + Checks the password. + + Password or null if no password is provided. + + + + Pads a password to a 32 byte array. + + + + + Generates the user key based on the padded user password. + + + + + Generates the user key based on the padded owner password. + + + + + Computes the padded user password from the padded owner password. + + + + + Computes the encryption key. + + + + + Computes the user key. + + + + + Prepare the encryption key. + + + + + Prepare the encryption key. + + + + + Prepare the encryption key. + + + + + Encrypts the data. + + + + + Encrypts the data. + + + + + Encrypts the data. + + + + + Encrypts the data. + + + + + Checks whether the calculated key correct. + + + + + Set the hash key for the specified object. + + + + + Prepares the security handler for encrypting the document. + + + + + The global encryption key. + + + + + The message digest algorithm MD5. + + + + + Bytes used for RC4 encryption. + + + + + The encryption key for the owner. + + + + + The encryption key for the user. + + + + + The encryption key for a particular object/generation. + + + + + The encryption key length for a particular object/generation. + + + + + Predefined keys of this dictionary. + + + + + (Required) A number specifying which revision of the standard security handler + should be used to interpret this dictionary: + • 2 if the document is encrypted with a V value less than 2 and does not have any of + the access permissions set (by means of the P entry, below) that are designated + "Revision 3 or greater". + • 3 if the document is encrypted with a V value of 2 or 3, or has any "Revision 3 or + greater" access permissions set. + • 4 if the document is encrypted with a V value of 4 + + + + + (Required) A 32-byte string, based on both the owner and user passwords, that is + used in computing the encryption key and in determining whether a valid owner + password was entered. + + + + + (Required) A 32-byte string, based on the user password, that is used in determining + whether to prompt the user for a password and, if so, whether a valid user or owner + password was entered. + + + + + (Required) A set of flags specifying which operations are permitted when the document + is opened with user access. + + + + + (Optional; meaningful only when the value of V is 4; PDF 1.5) Indicates whether + the document-level metadata stream is to be encrypted. Applications should respect this value. + Default value: true. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Specifies the type of a key's value in a dictionary. + + + + + Summary description for KeyInfo. + + + + + Identifies the state of the document + + + + + The document was created from scratch. + + + + + The document was created by opening an existing PDF file. + + + + + The document is disposed. + + + + + Sets the mode for the Deflater (FlateEncoder). + + + + + The default mode. + + + + + Fast encoding, but larger PDF files. + + + + + Best compression, but takes more time. + + + + + Specifies whether to compress JPEG images with the FlateDecode filter. + + + + + PDFsharp will try FlateDecode and use it if it leads to a reduction in PDF file size. + When FlateEncodeMode is set to BestCompression, this is more likely to reduce the file size, + but it takes considerably more time to create the PDF file. + + + + + PDFsharp will never use FlateDecode - files may be a few bytes larger, but file creation is faster. + + + + + PDFsharp will always use FlateDecode, even if this leads to larger files; + this option is meant for testing purposes only and should not be used for production code. + + + + + Specifies what color model is used in a PDF document. + + + + + All color values are written as specified in the XColor objects they come from. + + + + + All colors are converted to RGB. + + + + + All colors are converted to CMYK. + + + + + This class is undocumented and may change or drop in future releases. + + + + + Use document default to determine compression. + + + + + Leave custom values uncompressed. + + + + + Compress custom values using FlateDecode. + + + + + Specifies the embedding options of an XFont when converted into PDF. + Font embedding is not optional anymore. So Always is the only option. + + + + + All fonts are embedded. + + + + + Fonts are not embedded. This is not an option anymore. + + + + + Unicode fonts are embedded, WinAnsi fonts are not embedded. + + + + + Not yet implemented. + + + + + Specifies the encoding schema used for an XFont when converted into PDF. + + + + + Cause a font to use Windows-1252 encoding to encode text rendered with this font. + Same as Windows1252 encoding. + + + + + Cause a font to use Unicode encoding to encode text rendered with this font. + + + + + Unicode encoding. + + + + + Specifies the type of a page destination in outline items, annotations, or actions.. + + + + + Display the page with the coordinates (left, top) positioned at the upper-left corner of + the window and the contents of the page magnified by the factor zoom. + + + + + Display the page with its contents magnified just enough to fit the + entire page within the window both horizontally and vertically. + + + + + Display the page with the vertical coordinate top positioned at the top edge of + the window and the contents of the page magnified just enough to fit the entire + width of the page within the window. + + + + + Display the page with the horizontal coordinate left positioned at the left edge of + the window and the contents of the page magnified just enough to fit the entire + height of the page within the window. + + + + + Display the page designated by page, with its contents magnified just enough to + fit the rectangle specified by the coordinates left, bottom, right, and topentirely + within the window both horizontally and vertically. If the required horizontal and + vertical magnification factors are different, use the smaller of the two, centering + the rectangle within the window in the other dimension. A null value for any of + the parameters may result in unpredictable behavior. + + + + + Display the page with its contents magnified just enough to fit the rectangle specified + by the coordinates left, bottom, right, and topentirely within the window both + horizontally and vertically. + + + + + Display the page with the vertical coordinate top positioned at the top edge of + the window and the contents of the page magnified just enough to fit the entire + width of its bounding box within the window. + + + + + Display the page with the horizontal coordinate left positioned at the left edge of + the window and the contents of the page magnified just enough to fit the entire + height of its bounding box within the window. + + + + + Specifies the font style for the outline (bookmark) text. + + + + + Outline text is displayed using a regular font. + + + + + Outline text is displayed using an italic font. + + + + + Outline text is displayed using a bold font. + + + + + Outline text is displayed using a bold and italic font. + + + + + Specifies the page layout to be used by a viewer when the document is opened. + + + + + Display one page at a time. + + + + + Display the pages in one column. + + + + + Display the pages in two columns, with oddnumbered pages on the left. + + + + + Display the pages in two columns, with oddnumbered pages on the right. + + + + + (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left. + + + + + (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right. + + + + + Specifies how the document should be displayed by a viewer when opened. + + + + + Neither document outline nor thumbnail images visible. + + + + + Document outline visible. + + + + + Thumbnail images visible. + + + + + Full-screen mode, with no menu bar, windowcontrols, or any other window visible. + + + + + (PDF 1.5) Optional content group panel visible. + + + + + (PDF 1.6) Attachments panel visible. + + + + + Specifies how the document should be displayed by a viewer when opened. + + + + + Left to right. + + + + + Right to left (including vertical writing systems, such as Chinese, Japanese, and Korean) + + + + + Specifies how text strings are encoded. A text string is any text used outside of a page content + stream, e.g. document information, outline text, annotation text etc. + + + + + Specifies that hypertext uses PDF DocEncoding. + + + + + Specifies that hypertext uses unicode encoding. + + + + + Base class for all dictionary Keys classes. + + + + + Holds information about the value of a key in a dictionary. This information is used to create + and interpret this value. + + + + + Initializes a new instance of KeyDescriptor from the specified attribute during a KeysMeta + initializes itself using reflection. + + + + + Gets or sets the PDF version starting with the availability of the described key. + + + + + Returns the type of the object to be created as value for the described key. + + + + + Contains meta information about all keys of a PDF dictionary. + + + + + Gets the KeyDescriptor of the specified key, or null if no such descriptor exits. + + + + + Represents a PDF array object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The document. + + + + Initializes a new instance of the class. + + The document. + The items. + + + + Initializes a new instance from an existing dictionary. Used for object type transformation. + + The array. + + + + Creates a copy of this array. Direct elements are deep copied. + Indirect references are not modified. + + + + + Implements the copy mechanism. + + + + + Gets the collection containing the elements of this object. + + + + + Returns an enumerator that iterates through a collection. + + + + + Returns a string with the content of this object in a readable form. Useful for debugging purposes only. + + + + + Represents the elements of an PdfArray. + + + + + Creates a shallow copy of this object. + + + + + Moves this instance to another array during object type transformation. + + + + + Converts the specified value to boolean. + If the value does not exist, the function returns false. + If the value is not convertible, the function throws an InvalidCastException. + If the index is out of range, the function throws an ArgumentOutOfRangeException. + + + + + Converts the specified value to integer. + If the value does not exist, the function returns 0. + If the value is not convertible, the function throws an InvalidCastException. + If the index is out of range, the function throws an ArgumentOutOfRangeException. + + + + + Converts the specified value to double. + If the value does not exist, the function returns 0. + If the value is not convertible, the function throws an InvalidCastException. + If the index is out of range, the function throws an ArgumentOutOfRangeException. + + + + + Converts the specified value to double?. + If the value does not exist, the function returns null. + If the value is not convertible, the function throws an InvalidCastException. + If the index is out of range, the function throws an ArgumentOutOfRangeException. + + + + + Converts the specified value to string. + If the value does not exist, the function returns the empty string. + If the value is not convertible, the function throws an InvalidCastException. + If the index is out of range, the function throws an ArgumentOutOfRangeException. + + + + + Converts the specified value to a name. + If the value does not exist, the function returns the empty string. + If the value is not convertible, the function throws an InvalidCastException. + If the index is out of range, the function throws an ArgumentOutOfRangeException. + + + + + Returns the indirect object if the value at the specified index is a PdfReference. + + + + + Gets the PdfObject with the specified index, or null, if no such object exists. If the index refers to + a reference, the referenced PdfObject is returned. + + + + + Gets the PdfArray with the specified index, or null, if no such object exists. If the index refers to + a reference, the referenced PdfArray is returned. + + + + + Gets the PdfArray with the specified index, or null, if no such object exists. If the index refers to + a reference, the referenced PdfArray is returned. + + + + + Gets the PdfReference with the specified index, or null, if no such object exists. + + + + + Gets all items of this array. + + + + + Returns false. + + + + + Gets or sets an item at the specified index. + + + + + + Removes the item at the specified index. + + + + + Removes the first occurrence of a specific object from the array/>. + + + + + Inserts the item the specified index. + + + + + Determines whether the specified value is in the array. + + + + + Removes all items from the array. + + + + + Gets the index of the specified item. + + + + + Appends the specified object to the array. + + + + + Returns false. + + + + + Returns false. + + + + + Gets the number of elements in the array. + + + + + Copies the elements of the array to the specified array. + + + + + The current implementation return null. + + + + + Returns an enumerator that iterates through the array. + + + + + The elements of the array. + + + + + The array this objects belongs to. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + Represents a direct boolean value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the value of this instance as boolean value. + + + + + A pre-defined value that represents true. + + + + + A pre-defined value that represents false. + + + + + Returns 'false' or 'true'. + + + + + Writes 'true' or 'false'. + + + + + Represents an indirect boolean value. This type is not used by PDFsharp. If it is imported from + an external PDF file, the value is converted into a direct object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the value of this instance as boolean value. + + + + + Returns "false" or "true". + + + + + Writes the keyword «false» or «true». + + + + + This class is intended for empira internal use only and may change or drop in future releases. + + + + + This function is intended for empira internal use only. + + + + + This function is intended for empira internal use only. + + + + + This property is intended for empira internal use only. + + + + + This property is intended for empira internal use only. + + + + + This class is intended for empira internal use only and may change or drop in future releases. + + + + + This function is intended for empira internal use only. + + + + + This function is intended for empira internal use only. + + + + + This function is intended for empira internal use only. + + + + + This function is intended for empira internal use only. + + + + + Represents a direct date value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the value as DateTime. + + + + + Returns the value in the PDF date format. + + + + + Writes the value in the PDF date format. + + + + + Value creation flags. Specifies whether and how a value that does not exist is created. + + + + + Don't create the value. + + + + + Create the value as direct object. + + + + + Create the value as indirect object. + + + + + Represents a PDF dictionary object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The document. + + + + Initializes a new instance from an existing dictionary. Used for object type transformation. + + + + + Creates a copy of this dictionary. Direct values are deep copied. Indirect references are not + modified. + + + + + This function is useful for importing objects from external documents. The returned object is not + yet complete. irefs refer to external objects and directed objects are cloned but their document + property is null. A cloned dictionary or array needs a 'fix-up' to be a valid object. + + + + + Gets the dictionary containing the elements of this dictionary. + + + + + The elements of the dictionary. + + + + + Returns an enumerator that iterates through the dictionary elements. + + + + + Returns a string with the content of this object in a readable form. Useful for debugging purposes only. + + + + + Writes a key/value pair of this dictionary. This function is intended to be overridden + in derived classes. + + + + + Writes the stream of this dictionary. This function is intended to be overridden + in a derived class. + + + + + Gets or sets the PDF stream belonging to this dictionary. Returns null if the dictionary has + no stream. To create the stream, call the CreateStream function. + + + + + Creates the stream of this dictionary and initializes it with the specified byte array. + The function must not be called if the dictionary already has a stream. + + + + + When overridden in a derived class, gets the KeysMeta of this dictionary type. + + + + + Represents the interface to the elements of a PDF dictionary. + + + + + Creates a shallow copy of this object. The clone is not owned by a dictionary anymore. + + + + + Moves this instance to another dictionary during object type transformation. + + + + + Gets the dictionary to which this elements object belongs to. + + + + + Converts the specified value to boolean. + If the value does not exist, the function returns false. + If the value is not convertible, the function throws an InvalidCastException. + + + + + Converts the specified value to boolean. + If the value does not exist, the function returns false. + If the value is not convertible, the function throws an InvalidCastException. + + + + + Sets the entry to a direct boolean value. + + + + + Converts the specified value to integer. + If the value does not exist, the function returns 0. + If the value is not convertible, the function throws an InvalidCastException. + + + + + Converts the specified value to integer. + If the value does not exist, the function returns 0. + If the value is not convertible, the function throws an InvalidCastException. + + + + + Sets the entry to a direct integer value. + + + + + Converts the specified value to double. + If the value does not exist, the function returns 0. + If the value is not convertible, the function throws an InvalidCastException. + + + + + Converts the specified value to double. + If the value does not exist, the function returns 0. + If the value is not convertible, the function throws an InvalidCastException. + + + + + Sets the entry to a direct double value. + + + + + Converts the specified value to String. + If the value does not exist, the function returns the empty string. + + + + + Converts the specified value to String. + If the value does not exist, the function returns the empty string. + + + + + Tries to get the string. TODO: more TryGet... + + + + + Sets the entry to a direct string value. + + + + + Converts the specified value to a name. + If the value does not exist, the function returns the empty string. + + + + + Sets the specified name value. + If the value doesn't start with a slash, it is added automatically. + + + + + Converts the specified value to PdfRectangle. + If the value does not exist, the function returns an empty rectangle. + If the value is not convertible, the function throws an InvalidCastException. + + + + + Converts the specified value to PdfRectangle. + If the value does not exist, the function returns an empty rectangle. + If the value is not convertible, the function throws an InvalidCastException. + + + + + Sets the entry to a direct rectangle value, represented by an array with four values. + + + + Converts the specified value to XMatrix. + If the value does not exist, the function returns an identity matrix. + If the value is not convertible, the function throws an InvalidCastException. + + + Converts the specified value to XMatrix. + If the value does not exist, the function returns an identity matrix. + If the value is not convertible, the function throws an InvalidCastException. + + + + Sets the entry to a direct matrix value, represented by an array with six values. + + + + + Converts the specified value to DateTime. + If the value does not exist, the function returns the specified default value. + If the value is not convertible, the function throws an InvalidCastException. + + + + + Sets the entry to a direct datetime value. + + + + + Gets the value for the specified key. If the value does not exist, it is optionally created. + + + + + Short cut for GetValue(key, VCF.None). + + + + + Returns the type of the object to be created as value of the specified key. + + + + + Sets the entry with the specified value. DON'T USE THIS FUNCTION - IT MAY BE REMOVED. + + + + + Gets the PdfObject with the specified key, or null, if no such object exists. If the key refers to + a reference, the referenced PdfObject is returned. + + + + + Gets the PdfDictionary with the specified key, or null, if no such object exists. If the key refers to + a reference, the referenced PdfDictionary is returned. + + + + + Gets the PdfArray with the specified key, or null, if no such object exists. If the key refers to + a reference, the referenced PdfArray is returned. + + + + + Gets the PdfReference with the specified key, or null, if no such object exists. + + + + + Sets the entry to the specified object. The object must not be an indirect object, + otherwise an exception is raised. + + + + + Sets the entry as a reference to the specified object. The object must be an indirect object, + otherwise an exception is raised. + + + + + Sets the entry as a reference to the specified iref. + + + + + Gets a value indicating whether the object is read-only. + + + + + Returns an object for the object. + + + + + Gets or sets an entry in the dictionary. The specified key must be a valid PDF name + starting with a slash '/'. This property provides full access to the elements of the + PDF dictionary. Wrong use can lead to errors or corrupt PDF files. + + + + + Gets or sets an entry in the dictionary identified by a PdfName object. + + + + + Removes the value with the specified key. + + + + + Removes the value with the specified key. + + + + + Determines whether the dictionary contains the specified name. + + + + + Determines whether the dictionary contains a specific value. + + + + + Removes all elements from the dictionary. + + + + + Adds the specified value to the dictionary. + + + + + Adds an item to the dictionary. + + + + + Gets all keys currently in use in this dictionary as an array of PdfName objects. + + + + + Get all keys currently in use in this dictionary as an array of string objects. + + + + + Gets the value associated with the specified key. + + + + + Gets all values currently in use in this dictionary as an array of PdfItem objects. + + + + + Return false. + + + + + Return false. + + + + + Gets the number of elements contained in the dictionary. + + + + + Copies the elements of the dictionary to an array, starting at a particular index. + + + + + The current implementation returns null. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + The elements of the dictionary with a string as key. + Because the string is a name it starts always with a '/'. + + + + + The dictionary this objects belongs to. + + + + + The PDF stream objects. + + + + + A .NET string can contain char(0) as a valid character. + + + + + Clones this stream by creating a deep copy. + + + + + Moves this instance to another dictionary during object type transformation. + + + + + The dictionary the stream belongs to. + + + + + Gets the length of the stream, i.e. the actual number of bytes in the stream. + + + + + Gets a value indicating whether this stream has decode parameters. + + + + + Gets the decode predictor for LZW- or FlateDecode. + Returns 0 if no such value exists. + + + + + Gets the decode Columns for LZW- or FlateDecode. + Returns 0 if no such value exists. + + + + + Get or sets the bytes of the stream as they are, i.e. if one or more filters exist the bytes are + not unfiltered. + + + + + Gets the value of the stream unfiltered. The stream content is not modified by this operation. + + + + + Tries to unfilter the bytes of the stream. If the stream is filtered and PDFsharp knows the filter + algorithm, the stream content is replaced by its unfiltered value and the function returns true. + Otherwise the content remains untouched and the function returns false. + The function is useful for analyzing existing PDF files. + + + + + Compresses the stream with the FlateDecode filter. + If a filter is already defined, the function has no effect. + + + + + Returns the stream content as a raw string. + + + + + Common keys for all streams. + + + + + (Required) The number of bytes from the beginning of the line following the keyword + stream to the last byte just before the keyword endstream. (There may be an additional + EOL marker, preceding endstream, that is not included in the count and is not logically + part of the stream data.) + + + + + (Optional) The name of a filter to be applied in processing the stream data found between + the keywords stream and endstream, or an array of such names. Multiple filters should be + specified in the order in which they are to be applied. + + + + + (Optional) A parameter dictionary or an array of such dictionaries, used by the filters + specified by Filter. If there is only one filter and that filter has parameters, DecodeParms + must be set to the filter’s parameter dictionary unless all the filter’s parameters have + their default values, in which case the DecodeParms entry may be omitted. If there are + multiple filters and any of the filters has parameters set to nondefault values, DecodeParms + must be an array with one entry for each filter: either the parameter dictionary for that + filter, or the null object if that filter has no parameters (or if all of its parameters have + their default values). If none of the filters have parameters, or if all their parameters + have default values, the DecodeParms entry may be omitted. + + + + + (Optional; PDF 1.2) The file containing the stream data. If this entry is present, the bytes + between stream and endstream are ignored, the filters are specified by FFilter rather than + Filter, and the filter parameters are specified by FDecodeParms rather than DecodeParms. + However, the Length entry should still specify the number of those bytes. (Usually, there are + no bytes and Length is 0.) + + + + + (Optional; PDF 1.2) The name of a filter to be applied in processing the data found in the + stream’s external file, or an array of such names. The same rules apply as for Filter. + + + + + (Optional; PDF 1.2) A parameter dictionary, or an array of such dictionaries, used by the + filters specified by FFilter. The same rules apply as for DecodeParms. + + + + + Optional; PDF 1.5) A non-negative integer representing the number of bytes in the decoded + (defiltered) stream. It can be used to determine, for example, whether enough disk space is + available to write a stream to a file. + This value should be considered a hint only; for some stream filters, it may not be possible + to determine this value precisely. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + Represents a PDF document. + + + + + Creates a new PDF document in memory. + To open an existing PDF file, use the PdfReader class. + + + + + Creates a new PDF document with the specified file name. The file is immediately created and keeps + locked until the document is closed, at that time the document is saved automatically. + Do not call Save() for documents created with this constructor, just call Close(). + To open an existing PDF file and import it, use the PdfReader class. + + + + + Creates a new PDF document using the specified stream. + The stream won't be used until the document is closed, at that time the document is saved automatically. + Do not call Save() for documents created with this constructor, just call Close(). + To open an existing PDF file, use the PdfReader class. + + + + + Disposes all references to this document stored in other documents. This function should be called + for documents you finished importing pages from. Calling Dispose is technically not necessary but + useful for earlier reclaiming memory of documents you do not need anymore. + + + + + Gets or sets a user defined object that contains arbitrary information associated with this document. + The tag is not used by PDFsharp. + + + + + Gets or sets a value used to distinguish PdfDocument objects. + The name is not used by PDFsharp. + + + + + Get a new default name for a new document. + + + + + Closes this instance. + + + + + Saves the document to the specified path. If a file already exists, it will be overwritten. + + + + + Saves the document to the specified stream. + + + + + Saves the document to the specified stream. + The stream is not closed by this function. + (Older versions of PDFsharp closes the stream. That was not very useful.) + + + + + Implements saving a PDF file. + + + + + Dispatches PrepareForSave to the objects that need it. + + + + + Determines whether the document can be saved. + + + + + Gets the document options used for saving the document. + + + + + Gets PDF specific document settings. + + + + + NYI Indicates whether large objects are written immediately to the output stream to relieve + memory consumption. + + + + + Gets or sets the PDF version number. Return value 14 e.g. means PDF 1.4 / Acrobat 5 etc. + + + + + Gets the number of pages in the document. + + + + + Gets the file size of the document. + + + + + Gets the full qualified file name if the document was read form a file, or an empty string otherwise. + + + + + Gets a Guid that uniquely identifies this instance of PdfDocument. + + + + + Returns a value indicating whether the document was newly created or opened from an existing document. + Returns true if the document was opened with the PdfReader.Open function, false otherwise. + + + + + Returns a value indicating whether the document is read only or can be modified. + + + + + Gets information about the document. + + + + + This function is intended to be undocumented. + + + + + Get the pages dictionary. + + + + + Gets or sets a value specifying the page layout to be used when the document is opened. + + + + + Gets or sets a value specifying how the document should be displayed when opened. + + + + + Gets the viewer preferences of this document. + + + + + Gets the root of the outline (or bookmark) tree. + + + + + Get the AcroForm dictionary. + + + + + Gets or sets the default language of the document. + + + + + Gets the security settings of this document. + + + + + Gets the document font table that holds all fonts used in the current document. + + + + + Gets the document image table that holds all images used in the current document. + + + + + Gets the document form table that holds all form external objects used in the current document. + + + + + Gets the document ExtGState table that holds all form state objects used in the current document. + + + + + Gets the PdfCatalog of the current document. + + + + + Gets the PdfInternals object of this document, that grants access to some internal structures + which are not part of the public interface of PdfDocument. + + + + + Creates a new page and adds it to this document. + Depending of the IsMetric property of the current region the page size is set to + A4 or Letter respectively. If this size is not appropriate it should be changed before + any drawing operations are performed on the page. + + + + + Adds the specified page to this document. If the page is from an external document, + it is imported to this document. In this case the returned page is not the same + object as the specified one. + + + + + Creates a new page and inserts it in this document at the specified position. + + + + + Inserts the specified page in this document. If the page is from an external document, + it is imported to this document. In this case the returned page is not the same + object as the specified one. + + + + + Flattens a document (make the fields non-editable). + + + + + Gets the security handler. + + + + + Occurs when the specified document is not used anymore for importing content. + + + + + Gets the ThreadLocalStorage object. It is used for caching objects that should created + only once. + + + + + Represents the PDF document information dictionary. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the document's title. + + + + + Gets or sets the name of the person who created the document. + + + + + Gets or sets the name of the subject of the document. + + + + + Gets or sets keywords associated with the document. + + + + + Gets or sets the name of the application (for example, MigraDoc) that created the document. + + + + + Gets the producer application (for example, PDFsharp). + + + + + Gets or sets the creation date of the document. + Breaking Change: If the date is not set in a PDF file DateTime.MinValue is returned. + + + + + Gets or sets the modification date of the document. + Breaking Change: If the date is not set in a PDF file DateTime.MinValue is returned. + + + + + Predefined keys of this dictionary. + + + + + (Optional; PDF 1.1) The document’s title. + + + + + (Optional) The name of the person who created the document. + + + + + (Optional; PDF 1.1) The subject of the document. + + + + + (Optional; PDF 1.1) Keywords associated with the document. + + + + + (Optional) If the document was converted to PDF from another format, + the name of the application (for example, empira MigraDoc) that created the + original document from which it was converted. + + + + + (Optional) If the document was converted to PDF from another format, + the name of the application (for example, this library) that converted it to PDF. + + + + + (Optional) The date and time the document was created, in human-readable form. + + + + + (Required if PieceInfo is present in the document catalog; otherwise optional; PDF 1.1) + The date and time the document was most recently modified, in human-readable form. + + + + + (Optional; PDF 1.3) A name object indicating whether the document has been modified + to include trapping information. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Holds information how to handle the document when it is saved as PDF stream. + + + + + Gets or sets the color mode. + + + + + Gets or sets a value indicating whether to compress content streams of PDF pages. + + + + + Gets or sets a value indicating that all objects are not compressed. + + + + + Gets or sets the flate encode mode. Besides the balanced default mode you can set modes for best compression (slower) or best speed (larger files). + + + + + Gets or sets a value indicating whether to compress bilevel images using CCITT compression. + With true, PDFsharp will try FlateDecode CCITT and will use the smallest one or a combination of both. + With false, PDFsharp will always use FlateDecode only - files may be a few bytes larger, but file creation is faster. + + + + + Gets or sets a value indicating whether to compress JPEG images with the FlateDecode filter. + + + + + Holds PDF specific information of the document. + + + + + Gets or sets the default trim margins. + + + + + Represents a direct integer value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The value. + + + + Gets the value as integer. + + + + + Returns the integer as string. + + + + + Writes the integer as string. + + + + + Returns TypeCode for 32-bit integers. + + + + + Represents an indirect integer value. This type is not used by PDFsharp. If it is imported from + an external PDF file, the value is converted into a direct object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the value as integer. + + + + + Returns the integer as string. + + + + + Writes the integer literal. + + + + + The base class of all PDF objects and simple PDF types. + + + + + Creates a copy of this object. + + + + + Implements the copy mechanism. Must be overridden in derived classes. + + + + + When overridden in a derived class, appends a raw string representation of this object + to the specified PdfWriter. + + + + + Represents text that is written 'as it is' into the PDF stream. This class can lead to invalid PDF files. + E.g. strings in a literal are not encrypted when the document is saved with a password. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance with the specified string. + + + + + Initializes a new instance with the culture invariant formatted specified arguments. + + + + + Creates a literal from an XMatrix + + + + + Gets the value as litaral string. + + + + + Returns a string that represents the current value. + + + + + Represents a PDF name value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + Parameter value always must start with a '/'. + + + + + Determines whether the specified object is equal to this name. + + + + + Returns the hash code for this instance. + + + + + Gets the name as a string. + + + + + Returns the name. The string always begins with a slash. + + + + + Determines whether the specified name and string are equal. + + + + + Determines whether the specified name and string are not equal. + + + + + Represents the empty name. + + + + + Writes the name including the leading slash. + + + + + Gets the comparer for this type. + + + + + Implements a comparer that compares PdfName objects. + + + + + Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. + + The first object to compare. + The second object to compare. + + + + Represents an indirect name value. This type is not used by PDFsharp. If it is imported from + an external PDF file, the value is converted into a direct object. Acrobat sometime uses indirect + names to save space, because an indirect reference to a name may be shorter than a long name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The document. + The value. + + + + Determines whether the specified object is equal to the current object. + + + + + Serves as a hash function for this type. + + + + + Gets or sets the name value. + + + + + Returns the name. The string always begins with a slash. + + + + + Determines whether a name is equal to a string. + + + + + Determines whether a name is not equal to a string. + + + + + Writes the name including the leading slash. + + + + + Represents a indirect reference that is not in the cross reference table. + + + + + Returns a that represents the current . + + + A that represents the current . + + + + + The only instance of this class. + + + + + Represents an indirect null value. This type is not used by PDFsharp, but at least + one tool from Adobe creates PDF files with a null object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The document. + + + + Returns the string "null". + + + + + Writes the keyword «null». + + + + + Base class for direct number values (not yet used, maybe superfluous). + + + + + Base class for indirect number values (not yet used, maybe superfluous). + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The document. + + + + Base class of all composite PDF objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance from an existing object. Used for object type transformation. + + + + + Creates a copy of this object. The clone does not belong to a document, i.e. its owner and its iref are null. + + + + + Implements the copy mechanism. Must be overridden in derived classes. + + + + + Sets the object and generation number. + Setting the object identifier makes this object an indirect object, i.e. the object gets + a PdfReference entry in the PdfReferenceTable. + + + + + Gets the PdfDocument this object belongs to. + + + + + Sets the PdfDocument this object belongs to. + + + + + Indicates whether the object is an indirect object. + + + + + Gets the PdfInternals object of this document, that grants access to some internal structures + which are not part of the public interface of PdfDocument. + + + + + When overridden in a derived class, prepares the object to get saved. + + + + + Saves the stream position. 2nd Edition. + + + + + Gets the object identifier. Returns PdfObjectID.Empty for direct objects, + i.e. never returns null. + + + + + Gets the object number. + + + + + Gets the generation number. + + + + The document that owns the cloned objects. + The root object to be cloned. + The clone of the root object + + + The imported object table of the owner for the external document. + The document that owns the cloned objects. + The root object to be cloned. + The clone of the root object + + + + Replace all indirect references to external objects by their cloned counterparts + owned by the importer document. + + + + + Ensure for future versions of PDFsharp not to forget code for a new kind of PdfItem. + + The item. + + + + Gets the indirect reference of this object. If the value is null, this object is a direct object. + + + + + Represents a PDF object identifier, a pair of object and generation number. + + + + + Initializes a new instance of the class. + + The object number. + + + + Initializes a new instance of the class. + + The object number. + The generation number. + + + + Gets or sets the object number. + + + + + Gets or sets the generation number. + + + + + Indicates whether this object is an empty object identifier. + + + + + Indicates whether this instance and a specified object are equal. + + + + + Returns the hash code for this instance. + + + + + Determines whether the two objects are equal. + + + + + Determines whether the tow objects not are equal. + + + + + Returns the object and generation numbers as a string. + + + + + Creates an empty object identifier. + + + + + Compares the current object id with another object. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + Represents an outline item in the outlines tree. An 'outline' is also known as a 'bookmark'. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The document. + + + + Initializes a new instance from an existing dictionary. Used for object type transformation. + + + + + Initializes a new instance of the class. + + The outline text. + The destination page. + Specifies whether the node is displayed expanded (opened) or collapsed. + The font style used to draw the outline text. + The color used to draw the outline text. + + + + Initializes a new instance of the class. + + The outline text. + The destination page. + Specifies whether the node is displayed expanded (opened) or collapsed. + The font style used to draw the outline text. + + + + Initializes a new instance of the class. + + The outline text. + The destination page. + Specifies whether the node is displayed expanded (opened) or collapsed. + + + + Initializes a new instance of the class. + + The outline text. + The destination page. + + + + The total number of open descendants at all lower levels. + + + + + Counts the open outline items. Not yet used. + + + + + Gets the parent of this outline item. The root item has no parent and returns null. + + + + + Gets or sets the title. + + + + + Gets or sets the destination page. + + + + + Gets or sets the left position of the page positioned at the left side of the window. + Applies only if PageDestinationType is Xyz, FitV, FitR, or FitBV. + + + + + Gets or sets the top position of the page positioned at the top side of the window. + Applies only if PageDestinationType is Xyz, FitH, FitR, ob FitBH. + + + + + Gets or sets the right position of the page positioned at the right side of the window. + Applies only if PageDestinationType is FitR. + + + + + Gets or sets the bottom position of the page positioned at the bottom side of the window. + Applies only if PageDestinationType is FitR. + + + + + Gets or sets the zoom faction of the page. + Applies only if PageDestinationType is Xyz. + + + + + Gets or sets whether the outline item is opened (or expanded). + + + + + Gets or sets the style of the outline text. + + + + + Gets or sets the type of the page destination. + + + + + Gets or sets the color of the text. + + The color of the text. + + + + Gets a value indicating whether this outline object has child items. + + + + + Gets the outline collection of this node. + + + + + Initializes this instance from an existing PDF document. + + + + + Creates key/values pairs according to the object structure. + + + + + Format double. + + + + + Format nullable double. + + + + + Predefined keys of this dictionary. + + + + + (Optional) The type of PDF object that this dictionary describes; if present, + must be Outlines for an outline dictionary. + + + + + (Required) The text to be displayed on the screen for this item. + + + + + (Required; must be an indirect reference) The parent of this item in the outline hierarchy. + The parent of a top-level item is the outline dictionary itself. + + + + + (Required for all but the first item at each level; must be an indirect reference) + The previous item at this outline level. + + + + + (Required for all but the last item at each level; must be an indirect reference) + The next item at this outline level. + + + + + (Required if the item has any descendants; must be an indirect reference) + The first of this item’s immediate children in the outline hierarchy. + + + + + (Required if the item has any descendants; must be an indirect reference) + The last of this item’s immediate children in the outline hierarchy. + + + + + (Required if the item has any descendants) If the item is open, the total number of its + open descendants at all lower levels of the outline hierarchy. If the item is closed, a + negative integer whose absolute value specifies how many descendants would appear if the + item were reopened. + + + + + (Optional; not permitted if an A entry is present) The destination to be displayed when this + item is activated. + + + + + (Optional; not permitted if a Dest entry is present) The action to be performed when + this item is activated. + + + + + (Optional; PDF 1.3; must be an indirect reference) The structure element to which the item + refers. + Note: The ability to associate an outline item with a structure element (such as the beginning + of a chapter) is a PDF 1.3 feature. For backward compatibility with earlier PDF versions, such + an item should also specify a destination (Dest) corresponding to an area of a page where the + contents of the designated structure element are displayed. + + + + + (Optional; PDF 1.4) An array of three numbers in the range 0.0 to 1.0, representing the + components in the DeviceRGB color space of the color to be used for the outline entry’s text. + Default value: [0.0 0.0 0.0]. + + + + + (Optional; PDF 1.4) A set of flags specifying style characteristics for displaying the outline + item’s text. Default value: 0. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a collection of outlines. + + + + + Can only be created as part of PdfOutline. + + + + + Indicates whether the outline collection has at least one entry. + + + + + Removes the first occurrence of a specific item from the collection. + + + + + Gets the number of entries in this collection. + + + + + Returns false. + + + + + Adds the specified outline. + + + + + Removes all elements form the collection. + + + + + Determines whether the specified element is in the collection. + + + + + Copies the collection to an array, starting at the specified index of the target array. + + + + + Adds the specified outline entry. + + The outline text. + The destination page. + Specifies whether the node is displayed expanded (opened) or collapsed. + The font style used to draw the outline text. + The color used to draw the outline text. + + + + Adds the specified outline entry. + + The outline text. + The destination page. + Specifies whether the node is displayed expanded (opened) or collapsed. + The font style used to draw the outline text. + + + + Adds the specified outline entry. + + The outline text. + The destination page. + Specifies whether the node is displayed expanded (opened) or collapsed. + + + + Creates a PdfOutline and adds it into the outline collection. + + + + + Gets the index of the specified item. + + + + + Inserts the item at the specified index. + + + + + Removes the outline item at the specified index. + + + + + Gets the at the specified index. + + + + + Returns an enumerator that iterates through the outline collection. + + + + + The parent outine of this collection. + + + + + Represents a page in a PDF document. + + + + + Initializes a new page. The page must be added to a document before it can be used. + Depending of the IsMetric property of the current region the page size is set to + A4 or Letter respectively. If this size is not appropriate it should be changed before + any drawing operations are performed on the page. + + + + + Initializes a new instance of the class. + + The document. + + + + Gets or sets a user defined object that contains arbitrary information associated with this PDF page. + The tag is not used by PDFsharp. + + + + + Closes the page. A closed page cannot be modified anymore and it is not possible to + get an XGraphics object for a closed page. Closing a page is not required, but may save + resources if the document has many pages. + + + + + Gets a value indicating whether the page is closed. + + + + + Gets or sets the PdfDocument this page belongs to. + + + + + Gets or sets the orientation of the page. The default value PageOrientation.Portrait. + If an imported page has a /Rotate value that matches the formula 90 + n * 180 the + orientation is set to PageOrientation.Landscape. + + + + + Gets or sets one of the predefined standard sizes like. + + + + + Gets or sets the trim margins. + + + + + Gets or sets the media box directly. XGrahics is not prepared to work with a media box + with an origin other than (0,0). + + + + + Gets or sets the crop box. + + + + + Gets or sets the bleed box. + + + + + Gets or sets the art box. + + + + + Gets or sets the trim box. + + + + + Gets or sets the height of the page. If orientation is Landscape, this function applies to + the width. + + + + + Gets or sets the width of the page. If orientation is Landscape, this function applies to + the height. + + + + + Gets or sets the /Rotate entry of the PDF page. The value is the number of degrees by which the page + should be rotated clockwise when displayed or printed. The value must be a multiple of 90. + PDFsharp does not set this value, but for imported pages this value can be set and must be taken + into account when adding graphic to such a page. + + + + + The content stream currently used by an XGraphics object for rendering. + + + + + Gets the array of content streams of the page. + + + + + Gets the annotations array of this page. + + + + + Gets the annotations array of this page. + + + + + Adds an intra document link. + + The rect. + The destination page. + + + + Adds a link to the Web. + + The rect. + The URL. + + + + Adds a link to a file. + + The rect. + Name of the file. + + + + Gets or sets the custom values. + + + + + Gets the PdfResources object of this page. + + + + + Implements the interface because the primary function is internal. + + + + + Gets the resource name of the specified font within this page. + + + + + Tries to get the resource name of the specified font data within this page. + Returns null if no such font exists. + + + + + Gets the resource name of the specified font data within this page. + + + + + Gets the resource name of the specified image within this page. + + + + + Implements the interface because the primary function is internal. + + + + + Gets the resource name of the specified form within this page. + + + + + Implements the interface because the primary function is internal. + + + + + Hack to indicate that a page-level transparency group must be created. + + + + + Inherit values from parent node. + + + + + Add all inheritable values from the specified page to the specified values structure. + + + + + Predefined keys of this dictionary. + + + + + (Required) The type of PDF object that this dictionary describes; + must be Page for a page object. + + + + + (Required; must be an indirect reference) + The page tree node that is the immediate parent of this page object. + + + + + (Required if PieceInfo is present; optional otherwise; PDF 1.3) The date and time + when the page’s contents were most recently modified. If a page-piece dictionary + (PieceInfo) is present, the modification date is used to ascertain which of the + application data dictionaries that it contains correspond to the current content + of the page. + + + + + (Optional; PDF 1.3) A rectangle, expressed in default user space units, defining the + region to which the contents of the page should be clipped when output in a production + environment. Default value: the value of CropBox. + + + + + (Optional; PDF 1.3) A rectangle, expressed in default user space units, defining the + intended dimensions of the finished page after trimming. Default value: the value of + CropBox. + + + + + (Optional; PDF 1.3) A rectangle, expressed in default user space units, defining the + extent of the page’s meaningful content (including potential white space) as intended + by the page’s creator. Default value: the value of CropBox. + + + + + (Optional; PDF 1.4) A box color information dictionary specifying the colors and other + visual characteristics to be used in displaying guidelines on the screen for the various + page boundaries. If this entry is absent, the application should use its own current + default settings. + + + + + (Optional) A content stream describing the contents of this page. If this entry is absent, + the page is empty. The value may be either a single stream or an array of streams. If the + value is an array, the effect is as if all of the streams in the array were concatenated, + in order, to form a single stream. This allows PDF producers to create image objects and + other resources as they occur, even though they interrupt the content stream. The division + between streams may occur only at the boundaries between lexical tokens but is unrelated + to the page’s logical content or organization. Applications that consume or produce PDF + files are not required to preserve the existing structure of the Contents array. + + + + + (Optional; PDF 1.4) A group attributes dictionary specifying the attributes of the page’s + page group for use in the transparent imaging model. + + + + + (Optional) A stream object defining the page’s thumbnail image. + + + + + (Optional; PDF 1.1; recommended if the page contains article beads) An array of indirect + references to article beads appearing on the page. The beads are listed in the array in + natural reading order. + + + + + (Optional; PDF 1.1) The page’s display duration (also called its advance timing): the + maximum length of time, in seconds, that the page is displayed during presentations before + the viewer application automatically advances to the next page. By default, the viewer does + not advance automatically. + + + + + (Optional; PDF 1.1) A transition dictionary describing the transition effect to be used + when displaying the page during presentations. + + + + + (Optional) An array of annotation dictionaries representing annotations associated with + the page. + + + + + (Optional; PDF 1.2) An additional-actions dictionary defining actions to be performed + when the page is opened or closed. + + + + + (Optional; PDF 1.4) A metadata stream containing metadata for the page. + + + + + (Optional; PDF 1.3) A page-piece dictionary associated with the page. + + + + + (Required if the page contains structural content items; PDF 1.3) + The integer key of the page’s entry in the structural parent tree. + + + + + (Optional; PDF 1.3; indirect reference preferred) The digital identifier of + the page’s parent Web Capture content set. + + + + + (Optional; PDF 1.3) The page’s preferred zoom (magnification) factor: the factor + by which it should be scaled to achieve the natural display magnification. + + + + + (Optional; PDF 1.3) A separation dictionary containing information needed + to generate color separations for the page. + + + + + (Optional; PDF 1.5) A name specifying the tab order to be used for annotations + on the page. The possible values are R (row order), C (column order), + and S (structure order). + + + + + (Required if this page was created from a named page object; PDF 1.5) + The name of the originating page object. + + + + + (Optional; PDF 1.5) A navigation node dictionary representing the first node + on the page. + + + + + (Optional; PDF 1.6) A positive number giving the size of default user space units, + in multiples of 1/72 inch. The range of supported values is implementation-dependent. + + + + + (Optional; PDF 1.6) An array of viewport dictionaries specifying rectangular regions + of the page. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Predefined keys common to PdfPage and PdfPages. + + + + + (Required; inheritable) A dictionary containing any resources required by the page. + If the page requires no resources, the value of this entry should be an empty dictionary. + Omitting the entry entirely indicates that the resources are to be inherited from an + ancestor node in the page tree. + + + + + (Required; inheritable) A rectangle, expressed in default user space units, defining the + boundaries of the physical medium on which the page is intended to be displayed or printed. + + + + + (Optional; inheritable) A rectangle, expressed in default user space units, defining the + visible region of default user space. When the page is displayed or printed, its contents + are to be clipped (cropped) to this rectangle and then imposed on the output medium in some + implementation defined manner. Default value: the value of MediaBox. + + + + + (Optional; inheritable) The number of degrees by which the page should be rotated clockwise + when displayed or printed. The value must be a multiple of 90. Default value: 0. + + + + + Values inherited from a parent in the parent chain of a page tree. + + + + + Represents the pages of the document. + + + + + Gets the number of pages. + + + + + Gets the page with the specified index. + + + + + Finds a page by its id. Transforms it to PdfPage if necessary. + + + + + Creates a new PdfPage, adds it to the end of this document, and returns it. + + + + + Adds the specified PdfPage to the end of this document and maybe returns a new PdfPage object. + The value returned is a new object if the added page comes from a foreign document. + + + + + Creates a new PdfPage, inserts it at the specified position into this document, and returns it. + + + + + Inserts the specified PdfPage at the specified position to this document and maybe returns a new PdfPage object. + The value returned is a new object if the inserted page comes from a foreign document. + + + + + Inserts pages of the specified document into this document. + + The index in this document where to insert the page . + The document to be inserted. + The index of the first page to be inserted. + The number of pages to be inserted. + + + + Inserts all pages of the specified document into this document. + + The index in this document where to insert the page . + The document to be inserted. + + + + Inserts all pages of the specified document into this document. + + The index in this document where to insert the page . + The document to be inserted. + The index of the first page to be inserted. + + + + Removes the specified page from the document. + + + + + Removes the specified page from the document. + + + + + Moves a page within the page sequence. + + The page index before this operation. + The page index after this operation. + + + + Imports an external page. The elements of the imported page are cloned and added to this document. + Important: In contrast to PdfFormXObject adding an external page always make a deep copy + of their transitive closure. Any reuse of already imported objects is not intended because + any modification of an imported page must not change another page. + + + + + Helper function for ImportExternalPage. + + + + + Gets a PdfArray containing all pages of this document. The array must not be modified. + + + + + Replaces the page tree by a flat array of indirect references to the pages objects. + + + + + Recursively converts the page tree into a flat array. + + + + + Prepares the document for saving. + + + + + Gets the enumerator. + + + + + Predefined keys of this dictionary. + + + + + (Required) The type of PDF object that this dictionary describes; + must be Pages for a page tree node. + + + + + (Required except in root node; must be an indirect reference) + The page tree node that is the immediate parent of this one. + + + + + (Required) An array of indirect references to the immediate children of this node. + The children may be page objects or other page tree nodes. + + + + + (Required) The number of leaf nodes (page objects) that are descendants of this node + within the page tree. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents a direct real value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The value. + + + + Gets the value as double. + + + + + Returns the real number as string. + + + + + Writes the real value with up to three digits. + + + + + Represents an indirect real value. This type is not used by PDFsharp. If it is imported from + an external PDF file, the value is converted into a direct object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The value. + + + + Initializes a new instance of the class. + + The document. + The value. + + + + Gets or sets the value. + + + + + Returns the real as a culture invariant string. + + + + + Writes the real literal. + + + + + Represents a PDF rectangle value, that is internally an array with 4 real values. + + + + + Initializes a new instance of the PdfRectangle class. + + + + + Initializes a new instance of the PdfRectangle class with two points specifying + two diagonally opposite corners. Notice that in contrast to GDI+ convention the + 3rd and the 4th parameter specify a point and not a width. This is so much confusing + that this function is for internal use only. + + + + + Initializes a new instance of the PdfRectangle class with two points specifying + two diagonally opposite corners. + + + + + Initializes a new instance of the PdfRectangle class with the specified location and size. + + + + + Initializes a new instance of the PdfRectangle class with the specified XRect. + + + + + Initializes a new instance of the PdfRectangle class with the specified PdfArray. + + + + + Clones this instance. + + + + + Implements cloning this instance. + + + + + Tests whether all coordinate are zero. + + + + + Tests whether the specified object is a PdfRectangle and has equal coordinates. + + + + + Serves as a hash function for a particular type. + + + + + Tests whether two structures have equal coordinates. + + + + + Tests whether two structures differ in one or more coordinates. + + + + + Gets or sets the x-coordinate of the first corner of this PdfRectangle. + + + + + Gets or sets the y-coordinate of the first corner of this PdfRectangle. + + + + + Gets or sets the x-coordinate of the second corner of this PdfRectangle. + + + + + Gets or sets the y-coordinate of the second corner of this PdfRectangle. + + + + + Gets X2 - X1. + + + + + Gets Y2 - Y1. + + + + + Gets or sets the coordinates of the first point of this PdfRectangle. + + + + + Gets or sets the size of this PdfRectangle. + + + + + Determines if the specified point is contained within this PdfRectangle. + + + + + Determines if the specified point is contained within this PdfRectangle. + + + + + Determines if the rectangular region represented by rect is entirely contained within this PdfRectangle. + + + + + Determines if the rectangular region represented by rect is entirely contained within this PdfRectangle. + + + + + Returns the rectangle as an XRect object. + + + + + Returns the rectangle as a string in the form «[x1 y1 x2 y2]». + + + + + Writes the rectangle. + + + + + Gets the DebuggerDisplayAttribute text. + + + + + Represents an empty PdfRectangle. + + + + + Represents the cross-reference table of a PDF document. + It contains all indirect objects of a document. + + + + + Represents the relation between PdfObjectID and PdfReference for a PdfDocument. + + + + + Adds a cross reference entry to the table. Used when parsing the trailer. + + + + + Adds a PdfObject to the table. + + + + + Gets a cross reference entry from an object identifier. + Returns null if no object with the specified ID exists in the object table. + + + + + Indicates whether the specified object identifier is in the table. + + + + + Returns the next free object number. + + + + + Writes the xref section in pdf stream. + + + + + Gets an array of all object identifier. For debugging purposes only. + + + + + Gets an array of all cross references in ascending order by their object identifier. + + + + + Removes all objects that cannot be reached from the trailer. + Returns the number of removed objects. + + + + + Renumbers the objects starting at 1. + + + + + Checks the logical consistence for debugging purposes (useful after reconstruction work). + + + + + Calculates the transitive closure of the specified PdfObject, i.e. all indirect objects + recursively reachable from the specified object. + + + + + Calculates the transitive closure of the specified PdfObject with the specified depth, i.e. all indirect objects + recursively reachable from the specified object in up to maximally depth steps. + + + + + Gets the cross reference to an objects used for undefined indirect references. + + + + + Determines the encoding of a PdfString or PdfStringObject. + + + + + The characters of the string are actually bytes with an unknown or context specific meaning or encoding. + With this encoding the 8 high bits of each character is zero. + + + + + Not yet used by PDFsharp. + + + + + The characters of the string are actually bytes with PDF document encoding. + With this encoding the 8 high bits of each character is zero. + + + + + The characters of the string are actually bytes with Windows ANSI encoding. + With this encoding the 8 high bits of each character is zero. + + + + + Not yet used by PDFsharp. + + + + + Not yet used by PDFsharp. + + + + + The characters of the string are Unicode characters. + + + + + Internal wrapper for PdfStringEncoding. + + + + + Represents a direct text string value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The value. + + + + Initializes a new instance of the class. + + The value. + The encoding. + + + + Gets the number of characters in this string. + + + + + Gets the encoding. + + + + + Gets a value indicating whether the string is a hexadecimal literal. + + + + + Gets the string value. + + + + + Gets or sets the string value for encryption purposes. + + + + + Returns the string. + + + + + Hack for document encoded bookmarks. + + + + + Writes the string DocEncoded. + + + + + Represents an indirect text string value. This type is not used by PDFsharp. If it is imported from + an external PDF file, the value is converted into a direct object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The document. + The value. + + + + Initializes a new instance of the class. + + The value. + The encoding. + + + + Gets the number of characters in this string. + + + + + Gets or sets the encoding. + + + + + Gets a value indicating whether the string is a hexadecimal literal. + + + + + Gets or sets the value as string + + + + + Gets or sets the string value for encryption purposes. + + + + + Returns the string. + + + + + Writes the string literal with encoding DOCEncoded. + + + + + Represents a direct unsigned integer value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the value as integer. + + + + + Returns the unsigned integer as string. + + + + + Writes the integer as string. + + + + + Converts the value of this instance to an equivalent 64-bit unsigned integer. + + + + + Converts the value of this instance to an equivalent 8-bit signed integer. + + + + + Converts the value of this instance to an equivalent double-precision floating-point number. + + + + + Returns an undefined DateTime structure. + + + + + Converts the value of this instance to an equivalent single-precision floating-point number. + + + + + Converts the value of this instance to an equivalent Boolean value. + + + + + Converts the value of this instance to an equivalent 32-bit signed integer. + + + + + Converts the value of this instance to an equivalent 16-bit unsigned integer. + + + + + Converts the value of this instance to an equivalent 16-bit signed integer. + + + + + Converts the value of this instance to an equivalent . + + + + + Converts the value of this instance to an equivalent 8-bit unsigned integer. + + + + + Converts the value of this instance to an equivalent Unicode character. + + + + + Converts the value of this instance to an equivalent 64-bit signed integer. + + + + + Returns type code for 32-bit integers. + + + + + Converts the value of this instance to an equivalent number. + + + + + Returns null. + + + + + Converts the value of this instance to an equivalent 32-bit unsigned integer. + + + + + Represents an indirect integer value. This type is not used by PDFsharp. If it is imported from + an external PDF file, the value is converted into a direct object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The value. + + + + Initializes a new instance of the class. + + The document. + The value. + + + + Gets the value as unsigned integer. + + + + + Returns the integer as string. + + + + + Writes the integer literal. + + + + + Represents the PDF document viewer preferences dictionary. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to hide the viewer application’s tool + bars when the document is active. + + + + + Gets or sets a value indicating whether to hide the viewer application’s + menu bar when the document is active. + + + + + Gets or sets a value indicating whether to hide user interface elements in + the document’s window (such as scroll bars and navigation controls), + leaving only the document’s contents displayed. + + + + + Gets or sets a value indicating whether to resize the document’s window to + fit the size of the first displayed page. + + + + + Gets or sets a value indicating whether to position the document’s window + in the center of the screen. + + + + + Gets or sets a value indicating whether the window’s title bar + should display the document title taken from the Title entry of the document + information dictionary. If false, the title bar should instead display the name + of the PDF file containing the document. + + + + + The predominant reading order for text: LeftToRight or RightToLeft + (including vertical writing systems, such as Chinese, Japanese, and Korean). + This entry has no direct effect on the document’s contents or page numbering + but can be used to determine the relative positioning of pages when displayed + side by side or printed n-up. Default value: LeftToRight. + + + + + Predefined keys of this dictionary. + + + + + (Optional) A flag specifying whether to hide the viewer application’s tool + bars when the document is active. Default value: false. + + + + + (Optional) A flag specifying whether to hide the viewer application’s + menu bar when the document is active. Default value: false. + + + + + (Optional) A flag specifying whether to hide user interface elements in + the document’s window (such as scroll bars and navigation controls), + leaving only the document’s contents displayed. Default value: false. + + + + + (Optional) A flag specifying whether to resize the document’s window to + fit the size of the first displayed page. Default value: false. + + + + + (Optional) A flag specifying whether to position the document’s window + in the center of the screen. Default value: false. + + + + + (Optional; PDF 1.4) A flag specifying whether the window’s title bar + should display the document title taken from the Title entry of the document + information dictionary. If false, the title bar should instead display the name + of the PDF file containing the document. Default value: false. + + + + + (Optional) The document’s page mode, specifying how to display the document on + exiting full-screen mode: + UseNone Neither document outline nor thumbnail images visible + UseOutlines Document outline visible + UseThumbs Thumbnail images visible + UseOC Optional content group panel visible + This entry is meaningful only if the value of the PageMode entry in the catalog + dictionary is FullScreen; it is ignored otherwise. Default value: UseNone. + + + + + (Optional; PDF 1.3) The predominant reading order for text: + L2R Left to right + R2L Right to left (including vertical writing systems, such as Chinese, Japanese, and Korean) + This entry has no direct effect on the document’s contents or page numbering + but can be used to determine the relative positioning of pages when displayed + side by side or printed n-up. Default value: L2R. + + + + + (Optional; PDF 1.4) The name of the page boundary representing the area of a page + to be displayed when viewing the document on the screen. The value is the key + designating the relevant page boundary in the page object. If the specified page + boundary is not defined in the page object, its default value is used. + Default value: CropBox. + Note: This entry is intended primarily for use by prepress applications that + interpret or manipulate the page boundaries as described in Section 10.10.1, “Page Boundaries.” + Most PDF consumer applications disregard it. + + + + + (Optional; PDF 1.4) The name of the page boundary to which the contents of a page + are to be clipped when viewing the document on the screen. The value is the key + designating the relevant page boundary in the page object. If the specified page + boundary is not defined in the page object, its default value is used. + Default value: CropBox. + Note: This entry is intended primarily for use by prepress applications that + interpret or manipulate the page boundaries as described in Section 10.10.1, “Page Boundaries.” + Most PDF consumer applications disregard it. + + + + + (Optional; PDF 1.4) The name of the page boundary representing the area of a page + to be rendered when printing the document. The value is the key designating the + relevant page boundary in the page object. If the specified page boundary is not + defined in the page object, its default value is used. + Default value: CropBox. + Note: This entry is intended primarily for use by prepress applications that + interpret or manipulate the page boundaries as described in Section 10.10.1, “Page Boundaries.” + Most PDF consumer applications disregard it. + + + + + (Optional; PDF 1.4) The name of the page boundary to which the contents of a page + are to be clipped when printing the document. The value is the key designating the + relevant page boundary in the page object. If the specified page boundary is not + defined in the page object, its default value is used. + Default value: CropBox. + Note: This entry is intended primarily for use by prepress applications that interpret + or manipulate the page boundaries. Most PDF consumer applications disregard it. + + + + + (Optional; PDF 1.6) The page scaling option to be selected when a print dialog is + displayed for this document. Valid values are None, which indicates that the print + dialog should reflect no page scaling, and AppDefault, which indicates that + applications should use the current print scaling. If this entry has an unrecognized + value, applications should use the current print scaling. + Default value: AppDefault. + Note: If the print dialog is suppressed and its parameters are provided directly + by the application, the value of this entry should still be used. + + + + + Gets the KeysMeta for these keys. + + + + + Gets the KeysMeta of this dictionary type. + + + + + Represents trim margins added to the page. + + + + + Sets all four crop margins simultaneously. + + + + + Gets or sets the left crop margin. + + + + + Gets or sets the right crop margin. + + + + + Gets or sets the top crop margin. + + + + + Gets or sets the bottom crop margin. + + + + + Gets a value indicating whether this instance has at least one margin with a value other than zero. + + + + + Base namespace of PDFsharp. Most classes are implemented in nested namespaces like e. g. PdfSharp.Pdf. + + + + + + Specifies the orientation of a page. + + + + + The default page orientation. + + + + + The width and height of the page are reversed. + + + + + Identifies the most popular predefined page sizes. + + + + + The width or height of the page are set manually and override the PageSize property. + + + + + Identifies a paper sheet size of 841 mm times 1189 mm or 33.11 inch times 46.81 inch. + + + + + Identifies a paper sheet size of 594 mm times 841 mm or 23.39 inch times 33.1 inch. + + + + + Identifies a paper sheet size of 420 mm times 594 mm or 16.54 inch times 23.29 inch. + + + + + Identifies a paper sheet size of 297 mm times 420 mm or 11.69 inch times 16.54 inch. + + + + + Identifies a paper sheet size of 210 mm times 297 mm or 8.27 inch times 11.69 inch. + + + + + Identifies a paper sheet size of 148 mm times 210 mm or 5.83 inch times 8.27 inch. + + + + + Identifies a paper sheet size of 860 mm times 1220 mm. + + + + + Identifies a paper sheet size of 610 mm times 860 mm. + + + + + Identifies a paper sheet size of 430 mm times 610 mm. + + + + + Identifies a paper sheet size of 305 mm times 430 mm. + + + + + Identifies a paper sheet size of 215 mm times 305 mm. + + + + + Identifies a paper sheet size of 153 mm times 215 mm. + + + + + Identifies a paper sheet size of 1000 mm times 1414 mm or 39.37 inch times 55.67 inch. + + + + + Identifies a paper sheet size of 707 mm times 1000 mm or 27.83 inch times 39.37 inch. + + + + + Identifies a paper sheet size of 500 mm times 707 mm or 19.68 inch times 27.83 inch. + + + + + Identifies a paper sheet size of 353 mm times 500 mm or 13.90 inch times 19.68 inch. + + + + + Identifies a paper sheet size of 250 mm times 353 mm or 9.84 inch times 13.90 inch. + + + + + Identifies a paper sheet size of 176 mm times 250 mm or 6.93 inch times 9.84 inch. + + + + + Identifies a paper sheet size of 10 inch times 8 inch or 254 mm times 203 mm. + + + + + Identifies a paper sheet size of 13 inch times 8 inch or 330 mm times 203 mm. + + + + + Identifies a paper sheet size of 10.5 inch times 7.25 inch or 267 mm times 184 mm. + + + + + Identifies a paper sheet size of 10.5 inch times 8 inch 267 mm times 203 mm. + + + + + Identifies a paper sheet size of 11 inch times 8.5 inch 279 mm times 216 mm. + + + + + Identifies a paper sheet size of 14 inch times 8.5 inch 356 mm times 216 mm. + + + + + Identifies a paper sheet size of 17 inch times 11 inch or 432 mm times 279 mm. + + + + + Identifies a paper sheet size of 17 inch times 11 inch or 432 mm times 279 mm. + + + + + Identifies a paper sheet size of 19.25 inch times 15.5 inch 489 mm times 394 mm. + + + + + 20 ×Identifies a paper sheet size of 20 inch times 15 inch or 508 mm times 381 mm. + + + + + Identifies a paper sheet size of 21 inch times 16.5 inch 533 mm times 419 mm. + + + + + Identifies a paper sheet size of 22.5 inch times 17.5 inch 572 mm times 445 mm. + + + + + Identifies a paper sheet size of 23 inch times 18 inch or 584 mm times 457 mm. + + + + + Identifies a paper sheet size of 25 inch times 20 inch or 635 mm times 508 mm. + + + + + Identifies a paper sheet size of 28 inch times 23 inch or 711 mm times 584 mm. + + + + + Identifies a paper sheet size of 35 inch times 23.5 inch or 889 mm times 597 mm. + + + + + Identifies a paper sheet size of 45 inch times 35 inch 1143 times 889 mm. + + + + + Identifies a paper sheet size of 8.5 inch times 5.5 inch or 216 mm times 396 mm. + + + + + Identifies a paper sheet size of 8.5 inch times 13 inch or 216 mm times 330 mm. + + + + + Identifies a paper sheet size of 5.5 inch times 8.5 inch or 396 mm times 216 mm. + + + + + Identifies a paper sheet size of 10 inch times 14 inch. + + + + + Represents IDs for error and diagnostic messages generated by PDFsharp. + + + + + PSMsgID. + + + + + PSMsgID. + + + + + PSMsgID. + + + + + PSMsgID. + + + + + PSMsgID. + + + + + PSMsgID. + + + + + Converter from to . + + + + + Converts the specified page size enumeration to a pair of values in point. + + + + + Base class of all exceptions in the PDFsharp frame work. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The exception message. + + + + Initializes a new instance of the class. + + The exception message. + The inner exception. + + + + Version info base for all PDFsharp related assemblies. + + + + + The title of the product. + + + + + A characteristic description of the product. + + + + + The PDF producer information string. + TODO: Called Creator in MigraDoc??? + + + + + The PDF producer information string including VersionPatch. + + + + + The full version number. + + + + + The full version string. + + + + + The home page of this product. + + + + + Unused. + + + + + The company that created/owned the product. + + + + + The name the product. + + + + + The copyright information. + + + + + The trademark the product. + + + + + Unused. + + + + + The major version number of the product. + + + + + The minor version number of the product. + + + + + The build number of the product. + + + + + The patch number of the product. + + + + + The Version Prerelease String for NuGet. + + + + + E.g. "2005-01-01", for use in NuGet Script. + + + + + Use _ instead of blanks and special characters. Can be complemented with a suffix in the NuGet Script. + Nuspec Doc: The unique identifier for the package. This is the package name that is shown when packages + are listed using the Package Manager Console. These are also used when installing a package using the + Install-Package command within the Package Manager Console. Package IDs may not contain any spaces + or characters that are invalid in an URL. In general, they follow the same rules as .NET namespaces do. + So Foo.Bar is a valid ID, Foo! and Foo Bar are not. + + + + + Nuspec Doc: The human-friendly title of the package displayed in the Manage NuGet Packages dialog. + If none is specified, the ID is used instead. + + + + + Nuspec Doc: A comma-separated list of authors of the package code. + + + + + Nuspec Doc: A comma-separated list of the package creators. This is often the same list as in authors. + This is ignored when uploading the package to the NuGet.org Gallery. + + + + + Nuspec Doc: A long description of the package. This shows up in the right pane of the Add Package Dialog + as well as in the Package Manager Console when listing packages using the Get-Package command. + + + + + Nuspec Doc: A description of the changes made in each release of the package. This field only shows up + when the _Updates_ tab is selected and the package is an update to a previously installed package. + It is displayed where the Description would normally be displayed. + + + + + Nuspec Doc: A short description of the package. If specified, this shows up in the middle pane of the + Add Package Dialog. If not specified, a truncated version of the description is used instead. + + + + + Nuspec Doc: The locale ID for the package, such as en-us. + + + + + Nuspec Doc: A URL for the home page of the package. + + + http://www.pdfsharp.net/NuGetPackage_PDFsharp-GDI.ashx + http://www.pdfsharp.net/NuGetPackage_PDFsharp-WPF.ashx + + + + + Nuspec Doc: A URL for the image to use as the icon for the package in the Manage NuGet Packages + dialog box. This should be a 32x32-pixel .png file that has a transparent background. + + + + + Nuspec Doc: A link to the license that the package is under. + + + + + Nuspec Doc: A Boolean value that specifies whether the client needs to ensure that the package license (described by licenseUrl) is accepted before the package is installed. + + + + + Nuspec Doc: A space-delimited list of tags and keywords that describe the package. This information is used to help make sure users can find the package using + searches in the Add Package Reference dialog box or filtering in the Package Manager Console window. + + + + + The technology tag of the product: + (none) Pure .NET + -gdi : GDI+, + -wpf : WPF, + -hybrid : Both GDI+ and WPF (hybrid). + -sl : Silverlight + -wp : Windows Phone + -wrt : Windows RunTime + + + + + The Pdf-Sharp-String-Resources. + + + + + Loads the message from the resource associated with the enum type and formats it + using 'String.Format'. Because this function is intended to be used during error + handling it never raises an exception. + + The type of the parameter identifies the resource + and the name of the enum identifies the message in the resource. + Parameters passed through 'String.Format'. + The formatted message. + + + + Gets the localized message identified by the specified DomMsgID. + + + + + Gets the resource manager for this module. + + + + + Writes all messages defined by PSMsgID. + + + + + Version info of this assembly. + + + + + Computes Adler32 checksum for a stream of data. An Adler32 + checksum is not as reliable as a CRC32 checksum, but a lot faster to + compute. + + The specification for Adler32 may be found in RFC 1950. + ZLIB Compressed Data Format Specification version 3.3) + + + From that document: + + "ADLER32 (Adler-32 checksum) + This contains a checksum value of the uncompressed data + (excluding any dictionary data) computed according to Adler-32 + algorithm. This algorithm is a 32-bit extension and improvement + of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 + standard. + + Adler-32 is composed of two sums accumulated per byte: s1 is + the sum of all bytes, s2 is the sum of all s1 values. Both sums + are done modulo 65521. s1 is initialized to 1, s2 to zero. The + Adler-32 checksum is stored as s2*65536 + s1 in most- + significant-byte first (network) order." + + "8.2. The Adler-32 algorithm + + The Adler-32 algorithm is much faster than the CRC32 algorithm yet + still provides an extremely low probability of undetected errors. + + The modulo on unsigned long accumulators can be delayed for 5552 + bytes, so the modulo operation time is negligible. If the bytes + are a, b, c, the second sum is 3a + 2b + c + 3, and so is position + and order sensitive, unlike the first sum, which is just a + checksum. That 65521 is prime is important to avoid a possible + large class of two-byte errors that leave the check unchanged. + (The Fletcher checksum uses 255, which is not prime and which also + makes the Fletcher check insensitive to single byte changes 0 - + 255.) + + The sum s1 is initialized to 1 instead of zero to make the length + of the sequence part of s2, so that the length does not have to be + checked separately. (Any sequence of zeroes has a Fletcher + checksum of zero.)" + + + + + + + largest prime smaller than 65536 + + + + + Returns the Adler32 data checksum computed so far. + + + + + Creates a new instance of the Adler32 class. + The checksum starts off with a value of 1. + + + + + Resets the Adler32 checksum to the initial value. + + + + + Updates the checksum with a byte value. + + + The data value to add. The high byte of the int is ignored. + + + + + Updates the checksum with an array of bytes. + + + The source of the data to update with. + + + + + Updates the checksum with the bytes taken from the array. + + + an array of bytes + + + the start of the data used for this update + + + the number of bytes to use for this update + + + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + The table is simply the CRC of all possible eight bit values. This is all + the information needed to generate CRC's on data a byte at a time for all + combinations of CRC register values and incoming bytes. + + + + + The crc data checksum so far. + + + + + Returns the CRC32 data checksum computed so far. + + + + + Resets the CRC32 data checksum as if no update was ever called. + + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of value + + + + + Updates the checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The buffer which contains the data + + + The offset in the buffer where the data starts + + + The number of data bytes to update the CRC with. + + + + + Interface to compute a data checksum used by checked input/output streams. + A data checksum can be updated by one byte or with a byte array. After each + update the value of the current checksum can be returned by calling + getValue. The complete checksum object can also be reset + so it can be used again with new data. + + + + + Returns the data checksum computed so far. + + + + + Resets the data checksum as if no update was ever called. + + + + + Adds one byte to the data checksum. + + + the data value to add. The high byte of the int is ignored. + + + + + Updates the data checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The buffer which contains the data + + + The offset in the buffer where the data starts + + + the number of data bytes to add. + + + + + SharpZipBaseException is the base exception class for the SharpZipLibrary. + All library exceptions are derived from this. + + NOTE: Not all exceptions thrown will be derived from this class. + A variety of other exceptions are possible for example + + + + Initializes a new instance of the SharpZipBaseException class. + + + + + Initializes a new instance of the SharpZipBaseException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the SharpZipBaseException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + This is the Deflater class. The deflater class compresses input + with the deflate algorithm described in RFC 1951. It has several + compression levels and three different strategies described below. + + This class is not thread safe. This is inherent in the API, due + to the split of deflate and setInput. + + Author of the original java version: Jochen Hoenicke + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Creates a new deflater with default compression level. + + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION, or DEFAULT_COMPRESSION. + + if lvl is out of range. + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION. + + + true, if we should suppress the Zlib/RFC1950 header at the + beginning and the adler checksum at the end of the output. This is + useful for the GZIP/PKZIP formats. + + if lvl is out of range. + + + + Resets the deflater. The deflater acts afterwards as if it was + just created with the same compression level and strategy as it + had before. + + + + + Gets the current adler checksum of the data that was processed so far. + + + + + Gets the number of input bytes processed so far. + + + + + Gets the number of output bytes so far. + + + + + Flushes the current input block. Further calls to deflate() will + produce enough output to inflate everything in the current input + block. This is not part of Sun's JDK so I have made it package + private. It is used by DeflaterOutputStream to implement + flush(). + + + + + Finishes the deflater with the current input block. It is an error + to give more input after this method was called. This method must + be called to force all bytes to be flushed. + + + + + Returns true if the stream was finished and no more output bytes + are available. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method can also return true when the stream + was finished. + + + + + Sets the data which should be compressed next. This should be only + called when needsInput indicates that more input is needed. + If you call setInput when needsInput() returns false, the + previous input that is still pending will be thrown away. + The given byte array should not be changed, before needsInput() returns + true again. + This call is equivalent to setInput(input, 0, input.length). + + + the buffer containing the input data. + + + if the buffer was finished() or ended(). + + + + + Sets the data which should be compressed next. This should be + only called when needsInput indicates that more input is needed. + The given byte array should not be changed, before needsInput() returns + true again. + + + the buffer containing the input data. + + + the start of the data. + + + the number of data bytes of input. + + + if the buffer was Finish()ed or if previous input is still pending. + + + + + Sets the compression level. There is no guarantee of the exact + position of the change, but if you call this when needsInput is + true the change of compression level will occur somewhere near + before the end of the so far given input. + + + the new compression level. + + + + + Get current compression level + + Returns the current compression level + + + + Sets the compression strategy. Strategy is one of + DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact + position where the strategy is changed, the same as for + SetLevel() applies. + + + The new compression strategy. + + + + + Deflates the current input block with to the given array. + + + The buffer where compressed data is stored + + + The number of compressed bytes added to the output, or 0 if either + IsNeedingInput() or IsFinished returns true or length is zero. + + + + + Deflates the current input block to the given array. + + + Buffer to store the compressed data. + + + Offset into the output array. + + + The maximum number of bytes that may be stored. + + + The number of compressed bytes added to the output, or 0 if either + needsInput() or finished() returns true or length is zero. + + + If Finish() was previously called. + + + If offset or length don't match the array length. + + + + + Sets the dictionary which should be used in the deflate process. + This call is equivalent to setDictionary(dict, 0, dict.Length). + + + the dictionary. + + + if SetInput () or Deflate () were already called or another dictionary was already set. + + + + + Sets the dictionary which should be used in the deflate process. + The dictionary is a byte array containing strings that are + likely to occur in the data which should be compressed. The + dictionary is not stored in the compressed output, only a + checksum. To decompress the output you need to supply the same + dictionary again. + + + The dictionary data + + + The index where dictionary information commences. + + + The number of bytes in the dictionary. + + + If SetInput () or Deflate() were already called or another dictionary was already set. + + + + + Compression level. + + + + + If true no Zlib/RFC1950 headers or footers are generated + + + + + The current state. + + + + + The total bytes of output written. + + + + + The pending output. + + + + + The deflater engine. + + + + + This class contains constants used for deflation. + + + + + Set to true to enable debugging + + + + + Written to Zip file to identify a stored block + + + + + Identifies static tree in Zip file + + + + + Identifies dynamic tree in Zip file + + + + + Header flag indicating a preset dictionary for deflation + + + + + Sets internal buffer sizes for Huffman encoding + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Strategies for deflater + + + + + The default strategy + + + + + This strategy will only allow longer string repetitions. It is + useful for random data with a small character set. + + + + + This strategy will not look for string repetitions at all. It + only encodes with Huffman trees (which means, that more common + characters get a smaller encoding. + + + + + Low level compression engine for deflate algorithm which uses a 32K sliding window + with secondary compression from Huffman/Shannon-Fano codes. + + + + + Construct instance with pending buffer + + + Pending buffer to use + > + + + + Deflate drives actual compression of data + + True to flush input buffers + Finish deflation with the current input. + Returns true if progress has been made. + + + + Sets input data to be deflated. Should only be called when NeedsInput() + returns true + + The buffer containing input data. + The offset of the first byte of data. + The number of bytes of data to use as input. + + + + Determines if more input is needed. + + Return true if input is needed via SetInput + + + + Set compression dictionary + + The buffer containing the dictionary data + The offset in the buffer for the first byte of data + The length of the dictionary data. + + + + Reset internal state + + + + + Reset Adler checksum + + + + + Get current value of Adler checksum + + + + + Total data processed + + + + + Get/set the deflate strategy + + + + + Set the deflate level (0-9) + + The value to set the level to. + + + + Fill the window + + + + + Inserts the current string in the head hash and returns the previous + value for this hash. + + The previous hash value + + + + Find the best (longest) string in the window matching the + string starting at strstart. + + Preconditions: + + strstart + MAX_MATCH <= window.length. + + + True if a match greater than the minimum length is found + + + + Hashtable, hashing three characters to an index for window, so + that window[index]..window[index+2] have this hash code. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + prev[index & WMASK] points to the previous index that has the + same hash code as the string starting at index. This way + entries with the same hash code are in a linked list. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + Points to the current character in the window. + + + + + lookahead is the number of characters starting at strstart in + window that are valid. + So window[strstart] until window[strstart+lookahead-1] are valid + characters. + + + + + This array contains the part of the uncompressed stream that + is of relevance. The current character is indexed by strstart. + + + + + The current compression function. + + + + + The input data for compression. + + + + + The total bytes of input read. + + + + + The offset into inputBuf, where input data starts. + + + + + The end offset of the input data. + + + + + The adler checksum + + + + + This is the DeflaterHuffman class. + + This class is not thread safe. This is inherent in the API, due + to the split of Deflate and SetInput. + + author of the original java version : Jochen Hoenicke + + + + + Resets the internal state of the tree + + + + + Check that all frequencies are zero + + + At least one frequency is non-zero + + + + + Set static codes and length + + new codes + length for new codes + + + + Build dynamic codes and lengths + + + + + Get encoded length + + Encoded length, the sum of frequencies * lengths + + + + Scan a literal or distance tree to determine the frequencies of the codes + in the bit length tree. + + + + + Write tree values + + Tree to write + + + + Pending buffer to use + + + + + Construct instance with pending buffer + + Pending buffer to use + + + + Reset internal state + + + + + Write all trees to pending buffer + + The number/rank of treecodes to send. + + + + Compress current buffer writing data to pending buffer + + + + + Flush block to output with no compression + + Data to write + Index of first byte to write + Count of bytes to write + True if this is the last block + + + + Flush block to output with compression + + Data to flush + Index of first byte to flush + Count of bytes to flush + True if this is the last block + + + + Get value indicating if internal buffer is full + + true if buffer is full + + + + Add literal to buffer + + Literal value to add to buffer. + Value indicating internal buffer is full + + + + Add distance code and length to literal and distance trees + + Distance code + Length + Value indicating if internal buffer is full + + + + Reverse the bits of a 16 bit value. + + Value to reverse bits + Value with bits reversed + + + + This class stores the pending output of the Deflater. + + Author of the original java version: Jochen Hoenicke + + + + + Construct instance with default buffer size + + + + + Inflater is used to decompress data that has been compressed according + to the "deflate" standard described in rfc1951. + + By default Zlib (rfc1950) headers and footers are expected in the input. + You can use constructor public Inflater(bool noHeader) passing true + if there is no Zlib header information + + The usage is as following. First you have to set some input with + SetInput(), then Inflate() it. If inflate doesn't + inflate any bytes there may be three reasons: +
    +
  • IsNeedingInput() returns true because the input buffer is empty. + You have to provide more input with SetInput(). + NOTE: IsNeedingInput() also returns true when, the stream is finished. +
  • +
  • IsNeedingDictionary() returns true, you have to provide a preset + dictionary with SetDictionary().
  • +
  • IsFinished returns true, the inflater has finished.
  • +
+ Once the first output byte is produced, a dictionary will not be + needed at a later stage. + + Author of the original java version: John Leuner, Jochen Hoenicke +
+
+ + + Copy lengths for literal codes 257..285 + + + + + Extra bits for literal codes 257..285 + + + + + Copy offsets for distance codes 0..29 + + + + + Extra bits for distance codes + + + + + These are the possible states for an inflater + + + + + This variable contains the current state. + + + + + The adler checksum of the dictionary or of the decompressed + stream, as it is written in the header resp. footer of the + compressed stream. + Only valid if mode is DECODE_DICT or DECODE_CHKSUM. + + + + + The number of bits needed to complete the current state. This + is valid, if mode is DECODE_DICT, DECODE_CHKSUM, + DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS. + + + + + True, if the last block flag was set in the last block of the + inflated stream. This means that the stream ends after the + current block. + + + + + The total number of inflated bytes. + + + + + The total number of bytes set with setInput(). This is not the + value returned by the TotalIn property, since this also includes the + unprocessed input. + + + + + This variable stores the noHeader flag that was given to the constructor. + True means, that the inflated stream doesn't contain a Zlib header or + footer. + + + + + Creates a new inflater or RFC1951 decompressor + RFC1950/Zlib headers and footers will be expected in the input data + + + + + Creates a new inflater. + + + True if no RFC1950/Zlib header and footer fields are expected in the input data + + This is used for GZIPed/Zipped input. + + For compatibility with + Sun JDK you should provide one byte of input more than needed in + this case. + + + + + Resets the inflater so that a new stream can be decompressed. All + pending input and output will be discarded. + + + + + Decodes a zlib/RFC1950 header. + + + False if more input is needed. + + + The header is invalid. + + + + + Decodes the dictionary checksum after the deflate header. + + + False if more input is needed. + + + + + Decodes the huffman encoded symbols in the input stream. + + + false if more input is needed, true if output window is + full or the current block ends. + + + if deflated stream is invalid. + + + + + Decodes the adler checksum after the deflate stream. + + + false if more input is needed. + + + If checksum doesn't match. + + + + + Decodes the deflated stream. + + + false if more input is needed, or if finished. + + + if deflated stream is invalid. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + The index into buffer where the dictionary starts. + + + The number of bytes in the dictionary. + + + No dictionary is needed. + + + The adler checksum for the buffer is invalid + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + the input. + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + The source of input data + + + The index into buffer where the input starts. + + + The number of bytes of input to use. + + + No input is needed. + + + The index and/or count are wrong. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether IsNeedingDictionary(), + IsNeedingInput() or IsFinished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + The number of bytes written to the buffer, 0 if no further + output can be produced. + + + if buffer has length 0. + + + if deflated stream is invalid. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether needsDictionary(), + needsInput() or finished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + the offset in buffer where storing starts. + + + the maximum number of bytes to output. + + + the number of bytes written to the buffer, 0 if no further output can be produced. + + + if count is less than 0. + + + if the index and / or count are wrong. + + + if deflated stream is invalid. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method also returns true when the stream is finished. + + + + + Returns true, if a preset dictionary is needed to inflate the input. + + + + + Returns true, if the inflater has finished. This means, that no + input is needed and no output can be produced. + + + + + Gets the adler checksum. This is either the checksum of all + uncompressed bytes returned by inflate(), or if needsDictionary() + returns true (and thus no output was yet produced) this is the + adler checksum of the expected dictionary. + + + the adler checksum. + + + + + Gets the total number of output bytes returned by Inflate(). + + + the total number of output bytes. + + + + + Gets the total number of processed compressed input bytes. + + + The total number of bytes of processed input bytes. + + + + + Gets the number of unprocessed input bytes. Useful, if the end of the + stream is reached and you want to further process the bytes after + the deflate stream. + + + The number of bytes of the input which have not been processed. + + + + + Huffman tree used for inflation + + + + + Literal length tree + + + + + Distance tree + + + + + Constructs a Huffman tree from the array of code lengths. + + + the array of code lengths + + + + + Reads the next symbol from input. The symbol is encoded using the + huffman tree. + + + input the input source. + + + the next symbol, or -1 if not enough input is available. + + + + + This class is general purpose class for writing data to a buffer. + + It allows you to write bits as well as bytes + Based on DeflaterPending.java + + Author of the original java version: Jochen Hoenicke + + + + + Internal work buffer + + + + + construct instance using default buffer size of 4096 + + + + + construct instance using specified buffer size + + + size to use for internal buffer + + + + + Clear internal state/buffers + + + + + Write a byte to buffer + + + The value to write + + + + + Write a short value to buffer LSB first + + + The value to write. + + + + + write an integer LSB first + + The value to write. + + + + Write a block of data to buffer + + data to write + offset of first byte to write + number of bytes to write + + + + The number of bits written to the buffer + + + + + Align internal buffer on a byte boundary + + + + + Write bits to internal buffer + + source of bits + number of bits to write + + + + Write a short value to internal buffer most significant byte first + + value to write + + + + Indicates if buffer has been flushed + + + + + Flushes the pending buffer into the given output array. If the + output array is to small, only a partial flush is done. + + The output array. + The offset into output array. + The maximum number of bytes to store. + The number of bytes flushed. + + + + Convert internal buffer to byte array. + Buffer is empty on completion + + + The internal buffer contents converted to a byte array. + + + + + A special stream deflating or compressing the bytes that are + written to it. It uses a Deflater to perform actual deflating.
+ Authors of the original java version: Tom Tromey, Jochen Hoenicke +
+
+ + + Creates a new DeflaterOutputStream with a default Deflater and default buffer size. + + + the output stream where deflated output should be written. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + default buffer size. + + + the output stream where deflated output should be written. + + + the underlying deflater. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + buffer size. + + + The output stream where deflated output is written. + + + The underlying deflater to use + + + The buffer size in bytes to use when deflating (minimum value 512) + + + bufsize is less than or equal to zero. + + + baseOutputStream does not support writing + + + deflater instance is null + + + + + Finishes the stream by calling finish() on the deflater. + + + Not all input is deflated + + + + + Get/set flag indicating ownership of the underlying stream. + When the flag is true will close the underlying stream also. + + + + + Allows client to determine if an entry can be patched after its added + + + + + Get/set the password used for encryption. + + When set to null or if the password is empty no encryption is performed + + + + Encrypt a block of data + + + Data to encrypt. NOTE the original contents of the buffer are lost + + + Offset of first byte in buffer to encrypt + + + Number of bytes in buffer to encrypt + + + + + Initializes encryption keys based on given . + + The password. + + + + Encrypt a single byte + + + The encrypted value + + + + + Update encryption keys + + + + + Deflates everything in the input buffers. This will call + def.deflate() until all bytes from the input buffers + are processed. + + + + + Gets value indicating stream can be read from + + + + + Gets a value indicating if seeking is supported for this stream + This property always returns false + + + + + Get value indicating if this stream supports writing + + + + + Get current length of stream + + + + + Gets the current position within the stream. + + Any attempt to set position + + + + Sets the current position of this stream to the given value. Not supported by this class! + + The offset relative to the to seek. + The to seek from. + The new position in the stream. + Any access + + + + Sets the length of this stream to the given value. Not supported by this class! + + The new stream length. + Any access + + + + Read a byte from stream advancing position by one + + The byte read cast to an int. THe value is -1 if at the end of the stream. + Any access + + + + Read a block of bytes from stream + + The buffer to store read data in. + The offset to start storing at. + The maximum number of bytes to read. + The actual number of bytes read. Zero if end of stream is detected. + Any access + + + + Asynchronous reads are not supported a NotSupportedException is always thrown + + The buffer to read into. + The offset to start storing data at. + The number of bytes to read + The async callback to use. + The state to use. + Returns an + Any access + + + + Asynchronous writes arent supported, a NotSupportedException is always thrown + + The buffer to write. + The offset to begin writing at. + The number of bytes to write. + The to use. + The state object. + Returns an IAsyncResult. + Any access + + + + Flushes the stream by calling Flush on the deflater and then + on the underlying stream. This ensures that all bytes are flushed. + + + + + Calls and closes the underlying + stream when is true. + + + + + Writes a single byte to the compressed output stream. + + + The byte value. + + + + + Writes bytes from an array to the compressed stream. + + + The byte array + + + The offset into the byte array where to start. + + + The number of bytes to write. + + + + + This buffer is used temporarily to retrieve the bytes from the + deflater and write them to the underlying output stream. + + + + + The deflater which is used to deflate the stream. + + + + + Base stream the deflater depends on. + + + + + An input buffer customised for use by + + + The buffer supports decryption of incoming data. + + + + + Initialise a new instance of with a default buffer size + + The stream to buffer. + + + + Initialise a new instance of + + The stream to buffer. + The size to use for the buffer + A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB. + + + + Get the length of bytes bytes in the + + + + + Get the contents of the raw data buffer. + + This may contain encrypted data. + + + + Get the number of useable bytes in + + + + + Get the contents of the clear text buffer. + + + + + Get/set the number of bytes available + + + + + Call passing the current clear text buffer contents. + + The inflater to set input for. + + + + Fill the buffer from the underlying input stream. + + + + + Read a buffer directly from the input stream + + The buffer to fill + Returns the number of bytes read. + + + + Read a buffer directly from the input stream + + The buffer to read into + The offset to start reading data into. + The number of bytes to read. + Returns the number of bytes read. + + + + Read clear text data from the input stream. + + The buffer to add data to. + The offset to start adding data at. + The number of bytes to read. + Returns the number of bytes actually read. + + + + Read a from the input stream. + + Returns the byte read. + + + + Read an in little endian byte order. + + The short value read case to an int. + + + + Read an in little endian byte order. + + The int value read. + + + + Read a in little endian byte order. + + The long value read. + + + + This filter stream is used to decompress data compressed using the "deflate" + format. The "deflate" format is described in RFC 1951. + + This stream may form the basis for other decompression filters, such + as the GZipInputStream. + + Author of the original java version: John Leuner. + + + + + Create an InflaterInputStream with the default decompressor + and a default buffer size of 4KB. + + + The InputStream to read bytes from + + + + + Create an InflaterInputStream with the specified decompressor + and a default buffer size of 4KB. + + + The source of input data + + + The decompressor used to decompress data read from baseInputStream + + + + + Create an InflaterInputStream with the specified decompressor + and the specified buffer size. + + + The InputStream to read bytes from + + + The decompressor to use + + + Size of the buffer to use + + + + + Get/set flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + + The default value is true. + + + + + Skip specified number of bytes of uncompressed data + + + Number of bytes to skip + + + The number of bytes skipped, zero if the end of + stream has been reached + + + The number of bytes to skip is less than or equal to zero. + + + + + Clear any cryptographic state. + + + + + Returns 0 once the end of the stream (EOF) has been reached. + Otherwise returns 1. + + + + + Fills the buffer with more data to decompress. + + + Stream ends early + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + Thew buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Entry point to begin an asynchronous write. Always throws a NotSupportedException. + + The buffer to write data from + Offset of first byte to write + The maximum number of bytes to write + The method to be called when the asynchronous write operation is completed + A user-provided object that distinguishes this particular asynchronous write request from other requests + An IAsyncResult that references the asynchronous write + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + Inflater needs a dictionary + + + + + Decompressor for this stream + + + + + Input buffer for this stream. + + + + + Base stream the inflater reads from. + + + + + Flag indicating wether this instance has been closed or not. + + + + + Flag indicating wether this instance is designated the stream owner. + When closing if this flag is true the underlying stream is closed. + + + + + Contains the output from the Inflation process. + We need to have a window so that we can refer backwards into the output stream + to repeat stuff.
+ Author of the original java version: John Leuner +
+
+ + + Write a byte to this output window + + value to write + + if window is full + + + + + Append a byte pattern already in the window itself + + length of pattern to copy + distance from end of window pattern occurs + + If the repeated data overflows the window + + + + + Copy from input manipulator to internal window + + source of data + length of data to copy + the number of bytes copied + + + + Copy dictionary to window + + source dictionary + offset of start in source dictionary + length of dictionary + + If window isnt empty + + + + + Get remaining unfilled space in window + + Number of bytes left in window + + + + Get bytes available for output in window + + Number of bytes filled + + + + Copy contents of window to output + + buffer to copy to + offset to start at + number of bytes to count + The number of bytes copied + + If a window underflow occurs + + + + + Reset by clearing window so GetAvailable returns 0 + + + + + This class allows us to retrieve a specified number of bits from + the input buffer, as well as copy big byte blocks. + + It uses an int buffer to store up to 31 bits for direct + manipulation. This guarantees that we can get at least 16 bits, + but we only need at most 15, so this is all safe. + + There are some optimizations in this class, for example, you must + never peek more than 8 bits more than needed, and you must first + peek bits before you may drop them. This is not a general purpose + class but optimized for the behaviour of the Inflater. + + Authors of the original java version: John Leuner, Jochen Hoenicke + + + + + Constructs a default StreamManipulator with all buffers empty + + + + + Get the next sequence of bits but don't increase input pointer. bitCount must be + less or equal 16 and if this call succeeds, you must drop + at least n - 8 bits in the next call. + + The number of bits to peek. + + the value of the bits, or -1 if not enough bits available. */ + + + + + Drops the next n bits from the input. You should have called PeekBits + with a bigger or equal n before, to make sure that enough bits are in + the bit buffer. + + The number of bits to drop. + + + + Gets the next n bits and increases input pointer. This is equivalent + to followed by , except for correct error handling. + + The number of bits to retrieve. + + the value of the bits, or -1 if not enough bits available. + + + + + Gets the number of bits available in the bit buffer. This must be + only called when a previous PeekBits() returned -1. + + + the number of bits available. + + + + + Gets the number of bytes available. + + + The number of bytes available. + + + + + Skips to the next byte boundary. + + + + + Returns true when SetInput can be called + + + + + Copies bytes from input buffer to output buffer starting + at output[offset]. You have to make sure, that the buffer is + byte aligned. If not enough bytes are available, copies fewer + bytes. + + + The buffer to copy bytes to. + + + The offset in the buffer at which copying starts + + + The length to copy, 0 is allowed. + + + The number of bytes copied, 0 if no bytes were available. + + + Length is less than zero + + + Bit buffer isnt byte aligned + + + + + Resets state and empties internal buffers + + + + + Add more input for consumption. + Only call when IsNeedingInput returns true + + data to be input + offset of first byte of input + number of bytes of input to add. + + + + Determines how entries are tested to see if they should use Zip64 extensions or not. + + + + + Zip64 will not be forced on entries during processing. + + An entry can have this overridden if required ZipEntry.ForceZip64" + + + + Zip64 should always be used. + + + + + #ZipLib will determine use based on entry values when added to archive. + + + + + The kind of compression used for an entry in an archive + + + + + A direct copy of the file contents is held in the archive + + + + + Common Zip compression method using a sliding dictionary + of up to 32KB and secondary compression from Huffman/Shannon-Fano trees + + + + + An extension to deflate with a 64KB window. Not supported by #Zip currently + + + + + BZip2 compression. Not supported by #Zip. + + + + + WinZip special for AES encryption, Now supported by #Zip. + + + + + Identifies the encryption algorithm used for an entry + + + + + No encryption has been used. + + + + + Encrypted using PKZIP 2.0 or 'classic' encryption. + + + + + DES encryption has been used. + + + + + RC2 encryption has been used for encryption. + + + + + Triple DES encryption with 168 bit keys has been used for this entry. + + + + + Triple DES with 112 bit keys has been used for this entry. + + + + + AES 128 has been used for encryption. + + + + + AES 192 has been used for encryption. + + + + + AES 256 has been used for encryption. + + + + + RC2 corrected has been used for encryption. + + + + + Blowfish has been used for encryption. + + + + + Twofish has been used for encryption. + + + + + RC4 has been used for encryption. + + + + + An unknown algorithm has been used for encryption. + + + + + Defines the contents of the general bit flags field for an archive entry. + + + + + Bit 0 if set indicates that the file is encrypted + + + + + Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating) + + + + + Bit 3 if set indicates a trailing data desciptor is appended to the entry data + + + + + Bit 4 is reserved for use with method 8 for enhanced deflation + + + + + Bit 5 if set indicates the file contains Pkzip compressed patched data. + Requires version 2.7 or greater. + + + + + Bit 6 if set indicates strong encryption has been used for this entry. + + + + + Bit 7 is currently unused + + + + + Bit 8 is currently unused + + + + + Bit 9 is currently unused + + + + + Bit 10 is currently unused + + + + + Bit 11 if set indicates the filename and + comment fields for this file must be encoded using UTF-8. + + + + + Bit 12 is documented as being reserved by PKware for enhanced compression. + + + + + Bit 13 if set indicates that values in the local header are masked to hide + their actual values, and the central directory is encrypted. + + + Used when encrypting the central directory contents. + + + + + Bit 14 is documented as being reserved for use by PKware + + + + + Bit 15 is documented as being reserved for use by PKware + + + + + This class contains constants used for Zip format files + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See ZipEntry.CanDecompress. + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See ZipInputStream.CanDecompressEntry. + + + + + The minimum version required to support strong encryption + + + + + The minimum version required to support strong encryption + + + + + Version indicating AES encryption + + + + + The version required for Zip64 extensions (4.5 or higher) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of Zip64 data descriptor + + + + + Size of data descriptor + + + + + Size of data descriptor + + + + + Size of central header entry (excluding variable fields) + + + + + Size of central header entry + + + + + Size of end of central record (excluding variable fields) + + + + + Size of end of central record (excluding variable fields) + + + + + Size of 'classic' cryptographic header stored before any entry data + + + + + Size of cryptographic header stored before entry data + + + + + Signature for local entry header + + + + + Signature for local entry header + + + + + Signature for spanning entry + + + + + Signature for spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for central header + + + + + Signature for central header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central directory locator + + + + + Signature for archive extra data signature (were headers are encrypted). + + + + + Central header digitial signature + + + + + Central header digitial signature + + + + + End of central directory record signature + + + + + End of central directory record signature + + + + + Default encoding used for string conversion. 0 gives the default system OEM code page. + Dont use unicode encodings if you want to be Zip compatible! + Using the default code page isnt the full solution necessarily + there are many variable factors, codepage 850 is often a good choice for + European users, however be careful about compatibility. + + + + + Convert a portion of a byte array to a string. + + + Data to convert to string + + + Number of bytes to convert starting from index 0 + + + data[0]..data[count - 1] converted to a string + + + + + Convert a byte array to string + + + Byte array to convert + + + dataconverted to a string + + + + + Convert a byte array to string + + The applicable general purpose bits flags + + Byte array to convert + + The number of bytes to convert. + + dataconverted to a string + + + + + Convert a byte array to string + + + Byte array to convert + + The applicable general purpose bits flags + + dataconverted to a string + + + + + Convert a string to a byte array + + + String to convert to an array + + Converted array + + + + Convert a string to a byte array + + The applicable general purpose bits flags + + String to convert to an array + + Converted array + + + + Initialise default instance of ZipConstants + + + Private to prevent instances being created. + + + + + Represents exception conditions specific to Zip archive handling + + + + + Initializes a new instance of the ZipException class. + + + + + Initializes a new instance of the ZipException class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initialise a new instance of ZipException. + + A message describing the error. + The exception that is the cause of the current exception. + +
+
diff --git a/packages/Common/RestSharp.dll b/packages/Common/RestSharp.dll new file mode 100644 index 000000000..ce4ed3839 Binary files /dev/null and b/packages/Common/RestSharp.dll differ diff --git a/packages/Common/RestSharp.xml b/packages/Common/RestSharp.xml new file mode 100644 index 000000000..5069712d1 --- /dev/null +++ b/packages/Common/RestSharp.xml @@ -0,0 +1,3024 @@ + + + + RestSharp + + + + + Tries to Authenticate with the credentials of the currently logged in user, or impersonate a user + + + + + Authenticate with the credentials of the currently logged in user + + + + + Authenticate by impersonation + + + + + + + Authenticate by impersonation, using an existing ICredentials instance + + + + + + + + + Base class for OAuth 2 Authenticators. + + + Since there are many ways to authenticate in OAuth2, + this is used as a base class to differentiate between + other authenticators. + + Any other OAuth2 authenticators must derive from this + abstract class. + + + + + Access token to be used when authenticating. + + + + + Initializes a new instance of the class. + + + The access token. + + + + + Gets the access token. + + + + + The OAuth 2 authenticator using URI query parameter. + + + Based on http://tools.ietf.org/html/draft-ietf-oauth-v2-10#section-5.1.2 + + + + + Initializes a new instance of the class. + + + The access token. + + + + + The OAuth 2 authenticator using the authorization request header field. + + + Based on http://tools.ietf.org/html/draft-ietf-oauth-v2-10#section-5.1.1 + + + + + Stores the Authorization header value as "[tokenType] accessToken". used for performance. + + + + + Initializes a new instance of the class. + + + The access token. + + + + + Initializes a new instance of the class. + + + The access token. + + + The token type. + + + + + All text parameters are UTF-8 encoded (per section 5.1). + + + + + + Generates a random 16-byte lowercase alphanumeric string. + + + + + + + Generates a timestamp based on the current elapsed seconds since '01/01/1970 0000 GMT" + + + + + + + Generates a timestamp based on the elapsed seconds of a given time since '01/01/1970 0000 GMT" + + + A specified point in time. + + + + + The set of characters that are unreserved in RFC 2396 but are NOT unreserved in RFC 3986. + + + + + + URL encodes a string based on section 5.1 of the OAuth spec. + Namely, percent encoding with [RFC3986], avoiding unreserved characters, + upper-casing hexadecimal characters, and UTF-8 encoding for text value pairs. + + The value to escape. + The escaped value. + + The method is supposed to take on + RFC 3986 behavior if certain elements are present in a .config file. Even if this + actually worked (which in my experiments it doesn't), we can't rely on every + host actually having this configuration element present. + + + + + + + URL encodes a string based on section 5.1 of the OAuth spec. + Namely, percent encoding with [RFC3986], avoiding unreserved characters, + upper-casing hexadecimal characters, and UTF-8 encoding for text value pairs. + + + + + + + Sorts a collection of key-value pairs by name, and then value if equal, + concatenating them into a single string. This string should be encoded + prior to, or after normalization is run. + + + + + + + + Sorts a by name, and then value if equal. + + A collection of parameters to sort + A sorted parameter collection + + + + Creates a request URL suitable for making OAuth requests. + Resulting URLs must exclude port 80 or port 443 when accompanied by HTTP and HTTPS, respectively. + Resulting URLs must be lower case. + + + The original request URL + + + + + Creates a request elements concatentation value to send with a request. + This is also known as the signature base. + + + + The request's HTTP method type + The request URL + The request's parameters + A signature base string + + + + Creates a signature value given a signature base and the consumer secret. + This method is used when the token secret is currently unknown. + + + The hashing method + The signature base + The consumer key + + + + + Creates a signature value given a signature base and the consumer secret. + This method is used when the token secret is currently unknown. + + + The hashing method + The treatment to use on a signature value + The signature base + The consumer key + + + + + Creates a signature value given a signature base and the consumer secret and a known token secret. + + + The hashing method + The signature base + The consumer secret + The token secret + + + + + Creates a signature value given a signature base and the consumer secret and a known token secret. + + + The hashing method + The treatment to use on a signature value + The signature base + The consumer secret + The token secret + + + + + A class to encapsulate OAuth authentication flow. + + + + + + Generates a instance to pass to an + for the purpose of requesting an + unauthorized request token. + + The HTTP method for the intended request + + + + + + Generates a instance to pass to an + for the purpose of requesting an + unauthorized request token. + + The HTTP method for the intended request + Any existing, non-OAuth query parameters desired in the request + + + + + + Generates a instance to pass to an + for the purpose of exchanging a request token + for an access token authorized by the user at the Service Provider site. + + The HTTP method for the intended request + + + + + Generates a instance to pass to an + for the purpose of exchanging a request token + for an access token authorized by the user at the Service Provider site. + + The HTTP method for the intended request + + Any existing, non-OAuth query parameters desired in the request + + + + Generates a instance to pass to an + for the purpose of exchanging user credentials + for an access token authorized by the user at the Service Provider site. + + The HTTP method for the intended request + + Any existing, non-OAuth query parameters desired in the request + + + + + + + + + + + + + Allows control how class and property names and values are deserialized by XmlAttributeDeserializer + + + + + The name to use for the serialized element + + + + + Sets if the property to Deserialize is an Attribute or Element (Default: false) + + + + + Wrapper for System.Xml.Serialization.XmlSerializer. + + + + + Types of parameters that can be added to requests + + + + + Data formats + + + + + HTTP method to use when making requests + + + + + Format strings for commonly-used date formats + + + + + .NET format string for ISO 8601 date format + + + + + .NET format string for roundtrip date format + + + + + Status for responses (surprised?) + + + + + Extension method overload! + + + + + Save a byte array to a file + + Bytes to save + Full path to save file to + + + + Read a stream into a byte array + + Stream to read + byte[] + + + + Copies bytes from one stream to another + + The input stream. + The output stream. + + + + Converts a byte array to a string, using its byte order mark to convert it to the right encoding. + http://www.shrinkrays.net/code-snippets/csharp/an-extension-method-for-converting-a-byte-array-to-a-string.aspx + + An array of bytes to convert + The byte as a string. + + + + Decodes an HTML-encoded string and returns the decoded string. + + The HTML string to decode. + The decoded text. + + + + Decodes an HTML-encoded string and sends the resulting output to a TextWriter output stream. + + The HTML string to decode + The TextWriter output stream containing the decoded string. + + + + HTML-encodes a string and sends the resulting output to a TextWriter output stream. + + The string to encode. + The TextWriter output stream containing the encoded string. + + + + Reflection extensions + + + + + Retrieve an attribute from a member (property) + + Type of attribute to retrieve + Member to retrieve attribute from + + + + + Retrieve an attribute from a type + + Type of attribute to retrieve + Type to retrieve attribute from + + + + + Checks a type to see if it derives from a raw generic (e.g. List[[]]) + + + + + + + + Find a value from a System.Enum by trying several possible variants + of the string value of the enum. + + Type of enum + Value for which to search + The culture used to calculate the name variants + + + + + Convert a to a instance. + + The response status. + + responseStatus + + + + Uses Uri.EscapeDataString() based on recommendations on MSDN + http://blogs.msdn.com/b/yangxind/archive/2006/11/09/don-t-use-net-system-uri-unescapedatastring-in-url-decoding.aspx + + + + + Check that a string is not null or empty + + String to check + bool + + + + Remove underscores from a string + + String to process + string + + + + Parses most common JSON date formats + + JSON value to parse + + DateTime + + + + Remove leading and trailing " from a string + + String to parse + String + + + + Checks a string to see if it matches a regex + + String to check + Pattern to match + bool + + + + Converts a string to pascal case + + String to convert + + string + + + + Converts a string to pascal case with the option to remove underscores + + String to convert + Option to remove underscores + + + + + + Converts a string to camel case + + String to convert + + String + + + + Convert the first letter of a string to lower case + + String to convert + string + + + + Checks to see if a string is all uppper case + + String to check + bool + + + + Add underscores to a pascal-cased string + + String to convert + string + + + + Add dashes to a pascal-cased string + + String to convert + string + + + + Add an undescore prefix to a pascasl-cased string + + + + + + + Add spaces to a pascal-cased string + + String to convert + string + + + + Return possible variants of a name for name matching. + + String to convert + The culture to use for conversion + IEnumerable<string> + + + + XML Extension Methods + + + + + Returns the name of an element with the namespace if specified + + Element name + XML Namespace + + + + + Container for files to be uploaded with requests + + + + + Creates a file parameter from an array of bytes. + + The parameter name to use in the request. + The data to use as the file's contents. + The filename to use in the request. + The content type to use in the request. + The + + + + Creates a file parameter from an array of bytes. + + The parameter name to use in the request. + The data to use as the file's contents. + The filename to use in the request. + The using the default content type. + + + + The length of data to be sent + + + + + Provides raw data for file + + + + + Name of the file to use when uploading + + + + + MIME content type of file + + + + + Name of the parameter + + + + + HttpWebRequest wrapper (async methods) + + + HttpWebRequest wrapper + + + HttpWebRequest wrapper (sync methods) + + + + + Always send a multipart/form-data request - even when no Files are present. + + + + + An alternative to RequestBody, for when the caller already has the byte array. + + + + + Execute an async POST-style request with the specified HTTP Method. + + + The HTTP method to execute. + + + + + Execute an async GET-style request with the specified HTTP Method. + + + The HTTP method to execute. + + + + + Creates an IHttp + + + + + + Default constructor + + + + + Execute a POST request + + + + + Execute a PUT request + + + + + Execute a GET request + + + + + Execute a HEAD request + + + + + Execute an OPTIONS request + + + + + Execute a DELETE request + + + + + Execute a PATCH request + + + + + Execute a MERGE request + + + + + Execute a GET-style request with the specified HTTP Method. + + The HTTP method to execute. + + + + + Execute a POST-style request with the specified HTTP Method. + + The HTTP method to execute. + + + + + True if this HTTP request has any HTTP parameters + + + + + True if this HTTP request has any HTTP cookies + + + + + True if a request body has been specified + + + + + True if files have been set to be uploaded + + + + + Always send a multipart/form-data request - even when no Files are present. + + + + + UserAgent to be sent with request + + + + + Timeout in milliseconds to be used for the request + + + + + The number of milliseconds before the writing or reading times out. + + + + + System.Net.ICredentials to be sent with request + + + + + The System.Net.CookieContainer to be used for the request + + + + + The method to use to write the response instead of reading into RawBytes + + + + + Collection of files to be sent with request + + + + + Whether or not HTTP 3xx response redirects should be automatically followed + + + + + X509CertificateCollection to be sent with request + + + + + Maximum number of automatic redirects to follow if FollowRedirects is true + + + + + Determine whether or not the "default credentials" (e.g. the user account under which the current process is running) + will be sent along to the server. + + + + + HTTP headers to be sent with request + + + + + HTTP parameters (QueryString or Form values) to be sent with request + + + + + HTTP cookies to be sent with request + + + + + Request body to be sent with request + + + + + Content type of the request body. + + + + + An alternative to RequestBody, for when the caller already has the byte array. + + + + + URL to call for this request + + + + + Flag to send authorisation header with the HttpWebRequest + + + + + Proxy info to be sent with request + + + + + Representation of an HTTP cookie + + + + + Comment of the cookie + + + + + Comment of the cookie + + + + + Indicates whether the cookie should be discarded at the end of the session + + + + + Domain of the cookie + + + + + Indicates whether the cookie is expired + + + + + Date and time that the cookie expires + + + + + Indicates that this cookie should only be accessed by the server + + + + + Name of the cookie + + + + + Path of the cookie + + + + + Port of the cookie + + + + + Indicates that the cookie should only be sent over secure channels + + + + + Date and time the cookie was created + + + + + Value of the cookie + + + + + Version of the cookie + + + + + Container for HTTP file + + + + + The length of data to be sent + + + + + Provides raw data for file + + + + + Name of the file to use when uploading + + + + + MIME content type of file + + + + + Name of the parameter + + + + + Representation of an HTTP header + + + + + Name of the header + + + + + Value of the header + + + + + Representation of an HTTP parameter (QueryString or Form value) + + + + + Name of the parameter + + + + + Value of the parameter + + + + + HTTP response data + + + + + HTTP response data + + + + + MIME content type of response + + + + + Length in bytes of the response content + + + + + Encoding of the response content + + + + + String representation of response content + + + + + HTTP response status code + + + + + Description of HTTP status returned + + + + + Response content + + + + + The URL that actually responded to the content (different from request if redirected) + + + + + HttpWebResponse.Server + + + + + Headers returned by server with the response + + + + + Cookies returned by server with the response + + + + + Status of the request. Will return Error for transport errors. + HTTP errors will still return ResponseStatus.Completed, check StatusCode instead + + + + + Transport or other non-HTTP error generated while attempting request + + + + + Exception thrown when error is encountered. + + + + + Default constructor + + + + + MIME content type of response + + + + + Length in bytes of the response content + + + + + Encoding of the response content + + + + + Lazy-loaded string representation of response content + + + + + HTTP response status code + + + + + Description of HTTP status returned + + + + + Response content + + + + + The URL that actually responded to the content (different from request if redirected) + + + + + HttpWebResponse.Server + + + + + Headers returned by server with the response + + + + + Cookies returned by server with the response + + + + + Status of the request. Will return Error for transport errors. + HTTP errors will still return ResponseStatus.Completed, check StatusCode instead + + + + + Transport or other non-HTTP error generated while attempting request + + + + + Exception thrown when error is encountered. + + + + + + + + + + + + + + + + + + + + + + + + Executes a GET-style request and callback asynchronously, authenticating if needed + + Request to be executed + Callback function to be executed upon completion providing access to the async handle. + The HTTP method to execute + + + + Executes a POST-style request and callback asynchronously, authenticating if needed + + Request to be executed + Callback function to be executed upon completion providing access to the async handle. + The HTTP method to execute + + + + Executes a GET-style request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + Callback function to be executed upon completion + The HTTP method to execute + + + + Executes a GET-style request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + Callback function to be executed upon completion + The HTTP method to execute + + + + Executes the request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes the request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes a GET-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes a GET-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes a POST-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes a POST-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes the request and callback asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + Executes the request asynchronously, authenticating if needed + + Request to be executed + + + + Executes a GET-style asynchronously, authenticating if needed + + Request to be executed + + + + Executes a GET-style asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + Executes a POST-style asynchronously, authenticating if needed + + Request to be executed + + + + Executes a POST-style asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + X509CertificateCollection to be sent with request + + + + + Adds a file to the Files collection to be included with a POST or PUT request + (other methods do not support file uploads). + + The parameter name to use in the request + Full path to file to upload + This request + + + + Adds the bytes to the Files collection with the specified file name + + The parameter name to use in the request + The file data + The file name to use for the uploaded file + This request + + + + Adds the bytes to the Files collection with the specified file name and content type + + The parameter name to use in the request + The file data + The file name to use for the uploaded file + The MIME type of the file to upload + This request + + + + Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer + The default format is XML. Change RequestFormat if you wish to use a different serialization format. + + The object to serialize + The XML namespace to use when serializing + This request + + + + Serializes obj to data format specified by RequestFormat and adds it to the request body. + The default format is XML. Change RequestFormat if you wish to use a different serialization format. + + The object to serialize + This request + + + + Serializes obj to JSON format and adds it to the request body. + + The object to serialize + This request + + + + Serializes obj to XML format and adds it to the request body. + + The object to serialize + This request + + + + Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer + Serializes obj to XML format and passes xmlNamespace then adds it to the request body. + + The object to serialize + The XML namespace to use when serializing + This request + + + + Calls AddParameter() for all public, readable properties specified in the includedProperties list + + + request.AddObject(product, "ProductId", "Price", ...); + + The object with properties to add as parameters + The names of the properties to include + This request + + + + Calls AddParameter() for all public, readable properties of obj + + The object with properties to add as parameters + This request + + + + Add the parameter to the request + + Parameter to add + + + + + Adds a HTTP parameter to the request (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT) + + Name of the parameter + Value of the parameter + This request + + + + Adds a parameter to the request. There are five types of parameters: + - GetOrPost: Either a QueryString value or encoded form value based on method + - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection + - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId} + - Cookie: Adds the name/value pair to the HTTP request's Cookies collection + - RequestBody: Used by AddBody() (not recommended to use directly) + + Name of the parameter + Value of the parameter + The type of parameter to add + This request + + + + Shortcut to AddParameter(name, value, HttpHeader) overload + + Name of the header to add + Value of the header to add + + + + + Shortcut to AddParameter(name, value, Cookie) overload + + Name of the cookie to add + Value of the cookie to add + + + + + Shortcut to AddParameter(name, value, UrlSegment) overload + + Name of the segment to add + Value of the segment to add + + + + + Shortcut to AddParameter(name, value, QueryString) overload + + Name of the parameter to add + Value of the parameter to add + + + + + Always send a multipart/form-data request - even when no Files are present. + + + + + Serializer to use when writing JSON request bodies. Used if RequestFormat is Json. + By default the included JsonSerializer is used (currently using JSON.NET default serialization). + + + + + Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. + By default the included XmlSerializer is used. + + + + + Set this to write response to Stream rather than reading into memory. + + + + + Container of all HTTP parameters to be passed with the request. + See AddParameter() for explanation of the types of parameters that can be passed + + + + + Container of all the files to be uploaded with the request. + + + + + Determines what HTTP method to use for this request. Supported methods: GET, POST, PUT, DELETE, HEAD, OPTIONS + Default is GET + + + + + The Resource URL to make the request against. + Tokens are substituted with UrlSegment parameters and match by name. + Should not include the scheme or domain. Do not include leading slash. + Combined with RestClient.BaseUrl to assemble final URL: + {BaseUrl}/{Resource} (BaseUrl is scheme + domain, e.g. http://example.com) + + + // example for url token replacement + request.Resource = "Products/{ProductId}"; + request.AddParameter("ProductId", 123, ParameterType.UrlSegment); + + + + + Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. + By default XmlSerializer is used. + + + + + Used by the default deserializers to determine where to start deserializing from. + Can be used to skip container or root elements that do not have corresponding deserialzation targets. + + + + + Used by the default deserializers to explicitly set which date format string to use when parsing dates. + + + + + Used by XmlDeserializer. If not specified, XmlDeserializer will flatten response by removing namespaces from element names. + + + + + In general you would not need to set this directly. Used by the NtlmAuthenticator. + + + + + Timeout in milliseconds to be used for the request. This timeout value overrides a timeout set on the RestClient. + + + + + The number of milliseconds before the writing or reading times out. This timeout value overrides a timeout set on the RestClient. + + + + + How many attempts were made to send this Request? + + + This Number is incremented each time the RestClient sends the request. + Useful when using Asynchronous Execution with Callbacks + + + + + Determine whether or not the "default credentials" (e.g. the user account under which the current process is running) + will be sent along to the server. The default is false. + + + + + Container for data sent back from API + + + + + The RestRequest that was made to get this RestResponse + + + Mainly for debugging if ResponseStatus is not OK + + + + + MIME content type of response + + + + + Length in bytes of the response content + + + + + Encoding of the response content + + + + + String representation of response content + + + + + HTTP response status code + + + + + Description of HTTP status returned + + + + + Response content + + + + + The URL that actually responded to the content (different from request if redirected) + + + + + HttpWebResponse.Server + + + + + Cookies returned by server with the response + + + + + Headers returned by server with the response + + + + + Status of the request. Will return Error for transport errors. + HTTP errors will still return ResponseStatus.Completed, check StatusCode instead + + + + + Transport or other non-HTTP error generated while attempting request + + + + + Exceptions thrown during the request, if any. + + Will contain only network transport or framework exceptions thrown during the request. + HTTP protocol errors are handled by RestSharp and will not appear here. + + + + Container for data sent back from API including deserialized data + + Type of data to deserialize to + + + + Deserialized entity data + + + + + Parameter container for REST requests + + + + + Return a human-readable representation of this parameter + + String + + + + Name of the parameter + + + + + Value of the parameter + + + + + Type of the parameter + + + + + Client to translate RestRequests into Http requests and process response result + + + + + Executes the request and callback asynchronously, authenticating if needed + + Request to be executed + Callback function to be executed upon completion providing access to the async handle. + + + + Executes a GET-style request and callback asynchronously, authenticating if needed + + Request to be executed + Callback function to be executed upon completion providing access to the async handle. + The HTTP method to execute + + + + Executes a POST-style request and callback asynchronously, authenticating if needed + + Request to be executed + Callback function to be executed upon completion providing access to the async handle. + The HTTP method to execute + + + + Executes the request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + Callback function to be executed upon completion + + + + Executes a GET-style request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + Callback function to be executed upon completion + The HTTP method to execute + + + + Executes a POST-style request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + Callback function to be executed upon completion + The HTTP method to execute + + + + Executes a GET-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes a GET-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes a POST-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes a POST-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes the request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes the request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes the request asynchronously, authenticating if needed + + Request to be executed + + + + Executes a GET-style asynchronously, authenticating if needed + + Request to be executed + + + + Executes a GET-style asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + Executes a POST-style asynchronously, authenticating if needed + + Request to be executed + + + + Executes a POST-style asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + Executes the request asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + Default constructor that registers default content handlers + + + + + Sets the BaseUrl property for requests made by this client instance + + + + + + Sets the BaseUrl property for requests made by this client instance + + + + + + Registers a content handler to process response content + + MIME content type of the response content + Deserializer to use to process content + + + + Remove a content handler for the specified MIME content type + + MIME content type to remove + + + + Remove all content handlers + + + + + Retrieve the handler for the specified MIME content type + + MIME content type to retrieve + IDeserializer instance + + + + Assembles URL to call based on parameters, method and resource + + RestRequest to execute + Assembled System.Uri + + + + Executes the specified request and downloads the response data + + Request to execute + Response data + + + + Executes the request and returns a response, authenticating if needed + + Request to be executed + RestResponse + + + + Executes the specified request and deserializes the response content using the appropriate content handler + + Target deserialization type + Request to execute + RestResponse[[T]] with deserialized data in Data property + + + + Parameters included with every request made with this instance of RestClient + If specified in both client and request, the request wins + + + + + Maximum number of redirects to follow if FollowRedirects is true + + + + + X509CertificateCollection to be sent with request + + + + + Proxy to use for requests made by this client instance. + Passed on to underlying WebRequest if set. + + + + + Default is true. Determine whether or not requests that result in + HTTP status codes of 3xx should follow returned redirect + + + + + The CookieContainer used for requests made by this client instance + + + + + UserAgent to use for requests made by this client instance + + + + + Timeout in milliseconds to use for requests made by this client instance + + + + + The number of milliseconds before the writing or reading times out. + + + + + Whether to invoke async callbacks using the SynchronizationContext.Current captured when invoked + + + + + Authenticator to use for requests made by this client instance + + + + + Combined with Request.Resource to construct URL for request + Should include scheme and domain without trailing slash. + + + client.BaseUrl = new Uri("http://example.com"); + + + + + Executes the request and callback asynchronously, authenticating if needed + + The IRestClient this method extends + Request to be executed + Callback function to be executed upon completion + + + + Executes the request and callback asynchronously, authenticating if needed + + The IRestClient this method extends + Target deserialization type + Request to be executed + Callback function to be executed upon completion providing access to the async handle + + + + Add a parameter to use on every request made with this client instance + + The IRestClient instance + Parameter to add + + + + + Removes a parameter from the default parameters that are used on every request made with this client instance + + The IRestClient instance + The name of the parameter that needs to be removed + + + + + Adds a HTTP parameter (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT) + Used on every request made by this client instance + + The IRestClient instance + Name of the parameter + Value of the parameter + This request + + + + Adds a parameter to the request. There are four types of parameters: + - GetOrPost: Either a QueryString value or encoded form value based on method + - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection + - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId} + - RequestBody: Used by AddBody() (not recommended to use directly) + + The IRestClient instance + Name of the parameter + Value of the parameter + The type of parameter to add + This request + + + + Shortcut to AddDefaultParameter(name, value, HttpHeader) overload + + The IRestClient instance + Name of the header to add + Value of the header to add + + + + + Shortcut to AddDefaultParameter(name, value, UrlSegment) overload + + The IRestClient instance + Name of the segment to add + Value of the segment to add + + + + + Container for data used to make requests + + + + + Default constructor + + + + + Sets Method property to value of method + + Method to use for this request + + + + Sets Resource property + + Resource to use for this request + + + + Sets Resource and Method properties + + Resource to use for this request + Method to use for this request + + + + Sets Resource property + + Resource to use for this request + + + + Sets Resource and Method properties + + Resource to use for this request + Method to use for this request + + + + Adds a file to the Files collection to be included with a POST or PUT request + (other methods do not support file uploads). + + The parameter name to use in the request + Full path to file to upload + This request + + + + Adds the bytes to the Files collection with the specified file name + + The parameter name to use in the request + The file data + The file name to use for the uploaded file + This request + + + + Adds the bytes to the Files collection with the specified file name and content type + + The parameter name to use in the request + The file data + The file name to use for the uploaded file + The MIME type of the file to upload + This request + + + + Adds the bytes to the Files collection with the specified file name and content type + + The parameter name to use in the request + A function that writes directly to the stream. Should NOT close the stream. + The file name to use for the uploaded file + This request + + + + Adds the bytes to the Files collection with the specified file name and content type + + The parameter name to use in the request + A function that writes directly to the stream. Should NOT close the stream. + The file name to use for the uploaded file + The MIME type of the file to upload + This request + + + + Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer + The default format is XML. Change RequestFormat if you wish to use a different serialization format. + + The object to serialize + The XML namespace to use when serializing + This request + + + + Serializes obj to data format specified by RequestFormat and adds it to the request body. + The default format is XML. Change RequestFormat if you wish to use a different serialization format. + + The object to serialize + This request + + + + Serializes obj to JSON format and adds it to the request body. + + The object to serialize + This request + + + + Serializes obj to XML format and adds it to the request body. + + The object to serialize + This request + + + + Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer + Serializes obj to XML format and passes xmlNamespace then adds it to the request body. + + The object to serialize + The XML namespace to use when serializing + This request + + + + Calls AddParameter() for all public, readable properties specified in the includedProperties list + + + request.AddObject(product, "ProductId", "Price", ...); + + The object with properties to add as parameters + The names of the properties to include + This request + + + + Calls AddParameter() for all public, readable properties of obj + + The object with properties to add as parameters + This request + + + + Add the parameter to the request + + Parameter to add + + + + + Adds a HTTP parameter to the request (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT) + + Name of the parameter + Value of the parameter + This request + + + + Adds a parameter to the request. There are four types of parameters: + - GetOrPost: Either a QueryString value or encoded form value based on method + - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection + - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId} + - RequestBody: Used by AddBody() (not recommended to use directly) + + Name of the parameter + Value of the parameter + The type of parameter to add + This request + + + + Shortcut to AddParameter(name, value, HttpHeader) overload + + Name of the header to add + Value of the header to add + + + + + Shortcut to AddParameter(name, value, Cookie) overload + + Name of the cookie to add + Value of the cookie to add + + + + + Shortcut to AddParameter(name, value, UrlSegment) overload + + Name of the segment to add + Value of the segment to add + + + + + Shortcut to AddParameter(name, value, QueryString) overload + + Name of the parameter to add + Value of the parameter to add + + + + + Internal Method so that RestClient can increase the number of attempts + + + + + Always send a multipart/form-data request - even when no Files are present. + + + + + Serializer to use when writing JSON request bodies. Used if RequestFormat is Json. + By default the included JsonSerializer is used (currently using JSON.NET default serialization). + + + + + Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. + By default the included XmlSerializer is used. + + + + + Set this to write response to Stream rather than reading into memory. + + + + + Determine whether or not the "default credentials" (e.g. the user account under which the current process is running) + will be sent along to the server. The default is false. + + + + + Container of all HTTP parameters to be passed with the request. + See AddParameter() for explanation of the types of parameters that can be passed + + + + + Container of all the files to be uploaded with the request. + + + + + Determines what HTTP method to use for this request. Supported methods: GET, POST, PUT, DELETE, HEAD, OPTIONS + Default is GET + + + + + The Resource URL to make the request against. + Tokens are substituted with UrlSegment parameters and match by name. + Should not include the scheme or domain. Do not include leading slash. + Combined with RestClient.BaseUrl to assemble final URL: + {BaseUrl}/{Resource} (BaseUrl is scheme + domain, e.g. http://example.com) + + + // example for url token replacement + request.Resource = "Products/{ProductId}"; + request.AddParameter("ProductId", 123, ParameterType.UrlSegment); + + + + + Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. + By default XmlSerializer is used. + + + + + Used by the default deserializers to determine where to start deserializing from. + Can be used to skip container or root elements that do not have corresponding deserialzation targets. + + + + + A function to run prior to deserializing starting (e.g. change settings if error encountered) + + + + + Used by the default deserializers to explicitly set which date format string to use when parsing dates. + + + + + Used by XmlDeserializer. If not specified, XmlDeserializer will flatten response by removing namespaces from element names. + + + + + In general you would not need to set this directly. Used by the NtlmAuthenticator. + + + + + Gets or sets a user-defined state object that contains information about a request and which can be later + retrieved when the request completes. + + + + + Timeout in milliseconds to be used for the request. This timeout value overrides a timeout set on the RestClient. + + + + + The number of milliseconds before the writing or reading times out. This timeout value overrides a timeout set on the RestClient. + + + + + How many attempts were made to send this Request? + + + This Number is incremented each time the RestClient sends the request. + Useful when using Asynchronous Execution with Callbacks + + + + + Base class for common properties shared by RestResponse and RestResponse[[T]] + + + + + Default constructor + + + + + The RestRequest that was made to get this RestResponse + + + Mainly for debugging if ResponseStatus is not OK + + + + + MIME content type of response + + + + + Length in bytes of the response content + + + + + Encoding of the response content + + + + + String representation of response content + + + + + HTTP response status code + + + + + Description of HTTP status returned + + + + + Response content + + + + + The URL that actually responded to the content (different from request if redirected) + + + + + HttpWebResponse.Server + + + + + Cookies returned by server with the response + + + + + Headers returned by server with the response + + + + + Status of the request. Will return Error for transport errors. + HTTP errors will still return ResponseStatus.Completed, check StatusCode instead + + + + + Transport or other non-HTTP error generated while attempting request + + + + + The exception thrown during the request, if any + + + + + Container for data sent back from API including deserialized data + + Type of data to deserialize to + + + + Deserialized entity data + + + + + Container for data sent back from API + + + + + Comment of the cookie + + + + + Comment of the cookie + + + + + Indicates whether the cookie should be discarded at the end of the session + + + + + Domain of the cookie + + + + + Indicates whether the cookie is expired + + + + + Date and time that the cookie expires + + + + + Indicates that this cookie should only be accessed by the server + + + + + Name of the cookie + + + + + Path of the cookie + + + + + Port of the cookie + + + + + Indicates that the cookie should only be sent over secure channels + + + + + Date and time the cookie was created + + + + + Value of the cookie + + + + + Version of the cookie + + + + + Wrapper for System.Xml.Serialization.XmlSerializer. + + + + + Default constructor, does not specify namespace + + + + + Specify the namespaced to be used when serializing + + XML namespace + + + + Serialize the object as XML + + Object to serialize + XML as string + + + + Name of the root element to use when serializing + + + + + XML namespace to use when serializing + + + + + Format string to use when serializing dates + + + + + Content type for serialized content + + + + + Encoding for serialized content + + + + + Need to subclass StringWriter in order to override Encoding + + + + + Default JSON serializer for request bodies + Doesn't currently use the SerializeAs attribute, defers to Newtonsoft's attributes + + + + + Default serializer + + + + + Serialize the object as JSON + + Object to serialize + JSON as String + + + + Unused for JSON Serialization + + + + + Unused for JSON Serialization + + + + + Unused for JSON Serialization + + + + + Content type for serialized content + + + + + Allows control how class and property names and values are serialized by XmlSerializer + Currently not supported with the JsonSerializer + When specified at the property level the class-level specification is overridden + + + + + Called by the attribute when NameStyle is speficied + + The string to transform + String + + + + The name to use for the serialized element + + + + + Sets the value to be serialized as an Attribute instead of an Element + + + + + The culture to use when serializing + + + + + Transforms the casing of the name based on the selected value. + + + + + The order to serialize the element. Default is int.MaxValue. + + + + + Options for transforming casing of element names + + + + + Default XML Serializer + + + + + Default constructor, does not specify namespace + + + + + Specify the namespaced to be used when serializing + + XML namespace + + + + Serialize the object as XML + + Object to serialize + XML as string + + + + Determines if a given object is numeric in any way + (can be integer, double, null, etc). + + + + + Name of the root element to use when serializing + + + + + XML namespace to use when serializing + + + + + Format string to use when serializing dates + + + + + Content type for serialized content + + + + + Helper methods for validating required values + + + + + Require a parameter to not be null + + Name of the parameter + Value of the parameter + + + + Represents the json array. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The capacity of the json array. + + + + The json representation of the array. + + The json representation of the array. + + + + Represents the json object. + + + + + The internal member dictionary. + + + + + Initializes a new instance of . + + + + + Initializes a new instance of . + + The implementation to use when comparing keys, or null to use the default for the type of the key. + + + + Adds the specified key. + + The key. + The value. + + + + Determines whether the specified key contains key. + + The key. + + true if the specified key contains key; otherwise, false. + + + + + Removes the specified key. + + The key. + + + + + Tries the get value. + + The key. + The value. + + + + + Adds the specified item. + + The item. + + + + Clears this instance. + + + + + Determines whether [contains] [the specified item]. + + The item. + + true if [contains] [the specified item]; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the specified item. + + The item. + + + + + Gets the enumerator. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Returns a json that represents the current . + + + A json that represents the current . + + + + + Gets the at the specified index. + + + + + + Gets the keys. + + The keys. + + + + Gets the values. + + The values. + + + + Gets or sets the with the specified key. + + + + + + Gets the count. + + The count. + + + + Gets a value indicating whether this instance is read only. + + + true if this instance is read only; otherwise, false. + + + + + This class encodes and decodes JSON strings. + Spec. details, see http://www.json.org/ + + JSON uses Arrays and Objects. These correspond here to the datatypes JsonArray(IList<object>) and JsonObject(IDictionary<string,object>). + All numbers are parsed to doubles. + + + + + Parses the string json into a value + + A JSON string. + An IList<object>, a IDictionary<string,object>, a double, a string, null, true, or false + + + + Try parsing the json string into a value. + + + A JSON string. + + + The object. + + + Returns true if successfull otherwise false. + + + + + Converts a IDictionary<string,object> / IList<object> object into a JSON string + + A IDictionary<string,object> / IList<object> + Serializer strategy to use + A JSON encoded string, or null if object 'json' is not serializable + + + + Determines if a given object is numeric in any way + (can be integer, double, null, etc). + + + + + Helper methods for validating values + + + + + Validate an integer value is between the specified values (exclusive of min/max) + + Value to validate + Exclusive minimum value + Exclusive maximum value + + + + Validate a string length + + String to be validated + Maximum length of the string + + + diff --git a/packages/Common/Xylem.Common.CommonCore.Configuration.dll b/packages/Common/Xylem.Common.CommonCore.Configuration.dll new file mode 100644 index 000000000..0745c2d92 Binary files /dev/null and b/packages/Common/Xylem.Common.CommonCore.Configuration.dll differ diff --git a/packages/Common/Xylem.Common.CommonCore.Configuration.pdb b/packages/Common/Xylem.Common.CommonCore.Configuration.pdb new file mode 100644 index 000000000..5b340ed9f Binary files /dev/null and b/packages/Common/Xylem.Common.CommonCore.Configuration.pdb differ diff --git a/packages/Common/Xylem.Common.CommonCore.ThreadWatcher.dll b/packages/Common/Xylem.Common.CommonCore.ThreadWatcher.dll new file mode 100644 index 000000000..2b36e9e48 Binary files /dev/null and b/packages/Common/Xylem.Common.CommonCore.ThreadWatcher.dll differ diff --git a/packages/Common/Xylem.Common.CommonCore.ThreadWatcher.pdb b/packages/Common/Xylem.Common.CommonCore.ThreadWatcher.pdb new file mode 100644 index 000000000..85081b034 Binary files /dev/null and b/packages/Common/Xylem.Common.CommonCore.ThreadWatcher.pdb differ diff --git a/packages/Common/Xylem.Common.CommonCore.dll b/packages/Common/Xylem.Common.CommonCore.dll new file mode 100644 index 000000000..e77241dfb Binary files /dev/null and b/packages/Common/Xylem.Common.CommonCore.dll differ diff --git a/packages/Common/Xylem.Common.CommonCore.pdb b/packages/Common/Xylem.Common.CommonCore.pdb new file mode 100644 index 000000000..dfa1388e8 Binary files /dev/null and b/packages/Common/Xylem.Common.CommonCore.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.PortCore.dll b/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.PortCore.dll new file mode 100644 index 000000000..899923779 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.PortCore.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.PortCore.pdb b/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.PortCore.pdb new file mode 100644 index 000000000..cd27648ef Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.PortCore.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.PortCore.xml b/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.PortCore.xml new file mode 100644 index 000000000..31aa9063e --- /dev/null +++ b/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.PortCore.xml @@ -0,0 +1,223 @@ + + + + Xylem.Common.Hardware.Interfaces.Ports.PortCore + + + + + + + + Marker for incoming record at time of the PC + + + + + + + + + + + + + + + + + + + + + + + Interface for port data event arguments + + + + + Read data + + + + + + Write data + + + + + + Reading received time + + + + + + Writing received time + + + + + + Setting the data marker + + + + + + Getting the data marker + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for Ports + + + + + event for record received, either bytes or string + + + + + event for record received, either bytes or string + + + + + set specific mark + and flush or delete all incoming byte from buffer when SyncMarkRecord is or + + + + + + + if the port needs stuff to open, always open for better logical handling + + + + + close and dispose all connections + + + + + indicates if the Port is open (also on Ports that did not have an open state) + + + + + + Write byte[] to the Stream/Port on Child Class + wrapped with base class error handling + + Array of bytes to write + + + + discard all buffers + + + + + Return the port name + + name of the port as string + + + + Store Port settings set most likely from transmit protocol + + + + + The transmission protocol needs to inform the communication port how to setup, + this is the data container. + + + + + + + + + + + + start of receiving synchronization byte at byte receive routine + syncByte == null: use the readLine routine (ASCII) and NOT the BYTE routine, + lengthPosition and additionalLength are not used + + + + + position of length information field in received BYTE record + lengthIndex == null: take the constant receive length of additionalLength + because the record doesn't contain length information + + + + + additional record length NOT covert by the record length information field + lengthIndex == null: constant length for received record + Being used for the BYTE records indicated by a valid syncByte, + not being used for ASCII records. + + + + + Response time out in milliseconds + + + + + BaudRate for Port + + + + + lower threshold for buffer flushing if dataMarker != SkipDecoding + receiveBufferFlushThreshold == null: never flush the communication buffer + receiveBufferFlushThreshold == 0: flush always the communication buffer + receiveBufferFlushThreshold == x: flush communication buffer if it exceeds x Byte + waste old records if an up-to-date record is being needed for start/stop synchronization + of a measurement. This is the level at which the old data have to be flushed because the + data have been dammed up in the communication port input buffer which means they are to + old for synchronization purposes. + /// + + + + a special implementation may require the doubling of the sync byte to re-synchronize + + + + diff --git a/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.SerialPorts.dll b/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.SerialPorts.dll new file mode 100644 index 000000000..12d12e4cc Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.SerialPorts.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.SerialPorts.pdb b/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.SerialPorts.pdb new file mode 100644 index 000000000..27ec84291 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.Interfaces.Ports.SerialPorts.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol.dll b/packages/Common/Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol.dll new file mode 100644 index 000000000..b7f016c1c Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol.pdb b/packages/Common/Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol.pdb new file mode 100644 index 000000000..d34e43429 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.dll new file mode 100644 index 000000000..014b5cefe Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.dll.config b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.dll.config new file mode 100644 index 000000000..e936cc132 --- /dev/null +++ b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.dll.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.pdb new file mode 100644 index 000000000..7e678c35b Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.dll new file mode 100644 index 000000000..b5aa560b7 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.pdb new file mode 100644 index 000000000..41dae7438 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml new file mode 100644 index 000000000..76a62c827 --- /dev/null +++ b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.xml @@ -0,0 +1,205 @@ + + + + Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages + + + + + + abstract for set structure for BaseDataEventArgs + + + + + 'Base' get event record form real child. + + + + + + get real Event record + + + + + + Holds the record before decoding, for logging + + + + + + + + Stream record for calibration on channel + + + + + + + + + + + new record from Stream + + + + + + + + + + + + Ctor with base record + + base record + base record + + + + Register witch has updated + + + + + New Value in Register + + + + + + EventArgs for Request Responses + + + + + Request response from meter + + + + + + + + + hold streaming record for protocol H (contains calibration record) + + + + + record validation + + + + + total time of flight in seconds + + + + + delta time of flight in seconds + + + + + total time of flight in cordonel units + + + + + delta time of flight in cordonel units + + + + + volume scale (default: 1024) means + 1024digits = 1ml + + + + + volume factor to convert raw to m³ + uses 1E-6 (ml to m³) / VolumeScaleRawPerMl + + + + + raw volume between two samples + + + + + calculated out of dRawVolume * VolumeFactorRawToQm . + in cubic meters + + + + + accumulated raw volume + + + + + sample interval between two samples in seconds + + + + + high threshold amplitude in V + + + + + low threshold amplitude in V + + + + + high ratio for pulse width + + + + + low ratio for pulse width + + + + + raw temperature + + + + + temperature scale + + + + + calculated temperature in degree C + + + + + Get result as string + + + + + + + struct to hold Led record for protocol F (contains measurement record) + + + + + Get result as string + + + + + diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig.dll new file mode 100644 index 000000000..95609dc42 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig.pdb new file mode 100644 index 000000000..c3dc4c543 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.dll new file mode 100644 index 000000000..813bc47ac Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.dll.config b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.dll.config new file mode 100644 index 000000000..e936cc132 --- /dev/null +++ b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.dll.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.pdb new file mode 100644 index 000000000..eda7170ab Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.xml b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.xml new file mode 100644 index 000000000..02326ccb3 --- /dev/null +++ b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.xml @@ -0,0 +1,1101 @@ + + + + Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore + + + + + Streaming modes that supported by genesis meter. + Set meter to this Streaming mode means that , the meter pushes mode-specific record to port without any responses + + + + + Test mode with raw record to log. Should give one + 3 times and repeat this till led mode is switch + + + + + Test mode should give out + + + + + Calibration mode should give out + + + + + Deactivate streaming + + + + + not set or an new not supported Streaming mode + + + + + + Genesis meter, main class for all action that occurs on production life of meter + one meter always have a linked port for UART communication and one for LED (even if you don't need them) + it´s has to be open for vb6 COM so don't use any record types or objects that vb6 didn't understand or + interprets differently than dotNet + + + + Default constructor. + + R.Drabesch, 2018-Feb-16. + + + + Transmit protocol access for underlie objects to change response timeout + + + + + + Slot number for test-bench + for request Port + for streaming Port + don´t send CRC error or telegrams with error flag to caller + + If you have a password for highest access level you need, if you don't want to access the meter + (just read led record) than you can leave it null + + + + + Keep up the highest access level for all function in where used + + + + + Logout with level 0 + + + + + + Property is redundant because is also stored in + but never less is + is the identification of the meter it has a separate Property + + + + + + Save Slot Number (position at test-bench) for logging purposes + + + + + Represent + proposed for login + + + + + + + + Add on ctor a password and it will be used for login in if no other password is set + + + + + default false only enabled by + when it is true, the meter will enforce the login when session is gone or access is denied + + + + + Enable raw record logging, if set every incoming package will be logged + + + + + Enable use of registers that are not valid (last version not match the current app) + + + + + All parameter store in this Genesis is up in here + if you want to read them from meter use + if you want to set them to meter use + + + + + All applications defined by configuration.json + + + + + request port assignment/info + + + + + request protocol assignment/info + + + + + streaming port assignment/info + + + + + streaming protocol assignment/info + + + + + to reduce the IrdA communication in test bench, preparation will be done once (when SkipPrepearationForTestBench is true) + + + + + Response received after request for record + + + + + + + + Returns meter registers + + + + + + + + + do not use it to set ProcessStatus + if you want to change ProcessStatus of this genesis use + is just store for some routines + + + + + if state is change + + will be invoked. + on some states other events will be invoke as well + + + + do not use it to set ErrorStatus + if you want to change ErrorStatus of this genesis use + is just store for some routines + + + + + fires up + + + + + Logged in to device + + + + + Hold the current process name e.g. FlowTest, Preadjustemtn for logging + + + + + + + + Setup water meter from configuration file: + -slot, + -streaming protocol, + -streaming port + -request port + + + + + + + + + + just internal setup. called on ctor or from vb6 setup function + + Slot Number for test-bench + for RFID/UART/IrDA Port + for LED Port + don´t send CRC error or telegrams with error flag to caller + + If you have a password for highest access level you need, if you don't want to access the meter + (just read led record) than you can leave it nullS + + + + + + Start Event listening, has to be called after + + + + + Add a port to working queue + + On should one once added in runtime + + + + + Synchronization of the record for the streaming interface + + + + + + + + + + + + + + + + + + + + + + + + + + + + call this if session is expired and you need an re-authorization + + + + + A helper to invoke events only if someone is listening, otherwise nothing will happen + + Event handler to call + Sender (can be null) + Event arguments (can be null) + + + + Track all incoming led record packages (Calibration and Flow) + + + + I should be or + otherwise this method does nothing + + + + + tracking request record processing + + + + + + + QueryCaps can send before login + arrange record for communication (e.g. Baud rate) + + + Running outgoing command + + + + + The backup login level is needed for re-authorization + + + + + SetRegister to loginLvl and wait for response + + + true = process command; false = add command to list. call + to process login command + if is completed and no error occurred it is true + + + + Set + + if null , use password from initialization + true = process command; false = add command to list. call + to process login command + + + + + + Login with identical password as last time + + + + - Initial + + + + + + Get password from server + + + + + + Starting a timer to keep session active, + starting the . + + password string to login + + + + + Starting a timer to keep session active, + starting the . + + password string to login + true = process command; false = add command to list. call + to process login command + + + pass runImmediately for auto login + + + - Avoid retries during login, a retry will lock the Genesis for 2s, 4s, 8s, 16s and so on. + + + + + Building the FW Version string out of 2 bytes of data. + REASON: FLEXNETVERSION is one application which does not follow the same rule of + decimal numbers. Instead it uses hexadecimal digits. After the conversion of this + number to a pure Uint32, needed for comparison of file versions in configuration.json, + the hexadecimal outline will be lost and the comparison with the rowproduct.txt fails. + FW-update needs this information to validate a tested package! + + most significant byte + last significant byte + converted "msb.lsb" as string e.g. "12.34" or "2.0C" + + + + List of all present meter applications + + + + + Core revision of boot code. + + + + + Region (EMEA or NA) and Radio frequency (433 or 868 or null). + + + + + Metrology upgrade permission. + + + + + Reading all applications which can be found in the configuration.json and have been stored + to the meter register dictionary in advance. + The read process covers the FW version and the CRC. + After reading the version, all valid registers are going to be selected. + + + - Removed "Cordonel " from CoreRevision to have the e.g. "1.64" remaining + + + - Read radio frequency + + + + + Automatic login to meter enabled if logged out by lost authentication + + + + + If the timeout timer elapsed to keep the session active, this routine will be called + awaking the . + + + + + + + Thread to keep the connection to the meter open and the session alive, + because on missing communication the meter is going to logout automatically. + This thread will be started at and aborted on + + + + + + + + + Check if EMPTY_PIPE or REBOOT is set + + + + + + Check if alarmToCheck is set on register + + is Flags so you can use more than one alarms (like Alarm.EMPTY_PIPE | Alarm.REBOOT) + + + + + Read out all AlarmStatus register and combine them to one + + + + + + Reset the empty pipe alarm + + + + + Reads the PCB Identification, can be accessed at all login levels, + Read Privilege is always needed to BUGFIX read access to PCB ID + + PCB ID + + + + Get the actual register dictionary + + + + + + Serial number of meter married with PcbId + + + + + + + + + Event to Sync Register on MeterSide and + Fired on Write or read register + + + Register to update with value to update + + + + Write Register, optional: wait for result and validate, + write register will ALWAYS log the data DON'T use for password write + + Data type of Register + Register to change + Value to save + wait until result is ready + check the content of the register by read back + skip retries on this error code return + true on successful operation + + + + Read Register and return byte array + + + expected length for response + skip retries on this error code return + + + + + - Removed throw because the throw always kicks in to + the FW-Update process causing an unpredictable stop! + + + + + Clear Ports + + + + + + + + + + + + + + + + + + + + + + + Logging of register write processes to meter + ATTENTION: DON'T USE FOR PASSWORDS! + + + + + + + Storage of calibration values + + + + + + + + Calibration factors for all channels + + + + + Registers needed to store the calibration for the individual channel + + + + + + + + + + + + Just stop recording without calculation + + + + + + + + + + + + + + List of ongoing measurements, base- and calibration-measurements + + + + + All channels required to process + + + + + + Perpetration of Measurement + SampleRate 10 and Led mode Test + + + + + + + + + + + Testing the flow direction + + + + + + + the first measurement is ALWAYS a FlowTestRecord due to the underlying routine logic. + + + + + The first measurement is ALWAYS a FlowTestRecord. + + + + + + + + + + + Calibration content + + + + + has been calibrated + + + + + Channel for calibration + + + + + Register to store the calibration + + + + + Ctor for calibration factor + + + + + + + set the user readable relative (around 1.0) calibration factor + and convert it to the raw calibration factor for the meter + + + + + + + Read the relative (around 1.0) calibration factor calculated from the actual + meter calibration factor divided by the default calibration factor + + + + + + Genesis internal raw default value (around 15625) + + + + + + Set the meter raw calibration factor (around 15625) + + + + + + Get the meter raw calibration factor (around 15625) + + + + + + Port scanner: + using the Windows Device Manager listed ports, + tries to open the port with an exception if it cannot be accessed (very time consuming), + tries to use the request protocol to detect a Genesis device. + + + + + Genesis for test access + + + + + Auto detected port name + + + + + Port scan result event for message dispatcher to caller + + + + + Stop the port scan + + + + + Number of ports + + + + + Actual Port Counter + + + + + Returns the port scan state + + + + - Initial + + + + + Ctor + + true if one port has been validated + + - Initial + + type of communication port to meter like IrDA + + + + + - Initial. + + + - Remove all meters removed as _meterBatch.Dispose will remove all meters. + + + + + Use initially the port configuration to speed up search, + If configuration file contains wrong port setup than scan all serial ports listed in + the windows device manager, + Read available ports, + Try to open port and connect to Genesis meter. + + slot to search for + configuration of port to speed up search + true if port found + true if one port has been validated + + - Initial + + + - Port type from Ctor, + - Event message changed: + - Overall message: ctr / counts - ongoing scan, + - Actual message: Information to log + + + - Changed exit of function, + - Added configuration file handling. + + + - Remove all meters removed as _meterBatch.Dispose will remove all meters. + + + + + JSON filer reader for generation of register lists + + + + + Registers defined in configuration.json file + + + + + Applications defined in configuration.json file + + + + + Ctor + + the file path for configuration.json as interface description to the meter + + + + Convert file content to register list + + + + + + + + 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 Compare register. + + + + + Looks up a localized string similar to Access request.. + + + + + Looks up a localized string similar to Failed to open.. + + + + + Looks up a localized string similar to Ports listed in the Windows device manager.. + + + + + Looks up a localized string similar to Automatic port scan started.. + + + + + Looks up a localized string similar to Successfully accessed.. + + + + + Looks up a localized string similar to Read register. + + + + + Looks up a localized string similar to Reading registers after update. + + + + + Looks up a localized string similar to Reading registers before update. + + + + + Looks up a localized string similar to Cordonel not detected!. + + + + + Looks up a localized string similar to Scan port. + + + + + Looks up a localized string similar to Write register. + + + + + Read, compare and restore if unequal al registers marked with + equals + ". + The reader will use the byte values as they are unmodified and + will not be rounded and therefor possibly fail the comparison. + For logging the register value will be converted its unit. + + + + + PCB ID for pre update for comparison + + + + + PCB ID for post update for comparison + + + + + Register content before update + + + + + Register content after update + + + + + Register access event for message dispatcher to caller + + + + + Actual Port Counter + + + + + Stop register access + + + + + Genesis meter object + + + + + Extraction of registers names needed to restore after FW-Update + + + + + Extraction of registers names needed to log + + + + + Ctor + + + + + + Assign new genesis after reboot and keep the RegisterRestorer object. + + + + - Initial + + + + + Avoid doubling of register restore on subsequent FW-Update trials. + + true if registers already backed up + + - Initial. + + + + + Avoid doubling of register backup on subsequent FW-Update trials. + + true if registers already backed up + + - Initial. + + + - Extended checks for Genesis is assigned and PCB ID is identical. + + + + + Restore all registers which can be restored and finalize with "safe configuration process". + + true if restoring succeeded + + - Initial. + + + + + Compare all registers which can be restored. + + true if equal + + - Initial. + + + + + Read the registers after the update for comparision. Build the post update registers here, + because an update may have changed the registers (new or removed registers). + + true if registers could be read + + - Initial. + + + - Build here the post update registers, they may have changed due to update! + + + - Clear pre update registers if post indicates a different PCB ID to avoid wrong overwriting of + registers to non matching new meter. + + + + + Get DEFINED registers from GenesisMeter class and read all + registers which are flagged with read write (RW) or read only (RO). + Build a list of all registers being able to restore referenced by name, + flagged with + equals ". + The defined registers are based on the "configuration.json" and + the installed application with a specific version. + + true if registers could be read + + - Initial. + + + - Stored registers before and after update. + + + - Extended register check. + + + - Removed after update registers and moved them to PostUpdateReadRegisters. They may have changed + during the update. + + + - Deny register pre update if _pcbIdPreUpdate indicates, that this has been already processed. + + + + + Register read loop. + All registers needed to be read with from the Genesis meter as they are only + prepared as template and NOT filled with the register data! + The uses the overall process text and value for user information process + bar and text and the actual process text for logging to the report file! + + registers to read + list of registers to read + true if registers could be read + + - Initial. + + + - Set value to actual process message. + + + - Added PCB ID to logging. + + + - Removed PCB ID from logging. + + + + diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.dll new file mode 100644 index 000000000..e7bd81a73 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.dll.config b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.dll.config new file mode 100644 index 000000000..e936cc132 --- /dev/null +++ b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.dll.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.pdb new file mode 100644 index 000000000..fe1535ad6 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.dll new file mode 100644 index 000000000..fd96b8fe6 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.pdb new file mode 100644 index 000000000..a6bac99bc Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore.dll new file mode 100644 index 000000000..8660a2540 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore.pdb new file mode 100644 index 000000000..c8b06a8b3 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.ProtocolCore.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.dll new file mode 100644 index 000000000..6f0d3ffd7 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.pdb new file mode 100644 index 000000000..f4c857f94 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.xml b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.xml new file mode 100644 index 000000000..1782ca8d2 --- /dev/null +++ b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.xml @@ -0,0 +1,618 @@ + + + + Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol + + + + + Commands that the genesis meter support over the request protocol. + Functional Specification Breeze Core and Applications Revision:3.03(12748DOC11 - functional spec ICOE472.pdf) + + + + + 9.2.5 + Command 0x00 (NOP) + This command will do nothing, and will have no response. + + + + + 9.2.6 + Command 0x01 (Query capabilities) + This command will be used by the external computer to discover the protocol parameters that may be varied. + These can then be compared with the external computer’s capabilities and the best match selected. + + + + + response on + + + + + 9.2.7 + Command 0x03 (Set capabilities) + Used to finalize the baud rate and packet settings after negotiation. + The reply will be sent at the currently selected baud rate and packet length, + after which the settings will take effect + + + + + response on + + + + + 9.2.8 + Command 0x05 (Train) + This command will perform target driven data training, that is, where the target is in control of the data flow. + See also command 0x11. + + + + + response on + + + + + 9.2.9 + Command 0x07 (Repeat last) + Used by the external computer to request the last response to be resent, for example if it was found to be corrupted. + Note that the response 0x08 will never be sent, the reply to command 0x07 will be a verbatim resend of the last response. + + + + + response on + + + + + 9.2.10 + Command 0x09 (Read data) + This command makes reads of any random selection of configuration registers, up to the maximum packet size negotiated. + + + + + response on + + + + + 9.2.11 + Command 0x0B (Write data) + This command makes writes to any random selection of configuration registers, up to the maximum packet size negotiated. + + + + + response on + + + + + 9.2.12 + Command 0x0D (Multiple read data) + This command makes reads of one register multiple times, which will be more efficient than performing successive reads using command 0x09. + This command will be available from protocol version 0.40, for earlier protocol versions command 0x09 should be used. + + + + + response on + + + + + 9.2.13 + Command 0x0F (Multiple write data) + This command makes writes to one register multiple times, which will be more efficient than performing successive reads using command 0x0B. + This command will be available from protocol version 0.40, for earlier protocol versions command 0x0B should be used. + + + + + response on + + + + + 9.2.14 + Command 0x11 (Set level) + This command will perform external driven data training, that is, where the external computer is in control of the data flow. + This command will be available from protocol version 0.42, for earlier protocol versions command 0x05 should be used. + + + + + response on + + + + + Config Exchange error codes. + + + + + Transport errors for request protocol + + + + + List of constance for error codes from genesis meter + + + + + everything is fine + + + + + Port is not open + + + + + fails to write to serial port + + + + + fails to read from serial port + + + + + Command is to long + + + + + deeper exception, check out log if this happen + + + + + wrong CRC + + + + + something strange + + + + + Timeout occur + + + + + Acknowledge feedback from meter after communication + + + + + Response missing + + + + + Response command not match the required command + + + + + Lost connection (logged out from meter), a re-authorization is required + to access this command and/or register + + + + + Meter error received, a retry may be useful + + + + + The response record couldn't be decoded + + + + + Valid meter response record + + + + + Holds all errors can occur on the request protocol + + + + + Exception occurred on this command + + + + + Exception occurred while receiving this data + + + + + Error is interpreted and has a define error code + if its not null is Genesis.Protocols.Request.Const.ConfigExErrors + + + + + Error is interpreted and has a define error code + if its not null is Genesis.Protocols.Request.Const.HighLevelError + + + + + Ctor with only message + + error message + + + + Ctor with message and + + error message + + + + + Ctor with message, and + + error message + + + + + + Holds request commands with detail parameters to see processing state + + + + + Indicates the base command + + + + + Indicates the base command + + + + + the register the command refers to. + needed to set Register dictionary to link response with dictionary key + + + + + Command acknowledged + + + + + Retry counter + + + + + Wakeup-message retry counter + + + + + indicates error base on + + + + + indicates error reason on + + + + + Combined error code of base and reason + + + + + Chunk position of error on multiple read/write access + + + + + Data containing the request protocol + + + + + Encoded with transmit protocol, ready to stream to port as is + + + + + Extracted payload of response + + + + + Extracted payload of response + + + + + avoid logging for e.g. password + + + + + error mask to skip retries for functional errors + + + + + Ctor for an base command + + as an byte + Request protocol data for logging + Ready to send data encoded with transmit protocol retries + Timeout for response + to do command with + hiding data in log file to avoid spying of passwords + error mask to skip retries + + + + + if session is gone and a re authorization is necessary + + + + + + Ctor + + this command will be resend after authorization + + + + Command to resend + + + + + a bidirectional protocol support read and write genesis meter registers + needed for + + + + + FIFO of records to be send next + + + + + This is the actual record in the send loop + + + + + Last communication time for session refresh + + + + + + + + + + + Occurs when a meter Response for write password is good + + + + + Event after a register entries changed + + + + + User adjustable additional retry timeout. This is 0 ms for standard operation. + + + + + + + + Process all records needed to be sent, this routine has to be called + to kick-off the communication of all RequestRecords saved to the send + FIFO + + + - Initial + + + - Logging of raw RequestProtocol at time of sending, + - Logging of retries. + + + - Added timeout from transmit protocol. + + + - Added reorder FIFO to bring login at first position + + + - Hide data in logging for e.g. passwords + + + - Retry counter reset if authorization required and this record will be put back into FIFO, + - Retry delay corrected for all errors. + + + - Dynamic retry delay: ResponseTimeoutMs * Retry counter. + + + - Skip retries on specific error mask to speed up communication on functional errors + or informational feed backs (e.g FW not installed 0x0004) + + + + - User adjustable additional retry timeout. + + + - Response timeout message output, + - Initialize acknowledge code before communication to NoResponse. + + + - Response timeout deviated from system time. + + + - Avoid enqueue of _recordInProcess if retry counter is 0. + + + + + Assemble record with transmit protocol and put it to record-send-FIFO, + backup the ready-to-send, which is the dataEncodedWithTransmitProtocol, + to the RequestRecord object for sending including the retry capability. + + Data package with all details like CRC, etc + Command identifier + which is intend + hiding data in log file to avoid spying of passwords + error mask to skip retries + the assembled record for the send FIFO + + - Initial + + + - Logging of raw data (RequestProtocol) moved to ProcessRecordList. + + + - Added timeout from transmit protocol. + + + - Hide data in logging for e.g. passwords + + + - Skip retries on specific error mask to speed up communication on functional errors + or informational feed backs (e.g FW not installed 0x0004) + + + + - Initial skip retry error code set to 0x0004 (e.g FW not installed 0x0004). + + + + + Called after successful response. + Decode and check record, handle Errors and dispatch result. + Invokes if somebody is listening + + + - Initial + + + - First part reworked to extract the response protocol information + + + - Hide data in logging for e.g. passwords + + + - Error code extraction changed for + + + - Wakeup-message will avoid further timeout (during FW update this is in the range + of 15000ms). + - Allow one additional retry on decoding error, which is often the wakeup-message. + + + - Send time reminder for timeout time calculation as output in log-file, + - OnRecordIsDecoded?.Invoke moved before return to assure that the Acknowledge status is set. + + + - Avoid activation of wakeup retry if record is meanwhile acknowledged. + + + + + Method to send basic Commands to Meter. Creates an integer of 4 bytes for the payload. + Supported Commands are: ,, + , and . + Calculate CRCs and Command length and check if command is valid. + Use to push data to Port/Meter. + + + Supported ,, + , and . + + Register to Read or Write, null for + + Data to push into the . + must be null on Read Commands ( ,) + and not null on WriteData ( and ) + + + hiding data in log file to avoid spying of passwords + mask to skip reties on error + an new command just send to port/meter + + - Initial + + + - Reworked to zero pad payload with chunks of 4 bytes, the caller needn't take care of the size + + + - Corrected payload content in request protocol + + + - Hide data in logging for e.g. passwords + + + - Skip retries on specific error mask to speed up communication on functional errors + or informational feed backs (e.g FW not installed 0x0004) + + + + - Multiple read for string split to simple reads. + + + - Default set. + + + + + Analyzes the error code + + + + + Reorders the record list so that first entry is the defined topRegister + + + + + + Checks the active register to access + + + + + + diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol.dll new file mode 100644 index 000000000..e40134eef Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol.pdb new file mode 100644 index 000000000..93dc2cc42 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol.xml b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol.xml new file mode 100644 index 000000000..aed76d31b --- /dev/null +++ b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol.xml @@ -0,0 +1,99 @@ + + + + Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol + + + + + + Layer between CRC16CCITT handler and Events + block trashy telegrams + + + + + Decode data and hold results + + + + + + + + + + + + + + Data fields and definitions for GENESIS streaming protocol + + + + + Default data for + + + + + Calibration data + + + + + Constructor initializes all decoded members with default values + + + + + Flow test data + + + + + Decoding the raw message + + message received as one line delimited with LF + true if decoding was successful and data has been validated + + + + Extracting message from string fields for protocol 'f' + + Separated fields containing the measurement as string + + + + + Extracting message from string fields to individual raw channel for protocol 'g' + + Reference to result structure for raw data for one channel + Separated fields containing the measurement as string + true if protocol is valid + + - Usage of VolumeFactorRawToQm and calculation of AccuDutOverflowVolumeCm + + + + + Extracting message from string fields to individual raw channel for protocol 'g' + + Reference to result structure for raw data for one channel + Separated fields containing the measurement as string + true if protocol is valid + + - Usage of VolumeFactorRawToQm and calculation of AccuDutOverflowVolumeCm + + + + field position in protocol 'f' + + + field position in protocol 'g' + + + field position in protocol 'h' + + + diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Registers.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Registers.dll new file mode 100644 index 000000000..d2043f611 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Registers.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Registers.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Registers.pdb new file mode 100644 index 000000000..41c9c789e Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.Genesis.Registers.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterCore.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterCore.dll new file mode 100644 index 000000000..fac7fcece Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterCore.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterCore.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterCore.pdb new file mode 100644 index 000000000..0a81e25cb Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterCore.pdb differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterCore.xml b/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterCore.xml new file mode 100644 index 000000000..4fad021dd --- /dev/null +++ b/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterCore.xml @@ -0,0 +1,563 @@ + + + + Xylem.Common.Hardware.WaterMeter.WaterMeterCore + + + + + Applies an action to a list of meters in a separate thread + + + + + Starts a new task for a list of meters + + + + + + Apply a single action to a specific meter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Common definition for Meter handling in production and on test benches + + + represents any error state a meter can have + if hash code is 0 everything is running + is Flags, so watch out to check with hasFlag! + + + + + everything is good + + + + + problems on initialization + + + + + problems on Measurement + + + + + Problem on communication with meter + + + + + Problem on optical output on meter + + + + + if pulse can not readout + + + + + no (or no good) reference flow available + + + + + Calibration went wrong + + + + + calibration is out of range. Check documentation from meter to find limitation + + + + + blue screen like error + + + + + Can hold various s and hold connection record to relieve the meter. + Every contact with meter has to go over even if you have just only one. + + + + + holds all + Add and delete with + + + + + Remove Meter from batch and clear communication + + meter to be removed + + + + Get meter from slot number. + + + null if slot has no genesis + + + + Remove all Meters and comports + + + + + + + + + + + Detect all meters + + + + + + login to all meters + + + + + Initialize all meters + + + + + Initialize calibration for all meters + + + + + Initialize measurement for all meters + + + + + Store new calculated calibration to all meters + + + + + Start calibration for all meters + + + + + Start measurement for all meters + + + + + Stop calibration of all meters + + + + + Stop measurements of all meters + + + + + Can hold various s and hold connection record to relieve the meter. + Every contact with meter has to go over even if you have only one. + + + + + ctor + + + + + Registered list of meters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IMeter is the highest level interface between a meter with direct communication to a test bench. + has general things like calibration, measurement and set up routines. + no specific meter stuff in here! + it is always disposable + + + + + occurs when ProcessState has changed + + + + + occurs when ErrorState has changed + + + + + occurs when Init is completed + + + + + occurs when the initialization for Measurement is completed + + + + + occurs when the Measurement is completed + + + + + occurs when the initialization for calibration is completed + + + + + occurs when the calibration is completed + + + + + occurs when meter gets disposed + + + + + unique meter identification + + + + + read-only to see current Process state + + + + + read-only to see current Error state + + + + + the current slot in test-bench + + + + + Setup of intermediate update time for measurement updates and overflow detections, + has to be calculated depending on flow-rate and nominal diameter (DN) + + + + + Open Com ports, try some communication, login + + + + + Setup up meter from config file. just a workaround for vb6 calls. please do not use if your working with .net + + Slot Number for Test bench + don´t send CRC error or telegrams with error flag to caller + + + + Logout from device + + + + + Start Login with password service + + + + + Start Login with out password service and a fixed password + + password for login + + + + set up measurement parameter and set meter into test-mode + + + + + Starting a Measurement + Meter must be initialized + Start to receive record from meter and decode this record into MeasurementRecord + + + + + + Meter must have a active measurement + Stop receive record from meter and decode record + + + + + - simplify the measurement results handling + - getting the main measurement of the entire device (combination of all paths) + - add MeasurementResult + - remove all other methods + + + After a completed measurement , you can grab + + Calculated results + + + + The first measurement is ALWAYS a FlowTestRecord. + + + + + get current state of the running measurement + + leave empty for an aggregate state for all measurements or pass the channel number to check + + + + + set up calibration parameter (calibration factor to default) and set meter into calibration mode + + + + + Starting a Calibration + Meter must be initialized + Start to receive record from meter, decode and store this record + no available + To finish calibration process run + + + + + Meter must have a active for calibration + Stop receive record from meter, decode and store record + record will not calculate or store + + + + + Get current state of the running calibration + + + + + + Calculate calibration factor for static and flying start / stop + Results kept internal and not being saved to meter. + if you want to store them on meter use + + the reference volume is essential for calculation of calibration factor + the reference time is needed for flying start/stop + the required deviation to set the scale apart from 0 + override the default max calibration factor tolerance + + + + Save calculated calibration on meter if no calibration results available an exception occurred + + + + + To control the LCD from meter for status information etc. + + if set to true the meter will show his normal screen, if set to false the next parameter will shown in display + test shown in LCD in byte array as hex value (0x33,0xFF shows 33FF on screen) + + + + Sets Display text and update production database + + New ProductionState + web logging required per default true, for offline usage set to false + + + + Get last Process State + + + + + Add external text to internal log file handling + + text to log + + + + Enable/Disable Raw record Logging + + True = Write Raw record into log/ false = Stop write raw record into log + + + + Check if the meter has any errors that can occur on a measurement + the error reason has find out in the log files + + false = everything is good, detect at least one error + + + + Clear all object set up on runtime + + + + + Interface for Events + you can use without events (so with out ) + + + + + occurs when ProcessState has changed + + + + + occurs when ErrorState has changed + + + + + occurs when Init is completed + + + + + occurs when the initializations for Measurement is completed + + + + + occurs when the Measurement is completed + + + + + occurs when the initializations for calibration is completed + + + + + occurs when the calibration is completed + + + + diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters.dll b/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters.dll new file mode 100644 index 000000000..225a29b35 Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters.dll differ diff --git a/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters.pdb b/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters.pdb new file mode 100644 index 000000000..ef76ae6ee Binary files /dev/null and b/packages/Common/Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters.pdb differ diff --git a/packages/Common/Xylem.Common.Logic.ProductionOrderCore.dll b/packages/Common/Xylem.Common.Logic.ProductionOrderCore.dll new file mode 100644 index 000000000..487acb707 Binary files /dev/null and b/packages/Common/Xylem.Common.Logic.ProductionOrderCore.dll differ diff --git a/packages/Common/Xylem.Common.Logic.ProductionOrderCore.pdb b/packages/Common/Xylem.Common.Logic.ProductionOrderCore.pdb new file mode 100644 index 000000000..355f1d955 Binary files /dev/null and b/packages/Common/Xylem.Common.Logic.ProductionOrderCore.pdb differ diff --git a/packages/Common/Xylem.Common.Logic.RelatePcb.dll b/packages/Common/Xylem.Common.Logic.RelatePcb.dll new file mode 100644 index 000000000..cd1e8a73a Binary files /dev/null and b/packages/Common/Xylem.Common.Logic.RelatePcb.dll differ diff --git a/packages/Common/Xylem.Common.Logic.RelatePcb.pdb b/packages/Common/Xylem.Common.Logic.RelatePcb.pdb new file mode 100644 index 000000000..530a9f45a Binary files /dev/null and b/packages/Common/Xylem.Common.Logic.RelatePcb.pdb differ diff --git a/packages/Common/Xylem.Common.Logic.ServiceCore.dll b/packages/Common/Xylem.Common.Logic.ServiceCore.dll new file mode 100644 index 000000000..018413605 Binary files /dev/null and b/packages/Common/Xylem.Common.Logic.ServiceCore.dll differ diff --git a/packages/Common/Xylem.Common.Logic.ServiceCore.pdb b/packages/Common/Xylem.Common.Logic.ServiceCore.pdb new file mode 100644 index 000000000..98ccd3e28 Binary files /dev/null and b/packages/Common/Xylem.Common.Logic.ServiceCore.pdb differ diff --git a/packages/Common/Xylem.Common.Logic.SoftwareAccessHelper.dll b/packages/Common/Xylem.Common.Logic.SoftwareAccessHelper.dll new file mode 100644 index 000000000..55eb7af3a Binary files /dev/null and b/packages/Common/Xylem.Common.Logic.SoftwareAccessHelper.dll differ diff --git a/packages/Common/Xylem.Common.Logic.SoftwareAccessHelper.pdb b/packages/Common/Xylem.Common.Logic.SoftwareAccessHelper.pdb new file mode 100644 index 000000000..115a58a33 Binary files /dev/null and b/packages/Common/Xylem.Common.Logic.SoftwareAccessHelper.pdb differ diff --git a/packages/Common/Xylem.Common.Metrology.Measurements.dll b/packages/Common/Xylem.Common.Metrology.Measurements.dll new file mode 100644 index 000000000..e5aa5cbbb Binary files /dev/null and b/packages/Common/Xylem.Common.Metrology.Measurements.dll differ diff --git a/packages/Common/Xylem.Common.Metrology.Measurements.pdb b/packages/Common/Xylem.Common.Metrology.Measurements.pdb new file mode 100644 index 000000000..9436905c2 Binary files /dev/null and b/packages/Common/Xylem.Common.Metrology.Measurements.pdb differ diff --git a/packages/Common/Xylem.Common.Metrology.Measurements.xml b/packages/Common/Xylem.Common.Metrology.Measurements.xml new file mode 100644 index 000000000..083f9298f --- /dev/null +++ b/packages/Common/Xylem.Common.Metrology.Measurements.xml @@ -0,0 +1,680 @@ + + + + Xylem.Common.Metrology.Measurements + + + + + + Holds all stuff for calibration of a Genesis Meter + + + + + Record at the start of the measurement + + + + + Record at the end of the measurement + + + + + Backup of intermediate record + + + + + Backup of intermediate record for short term result + This can be used to observe a result (e.g. flow rate) + between two intermediate records. The update time is + set in the ctor by intermediateUpdateTimeS. + + + + + Intermediate record for ongoing measurement + + + + + + + + Holds the accumulated overflow volume, will work only if + is being called cyclically. + The overflow will take place due to the fixed point number format or the + display resolution setting. + + + + + Holds the accumulated overflow time, will work only if + is being called cyclically. + The overflow takes place due to the fixed point number format. + + + + + Logger for debug output of measurement + + + + + Physical slot of the device + + + + + Identification of the channel + + + + + + State machine for one measurement (on one meter and one channel) + + + - add State-machine for better handling + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set flag for starting Calibration. + The next record is going to set the start values. + + + + + + + + + Holds all stuff for calibration of a Genesis Meter + + + + + Calibration default value used to reset meter calibration + + + + + relative value (e.g. 0.05) + + + + + Setup the required tolerance in percent for check (e.g. 5 = +/-5%) + + + + + Check the tolerance of the calibration factor (e.g. 0.95 to 1.05 at 0.05 tolerance) + + + true if the calibration factor is inside the tolerance + + + + + Remind the calibration factor for the register write access + + + FlowTestRecord or CalibrationRecord + Update time needed for overflow detection in seconds + + + + + Calculate calibration factor from reference volume and reference time if set. + The deviation can adjust the factor to a required offset, it may be useful not to calibrate to 0.0). + The Result is NOT being stored to the meter. + CAN BE USED FOR STATIC START/STOP AND FLYING START/STOP PROCEDURE + + reference volume in m³ + reference time in seconds + the deviation to set the calibration in % + calibration factor as relative value or null if calibration factor cannot be calculated + + - The scale factor for calibration is going to adjusted here to keep the measurement result accurate. + + + + + information about measurement results to identify on input depending results + + + + + everything is good + + + + + inconsistent channel assignment + + + + + DUT time zero + + + + + DUT time is invalid + + + + + over flow time is invalid + + + + + REF time zero + + + + + REF time is invalid + + + + + DUT volume zero + + + + + REF volume is unknown + + + + + holds the current state for genesis actions (e.g. calibration,measurement) + + + + + If Measurement/Calibration/Action is not started + + + + + Measurement/Calibration/Action waits for next record package and sore this as start record, + After this Measurement/Calibration/Action IsRunning + + + + + Measurement/Calibration/Action collecting record and wait for end call + + + + + Measurement/Calibration/Action collecting next record record + + + + + Measurement/Calibration/Action waits for next record package and sore this as end record, + After this Measurement/Calibration/Action IsCompleted + + + + + Measurement/Calibration/Action has start and end record and can calculate a result + + + + + ProcessState nearly linear + + + + + meter not initialized + + + + + meter currently in initialization + + + + + initialization done + + + + + meter is on measurement + + + + + Measurement is done (not equal to succeed) + + + + + Meter is prepared for calibration + + + + + meter is on calibration + + + + + need Q from reference meter for calculation + + + + + Calibration is calculated + + + + + Calibration is stored on meter + + + + + + Collection of measurement interfaces + + + + + Event for new action of measurement state + + + + + Get the Type of the measurement record + + + + + + Get the channel no. the measurement collecting record for + + returns 0 when all channels should be collected + + + + Actual state of the measurement + + + + + Clear start, intermediate and end record and set action state to idle + + + + + Adding measurement record to processing FIFO + + + + + + Returns the actual state of the ongoing measurement + + + + + + Fist clear all record from earlier calibrations. + Set flag for starting measurement. + The next record is going to set the start values. + + + + + Stop grabbing record from streaming. + Last Data package is count as end volume (and time) + + + + + Returning the results of the ongoing measurement between two updates. + This can be used to update the screen during measurements like actual flow rate. + The timing will be set by the IntermediateUpdateTimeS. + + + + + + + + Returning the intermediate results of the ongoing measurement from the start of measurement until now! + + + + + + + + Returning the results of the measurements from start until stop. + + Measurement duration is needed explicit for flying start/stop procedure + reference volume is ALWAYS needed for scale and deviation + + + + + Sets a marker that a mesaurment start looking for an intermediate record + + + + + + interface for all incoming streaming protocol + to simplify measurements + + + + + Get volume of the record + + + + + Get time stamp of the record from meter + + + + + Get Data + + + + + + Get the channel the record comes from + + returns 0 if the channel is unavailable for this type of record (e.g. protocol f) + + + + Get overflow volume + + + + + + get overflow time + + + + + + + struct to hold a measurement record + + + + + physical channel 1, 2 and 3 + + + + + actual volume in cubic meters + + + + + Overflow volume + + + + + time converted to seconds + + + + + Overflow time + + + + + CRC16 CCITT + + + + + record is valid + + + + + Mark package as start, end, intermediate or not sync + + + + + time when package was decoded + + + + + time when package was received + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Channel being needed for later analysis of channel number + as feedback to the caller + + + + + Accumulated overflow volume in cubic-meters, + the DUT internal range can overflow due to + the limitation of the number or the display resolution. + + + + + Accumulated overflow time in seconds, + the number-range can cause an timer overflow. + + + + + DUT start record + + + + + DUT end record + + + + + Volume = (End Volume + overflow) - Start Volume in cubic meters, + real DUT measurement uncorrected + + + + + DUT measurement corrected if REF time is given + + + + + REF volume in cubic meters + + + + + Time = (End time + overflow) - Start time in seconds, + real DUT measurement uncorrected + + + + + REF time in seconds + + + + + Flow rate in cubic meters per hour based on DUT + + + + + Flow rate in cubic meters per hour based on REF + + + + + Scale factor between REF volume and DUT volume + this will use the + /// + + + + Deviation between DUT volume and REF volume relative, + this will use the + + + + + Deviation between DUT volume and REF volume in percent, + this will use the + + + + + Calculation of measurement results, overflow will be taken into account: + - DutVolumeCm in cubic meters: + DUT volume measurement uncorrected, direct measurement from the DUT, + - CorrectedDutVolumeCm in cubic meters: + equals the uncorrected DutVolumeCm if REF time is unknown, + else it is the volume calculated from the DUT flow-rate with the REF time, + - DutTimeS in seconds: + DUT time measurement, + - DutFlowRateCmPh in cubic meters per hour: + based on DUT volume and DUT time uncorrected, + - RefFlowRateCmPh in cubic meters per hour: + REF volume and REF time being used, + - ScaleFactorRefToDut unit less: + calculated with absolute and corrected DUT volume and REF volume + needed for calibration, is higher than one if DUT volume is less than the REF volume, + can be directly used to calculate the new scale by multiplication with the current scale, + - DeviationDutToRefRel unit less: + calculated with absolute and corrected DUT volume and REF volume + deviation needed for verification relative of DUT to REF, + - DeviationDutToRefPer in percent: + calculated with absolute and corrected DUT volume and REF volume + deviation needed for verification of DUT to REF in percent. + + + - Scale factor calculation added, + - Deviation calculation added. + + + - Flow rate calculation added, + - Slot added. + + + - RefVolumeCm, RefTimeSS and absVolumeQm added, + - Slot removed. + + + - FlowRateQmPh split to DutFlowRateCmPh and RefFlowRateCmPh, + - CorrectedDutVolumeCm added, + - input channel compared with start and end record channels. + + + - State implemented. + + + - Check and states for DUT time zero, DUT volume zero, over flow volume below zero, + start and end record time below zero. + + + - Supported static start/stop with DUT- and REF-volume, this is time independent but the + DUT- and over-flow-times shouldn't be negative or zero. + - Meter renamed to DUT (Device under Test). + + Start of measurement record set + End of measurement record set + accumulated overflow volume, will add to result volume + accumulated overflow time, will add to result time + measured REF time + REF volume + physical channel of measurement path (0 for main measurement) + + + diff --git a/packages/Common/Xylem.Common.Ui.CordonelPreadjustmentUi.exe b/packages/Common/Xylem.Common.Ui.CordonelPreadjustmentUi.exe new file mode 100644 index 000000000..cb33f5b97 Binary files /dev/null and b/packages/Common/Xylem.Common.Ui.CordonelPreadjustmentUi.exe differ diff --git a/packages/Common/Xylem.Common.Ui.CordonelPreadjustmentUi.exe.config b/packages/Common/Xylem.Common.Ui.CordonelPreadjustmentUi.exe.config new file mode 100644 index 000000000..e936cc132 --- /dev/null +++ b/packages/Common/Xylem.Common.Ui.CordonelPreadjustmentUi.exe.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Common/Xylem.Common.Ui.CordonelPreadjustmentUi.pdb b/packages/Common/Xylem.Common.Ui.CordonelPreadjustmentUi.pdb new file mode 100644 index 000000000..184f0bc20 Binary files /dev/null and b/packages/Common/Xylem.Common.Ui.CordonelPreadjustmentUi.pdb differ diff --git a/packages/Common/Xylem.Common.Ui.GenesisToolBox.exe b/packages/Common/Xylem.Common.Ui.GenesisToolBox.exe new file mode 100644 index 000000000..bd2f120bb Binary files /dev/null and b/packages/Common/Xylem.Common.Ui.GenesisToolBox.exe differ diff --git a/packages/Common/Xylem.Common.Ui.GenesisToolBox.exe.config b/packages/Common/Xylem.Common.Ui.GenesisToolBox.exe.config new file mode 100644 index 000000000..9dafed426 --- /dev/null +++ b/packages/Common/Xylem.Common.Ui.GenesisToolBox.exe.config @@ -0,0 +1,68 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Common/Xylem.Common.Ui.GenesisToolBox.pdb b/packages/Common/Xylem.Common.Ui.GenesisToolBox.pdb new file mode 100644 index 000000000..44247dd50 Binary files /dev/null and b/packages/Common/Xylem.Common.Ui.GenesisToolBox.pdb differ diff --git a/packages/Common/Xylem.Common.Utils.ByteArrayStyle.dll b/packages/Common/Xylem.Common.Utils.ByteArrayStyle.dll new file mode 100644 index 000000000..34cac033f Binary files /dev/null and b/packages/Common/Xylem.Common.Utils.ByteArrayStyle.dll differ diff --git a/packages/Common/Xylem.Common.Utils.ByteArrayStyle.pdb b/packages/Common/Xylem.Common.Utils.ByteArrayStyle.pdb new file mode 100644 index 000000000..50106e925 Binary files /dev/null and b/packages/Common/Xylem.Common.Utils.ByteArrayStyle.pdb differ diff --git a/packages/Common/Xylem.Common.Utils.Crc16Ccitt.dll b/packages/Common/Xylem.Common.Utils.Crc16Ccitt.dll new file mode 100644 index 000000000..a88a7a9fa Binary files /dev/null and b/packages/Common/Xylem.Common.Utils.Crc16Ccitt.dll differ diff --git a/packages/Common/Xylem.Common.Utils.Crc16Ccitt.pdb b/packages/Common/Xylem.Common.Utils.Crc16Ccitt.pdb new file mode 100644 index 000000000..4f8c88ef1 Binary files /dev/null and b/packages/Common/Xylem.Common.Utils.Crc16Ccitt.pdb differ diff --git a/packages/Common/Xylem.Common.Utils.Logging.dll b/packages/Common/Xylem.Common.Utils.Logging.dll new file mode 100644 index 000000000..fb21d7da9 Binary files /dev/null and b/packages/Common/Xylem.Common.Utils.Logging.dll differ diff --git a/packages/Common/Xylem.Common.Utils.Logging.pdb b/packages/Common/Xylem.Common.Utils.Logging.pdb new file mode 100644 index 000000000..1520bd936 Binary files /dev/null and b/packages/Common/Xylem.Common.Utils.Logging.pdb differ diff --git a/packages/Common/Xylem.Common.Utils.ProcessExec.dll b/packages/Common/Xylem.Common.Utils.ProcessExec.dll new file mode 100644 index 000000000..31359339f Binary files /dev/null and b/packages/Common/Xylem.Common.Utils.ProcessExec.dll differ diff --git a/packages/Common/Xylem.Common.Utils.ProcessExec.pdb b/packages/Common/Xylem.Common.Utils.ProcessExec.pdb new file mode 100644 index 000000000..75da1c836 Binary files /dev/null and b/packages/Common/Xylem.Common.Utils.ProcessExec.pdb differ diff --git a/packages/Common/XylemCommonUiLegacyGenCtl.dll b/packages/Common/XylemCommonUiLegacyGenCtl.dll new file mode 100644 index 000000000..ba978be90 Binary files /dev/null and b/packages/Common/XylemCommonUiLegacyGenCtl.dll differ diff --git a/packages/Common/XylemCommonUiLegacyGenCtl.dll.config b/packages/Common/XylemCommonUiLegacyGenCtl.dll.config new file mode 100644 index 000000000..e936cc132 --- /dev/null +++ b/packages/Common/XylemCommonUiLegacyGenCtl.dll.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Common/XylemCommonUiLegacyGenCtl.pdb b/packages/Common/XylemCommonUiLegacyGenCtl.pdb new file mode 100644 index 000000000..4b8c5c355 Binary files /dev/null and b/packages/Common/XylemCommonUiLegacyGenCtl.pdb differ diff --git a/packages/Common/configuration.json b/packages/Common/configuration.json new file mode 100644 index 000000000..d2daeafe7 --- /dev/null +++ b/packages/Common/configuration.json @@ -0,0 +1,16726 @@ +{ + "CUSTOMER": { + "id": 9, + "version": { + "first": 1, + "last": 152 + }, + "registers": { + "AlarmStatus0": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 0-3.", + "version": { + "first": 1, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus1": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 4-7.", + "version": { + "first": 1, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "TriggerAlarmCancel": { + "id": 2, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Any set bits manually clear the corresponding alarm.", + "version": { + "first": 1, + "last": 110 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Any set bits manually clear the corresponding alarm.", + "version": { + "first": 111, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus2": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 8-11.", + "version": { + "first": 26, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus3": { + "id": 4, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 12-15.", + "version": { + "first": 26, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus4": { + "id": 5, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 16-19.", + "version": { + "first": 26, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus5": { + "id": 6, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 20-23.", + "version": { + "first": 26, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus6": { + "id": 7, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 24-27.", + "version": { + "first": 26, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus7": { + "id": 8, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 28-31.", + "version": { + "first": 26, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmEnableMask": { + "id": 9, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which are being monitored.", + "version": { + "first": 26, + "last": 110 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which are being monitored.", + "version": { + "first": 111, + "last": 152 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "AlarmBroadcastMask": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which will generate events.", + "version": { + "first": 26, + "last": 110 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which will generate events.", + "version": { + "first": 111, + "last": 152 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "AlarmVisualMask": { + "id": 11, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which are displayed with IDs and the alarm icon.", + "version": { + "first": 110, + "last": 110 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which are displayed with IDs and the alarm icon.", + "version": { + "first": 111, + "last": 152 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "AlarmVisualAutoClearMask": { + "id": 12, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Alarms that have their display automatically cleared", + "version": { + "first": 110, + "last": 110 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Alarms that have their display automatically cleared", + "version": { + "first": 111, + "last": 152 + }, + "statictype": "static" + } + ] + }, + "ExcessFlowVolumeThreshold": { + "id": 13, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which broken pipe alarm is set in 1/256 l/h", + "version": { + "first": 61, + "last": 110 + }, + "values": { + "default": 639590, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which broken pipe alarm is set in 1/256 l/h", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 639590, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which broken pipe alarm is set in 1/256 l/h", + "version": { + "first": 119, + "last": 132 + }, + "values": { + "default": 639590, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which broken pipe alarm is set in 1/256 l/h", + "version": { + "first": 133, + "last": 152 + }, + "values": { + "default": 639999, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "LeakTimeThreshold": { + "id": 14, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for leak alarm in minutes", + "version": { + "first": 61, + "last": 110 + }, + "values": { + "default": 10080, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for leak alarm in minutes", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 10080, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for leak alarm in minutes", + "version": { + "first": 119, + "last": 152 + }, + "values": { + "default": 360, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + } + ] + }, + "ReverseFlowTimeThreshold": { + "id": 15, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of measurements in reverse flow required to set reverse flow alarm", + "version": { + "first": 61, + "last": 110 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of measurements in reverse flow required to set reverse flow alarm", + "version": { + "first": 111, + "last": 142 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of measurements in reverse flow required to set reverse flow alarm", + "version": { + "first": 143, + "last": 152 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "Locale": { + "id": 18, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Timezone in which this application is set to run.", + "version": { + "first": 24, + "last": 152 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "AppArrangement": { + "id": 19, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "A name for the arrangement of applications on the meter", + "version": { + "first": 130, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "RebootCount": { + "id": 20, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of times the meter has rebooted", + "version": { + "first": 73, + "last": 110 + }, + "values": { + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of times the meter has rebooted", + "version": { + "first": 111, + "last": 152 + }, + "values": { + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ExcessFlowTimeThreshold": { + "id": 21, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for broken pipe alarm in minutes", + "version": { + "first": 80, + "last": 110 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for broken pipe alarm in minutes", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for broken pipe alarm in minutes", + "version": { + "first": 119, + "last": 152 + }, + "values": { + "default": 180, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + } + ] + }, + "LeakFlowThreshold": { + "id": 22, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which leak alarm can be set in 1/256 l/h", + "version": { + "first": 80, + "last": 110 + }, + "values": { + "default": 12800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which leak alarm can be set in 1/256 l/h", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 12800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which leak alarm can be set in 1/256 l/h", + "version": { + "first": 119, + "last": 132 + }, + "values": { + "default": 5529, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which leak alarm can be set in 1/256 l/h", + "version": { + "first": 133, + "last": 152 + }, + "values": { + "default": 6399, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MfgCharge": { + "id": 23, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Charge in uAs available in manufacturing (read only)", + "version": { + "first": 84, + "last": 152 + }, + "values": { + "default": 181440000 + }, + "statictype": "static" + } + ] + }, + "TemperatureHighThreshold": { + "id": 24, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High temperature alarm threshold in 0.1°C", + "version": { + "first": 88, + "last": 100 + }, + "values": { + "default": 500, + "minimum": 0, + "maximum": 800 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High temperature alarm threshold in 0.1°C", + "version": { + "first": 101, + "last": 110 + }, + "values": { + "default": 500, + "minimum": 0, + "maximum": 800 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High temperature alarm threshold in 0.1°C", + "version": { + "first": 111, + "last": 152 + }, + "values": { + "default": 500, + "minimum": 0, + "maximum": 800 + }, + "statictype": "static" + } + ] + }, + "TemperatureHighDelay": { + "id": 25, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for high temperature alarm in seconds", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for high temperature alarm in seconds", + "version": { + "first": 111, + "last": 152 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + } + ] + }, + "TemperatureLowThreshold": { + "id": 26, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low temperature alarm threshold in 0.1°C", + "version": { + "first": 88, + "last": 100 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low temperature alarm threshold in 0.1°C", + "version": { + "first": 101, + "last": 110 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low temperature alarm threshold in 0.1°C", + "version": { + "first": 111, + "last": 152 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "TemperatureLowDelay": { + "id": 27, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for low temperature alarm in seconds", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for low temperature alarm in seconds", + "version": { + "first": 111, + "last": 152 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + } + ] + }, + "PressureHighThreshold": { + "id": 28, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High pressure alarm threshold in Pa", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 1600000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High pressure alarm threshold in Pa", + "version": { + "first": 111, + "last": 121 + }, + "values": { + "default": 1600000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High pressure alarm threshold in Pa", + "version": { + "first": 122, + "last": 152 + }, + "values": { + "default": 1600000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + } + ] + }, + "PressureHighDelay": { + "id": 29, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for high pressure alarm in seconds", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 300, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for high pressure alarm in seconds", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 300, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for high pressure alarm in seconds", + "version": { + "first": 119, + "last": 152 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + } + ] + }, + "PressureLowThreshold": { + "id": 30, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low pressure alarm threshold in Pa", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 30000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low pressure alarm threshold in Pa", + "version": { + "first": 111, + "last": 121 + }, + "values": { + "default": 30000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low pressure alarm threshold in Pa", + "version": { + "first": 122, + "last": 152 + }, + "values": { + "default": 30000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + } + ] + }, + "PressureLowDelay": { + "id": 31, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for low pressure alarm in seconds", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 300, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for low pressure alarm in seconds", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 300, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for low pressure alarm in seconds", + "version": { + "first": 119, + "last": 152 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + } + ] + }, + "StoreConfiguration": { + "id": 32, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Store all configuration items in non-volatile memory.", + "version": { + "first": 88, + "last": 130 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Store all configuration items in non-volatile memory.", + "version": { + "first": 131, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "SerialNumber": { + "id": 33, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Customer serial number string", + "version": { + "first": 139, + "last": 152 + }, + "statictype": "static" + } + ] + }, + "BackupCalendarSeconds": { + "id": 34, + "details": [ + { + "type": "time_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "NA", + "lvl8": "NA" + }, + "description": "Internal backup of calendar seconds", + "version": { + "first": 145, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "InstallationTime": { + "id": 35, + "details": [ + { + "type": "time_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time meter was determined to have been installed. 0 means not installed", + "version": { + "first": 147, + "last": 152 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "LocaleDecimalPoint": { + "id": 36, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Read to view the string used as a decimal point for this locale", + "version": { + "first": 151, + "last": 152 + }, + "statictype": "dynamic" + } + ] + }, + "LocaleThousandsSeparator": { + "id": 37, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Read to view the string used as a thousands separarator for this locale", + "version": { + "first": 151, + "last": 152 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "REBOOT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "REBOOT_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "LOW_BATTERY": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "LOW_BATTERY_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + }, + "VERY_LOW_BATTERY": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 4 + }, + "VERY_LOW_BATTERY_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 5 + }, + "CONFIG_ERROR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 6 + }, + "CONFIG_ERROR_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 7 + }, + "EMPTY_PIPE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 8 + }, + "EMPTY_PIPE_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 9 + }, + "MAGNETIC_TAMPER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 10 + }, + "MAGNETIC_TAMPER_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 11 + }, + "REVERSE_FLOW": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 12 + }, + "REVERSE_FLOW_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 13 + }, + "SUSPECT_LEAK": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 14 + }, + "SUSPECT_LEAK_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 15 + }, + "BROKEN_PIPE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 16 + }, + "BROKEN_PIPE_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 17 + }, + "LOW_PRESSURE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 18 + }, + "LOW_PRESSURE_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 19 + }, + "HIGH_PRESSURE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 20 + }, + "HIGH_PRESSURE_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 21 + }, + "LOW_TEMPERATURE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 22 + }, + "LOW_TEMPERATURE_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 23 + }, + "HIGH_TEMPERATURE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 24 + }, + "HIGH_TEMPERATURE_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 25 + }, + "RADIO_ERROR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 26 + }, + "RADIO_ERROR_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 27 + }, + "METROLOGY_PARAMS": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 28 + }, + "METROLOGY_PARAMS_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 29 + }, + "METROLOGY_MEASURE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 30 + }, + "METROLOGY_MEASURE_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 31 + }, + "UNALLOCATED_6": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 32 + }, + "UNALLOCATED_6_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 33 + }, + "UNALLOCATED_7": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 34 + }, + "UNALLOCATED_7_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 35 + }, + "UNALLOCATED_8": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 36 + }, + "UNALLOCATED_8_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 37 + }, + "UNALLOCATED_9": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 38 + }, + "UNALLOCATED_9_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 39 + }, + "UNALLOCATED_10": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 40 + }, + "UNALLOCATED_10_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 41 + }, + "UNALLOCATED_11": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 42 + }, + "UNALLOCATED_11_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 43 + }, + "UNALLOCATED_12": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 44 + }, + "UNALLOCATED_12_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 45 + }, + "UNALLOCATED_13": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 46 + }, + "UNALLOCATED_13_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 47 + }, + "UNALLOCATED_14": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 48 + }, + "UNALLOCATED_14_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 49 + }, + "UNALLOCATED_15": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 50 + }, + "UNALLOCATED_15_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 51 + }, + "UNALLOCATED_16": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 52 + }, + "UNALLOCATED_16_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 53 + }, + "UNALLOCATED_17": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 54 + }, + "UNALLOCATED_17_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 55 + }, + "UNALLOCATED_18": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 56 + }, + "UNALLOCATED_18_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 57 + }, + "UNALLOCATED_19": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 58 + }, + "UNALLOCATED_19_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 59 + }, + "UNALLOCATED_20": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 60 + }, + "UNALLOCATED_20_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 61 + }, + "UNALLOCATED_21": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 62 + }, + "UNALLOCATED_21_STOP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 63 + }, + "UNKNOWN_PARAMETER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 64 + }, + "LOCALE_UNDEFINED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 65 + }, + "NO_SUCH_ALARM": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 66 + }, + "OUT_OF_RANGE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 67 + }, + "NOT_IMPLEMENTED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 68 + }, + "BAD_CONFIG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 69 + }, + "DID_NOT_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 70 + }, + "STORE_PENDING": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 71 + } + } + }, + "FUNCTEST": { + "id": 10, + "version": { + "first": null, + "last": null + }, + "registers": { + "GP30Test": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "LCDTest": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "Iloop": { + "id": 2, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "Pulse": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "Pressure": { + "id": 4, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "BatteryVoltage": { + "id": 5, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "SupplyVoltage": { + "id": 6, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "Temperature": { + "id": 7, + "details": [ + { + "type": "int16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "RFID": { + "id": 8, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "OpticalOutput": { + "id": 9, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "Radio": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "MultiTest": { + "id": 11, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "NFCUID": { + "id": 12, + "details": [ + { + "type": "uint64_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "CPUTest": { + "id": 13, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + } + }, + "status": { + "BAD_CONFIG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "BAD_TEST": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "NO_RESULT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + } + } + }, + "OPTICALPORT": { + "id": 5, + "version": { + "first": 1, + "last": 55 + }, + "registers": { + "BaudRateCapabilities": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Bitmask of supported rates on the given hardware.", + "version": { + "first": 2, + "last": 55 + }, + "statictype": "static" + } + ] + }, + "PacketSizeCapabilities": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Bitmask of supported packet sizes.", + "version": { + "first": 2, + "last": 55 + }, + "values": { + "default": 64 + }, + "statictype": "static" + } + ] + }, + "ProtocolVersion": { + "id": 2, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Version number as fixed point 16.16 format BCD.", + "version": { + "first": 2, + "last": 55 + }, + "statictype": "static" + } + ] + }, + "BaudRateSelected": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Baud rate in bits per second.", + "version": { + "first": 2, + "last": 55 + }, + "statictype": "dynamic" + } + ] + }, + "PacketSizeSelected": { + "id": 4, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Packet size in bytes.", + "version": { + "first": 2, + "last": 55 + }, + "statictype": "dynamic" + } + ] + }, + "ExternalUartControl": { + "id": 5, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "WO", + "lvl2": "WO", + "lvl3": "WO", + "lvl4": "WO", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Surrenders the UART to another application", + "version": { + "first": 49, + "last": 55 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "PAYLOAD_COUNT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "INVALID_SUBREASON": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "INVALID_BAUDRATE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "INVALID_BUFFERSIZE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + }, + "CRCFAILURE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 4 + }, + "UNRECOGNISEDCMD": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 5 + }, + "FRAMING": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 6 + }, + "OVERFLOW": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 7 + }, + "PACKETTIMEOUT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 8 + }, + "INVALIDESCAPE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 9 + }, + "UNKNOWN_PARAMETER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 10 + }, + "TRAINING_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 11 + }, + "NOBREAK": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 12 + } + } + }, + "SENSUSRADIO": { + "id": 16, + "version": { + "first": 100, + "last": 477 + }, + "registers": { + "TxInterval": { + "id": 0, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "OmTxInterval": { + "id": 1, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 3600, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "LatInterval": { + "id": 2, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 3, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "WakeupInterval": { + "id": 3, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 3, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "MbusState": { + "id": 4, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 7, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FrequencyIndicator": { + "id": 5, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 433, + "minimum": 433, + "maximum": 868 + }, + "statictype": "static" + } + ] + }, + "FrequencyOffset": { + "id": 6, + "details": [ + { + "type": "int16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": -32768, + "maximum": 32767 + }, + "statictype": "static" + } + ] + }, + "PowerLevel": { + "id": 7, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 127 + }, + "statictype": "static" + } + ] + }, + "SystemState": { + "id": 9, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "RadioAddress": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "UtcTimeOffset": { + "id": 11, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": -32768, + "maximum": 32767 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "SentBytesCounter": { + "id": 12, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + } + ] + }, + "ReceivedBytesCounter": { + "id": 13, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + } + ] + }, + "ResetCounter": { + "id": 14, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BootLoaderState": { + "id": 15, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "statictype": "static" + } + ] + }, + "LeakFlowThreshold": { + "id": 16, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 25, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "LeakFlowTimeThreshold": { + "id": 17, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 360, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BrokenPipeFlowThreshold": { + "id": 18, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 2500, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BrokenPipeFlowTimeThreshold": { + "id": 19, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 180, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureMaxThreshold": { + "id": 20, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 160, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureMinThreshold": { + "id": 21, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 3, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureLimitTimeMaxThreshold": { + "id": 22, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureLimitTimeMinThreshold": { + "id": 23, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureMeasurePeriod": { + "id": 24, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 60, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureUnit": { + "id": 25, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureGaugeOffset": { + "id": 26, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureMaxThreshold": { + "id": 27, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 50, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureMinThreshold": { + "id": 28, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureTimeMaxThreshold": { + "id": 29, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureTimeMinThreshold": { + "id": 30, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureMeasurePeriod": { + "id": 31, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 60, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureUnit": { + "id": 32, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PulseOutWidth": { + "id": 33, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An enumerator defining the currently active PulseWidth (0 ... 8 for non testmode values and 9 ... 15 for testmode)", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 15 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PulseOutDivisor": { + "id": 34, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 1000 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PulseOutMode": { + "id": 35, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 3 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "CurrentLoopMax": { + "id": 36, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "CurrentLoopSource": { + "id": 37, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "MainAlarmMask": { + "id": 38, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 207, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ExtendedAlarmMask": { + "id": 39, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 60, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "HistoricalAlarmsDays": { + "id": 40, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 29, + "minimum": 0, + "maximum": 250 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TestModeTime": { + "id": 43, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + } + ] + }, + "EncryptionKey": { + "id": 44, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "statictype": "static" + } + ] + }, + "Authentification": { + "id": 45, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "statictype": "static" + } + ] + }, + "UpgFWVersion": { + "id": 46, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "CustomerText": { + "id": 47, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "RadioLastReadTime": { + "id": 48, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "LowBatDateTime": { + "id": 49, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "VeryLowBatDateTime": { + "id": 50, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "Unit": { + "id": 51, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ExtendedUnitFlags": { + "id": 52, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "OTAControlFlags": { + "id": 53, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "Tfx_Structure": { + "id": 54, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "statictype": "dynamic" + } + ] + }, + "Dewa_Structure": { + "id": 55, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "DataLogContents": { + "id": 56, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 201335811, + "minimum": 3, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "DataLogPeriod": { + "id": 57, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 60, + "minimum": 1, + "maximum": 1440 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "AverageFlowPeriod": { + "id": 58, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 5, + "minimum": 1, + "maximum": 60 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FixedDateReadingContents": { + "id": 59, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 201335811, + "minimum": 3, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FixedDateDayOfMonth": { + "id": 60, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 1, + "minimum": 1, + "maximum": 28 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "MetroRadioLifeTimeCounter": { + "id": 61, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "PowerLevelOption": { + "id": 62, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 127 + }, + "statictype": "static" + } + ] + }, + "ImpedanceCodeNew": { + "id": 63, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 32767 + }, + "statictype": "static" + } + ] + }, + "ImpedanceCodeOption": { + "id": 64, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 32767 + }, + "statictype": "static" + } + ] + }, + "IrDAModulePresent": { + "id": 65, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + } + ] + }, + "StoreConfiguration": { + "id": 66, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + } + ] + }, + "LifeTimeSeconds": { + "id": 67, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 100, + "last": 477 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "DutyCycleCredit": { + "id": 68, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 412, + "last": 477 + }, + "values": { + "default": 4320000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "ActivityCredit": { + "id": 69, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": 412, + "last": 477 + }, + "values": { + "default": 1000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "PersistenceGroup1": { + "id": 70, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Storage item for HistoricalErrorLimitCounters Reverse(1, hi) and Leak(0, lo)", + "version": { + "first": 437, + "last": 477 + }, + "values": { + "default": 16711935, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PersistenceGroup2": { + "id": 71, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Storage item for HistoricalErrorLimitCounters Magnet(3, hi) and Air(2, lo)", + "version": { + "first": 437, + "last": 477 + }, + "values": { + "default": 16711935, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PersistenceGroup3": { + "id": 72, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Storage item for HistoricalErrorLimitCounters PressureMin(5, hi) and PressureMax(4, lo)", + "version": { + "first": 437, + "last": 477 + }, + "values": { + "default": 16711935, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PersistenceGroup4": { + "id": 73, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Storage item for HistoricalErrorLimitCounters TempMin(7, hi) and TempMax(6, lo)", + "version": { + "first": 437, + "last": 477 + }, + "values": { + "default": 16711935, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + } + }, + "status": { + "UNKNOWN_PARAMETER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "BAD_CONFIG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "NO_CHANGE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + } + } + }, + "CONFIGEXCHANGE": { + "id": 4, + "version": { + "first": 3, + "last": 219 + }, + "registers": { + "Privilege": { + "id": 0, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Written to set the login level, followed by the password. Note, this can be read at any login level including 0.", + "version": { + "first": 3, + "last": 219 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 8 + }, + "statictype": "dynamic" + } + ] + }, + "Password": { + "id": 1, + "details": [ + { + "type": "uint96_t", + "privilege": { + "lvl1": "WO", + "lvl2": "WO", + "lvl3": "WO", + "lvl4": "WO", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Password for logging in, requires 3 consecutive writes", + "version": { + "first": 3, + "last": 219 + }, + "statictype": "dynamic" + } + ] + }, + "FOpen": { + "id": 2, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to open a file on the meter, handle returned", + "version": { + "first": 20, + "last": 219 + }, + "statictype": "dynamic" + } + ] + }, + "FClose": { + "id": 3, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to close a file on the meter", + "version": { + "first": 20, + "last": 219 + }, + "statictype": "dynamic" + } + ] + }, + "FRead": { + "id": 4, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to read bytes from an open file", + "version": { + "first": 20, + "last": 219 + }, + "statictype": "dynamic" + } + ] + }, + "FWrite": { + "id": 5, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to write bytes to an open file", + "version": { + "first": 20, + "last": 219 + }, + "statictype": "dynamic" + } + ] + }, + "FSeek": { + "id": 6, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to seek within an open file", + "version": { + "first": 20, + "last": 219 + }, + "statictype": "dynamic" + } + ] + }, + "FTell": { + "id": 7, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to determine position within an open file", + "version": { + "first": 20, + "last": 219 + }, + "statictype": "dynamic" + } + ] + }, + "Remove": { + "id": 8, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to delete a file", + "version": { + "first": 20, + "last": 219 + }, + "statictype": "dynamic" + } + ] + }, + "FEOF": { + "id": 9, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this determine whether the current position in an open file is the end of the file", + "version": { + "first": 20, + "last": 219 + }, + "statictype": "dynamic" + } + ] + }, + "Catalogue": { + "id": 10, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Returns a list of files in the filesystem that matches a string containing wildcards passed in", + "version": { + "first": 49, + "last": 219 + }, + "statictype": "dynamic" + } + ] + }, + "PCBSerialNumber": { + "id": 12, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "String containing the PCB serial number. Note, this can be read at any login level including 0", + "version": { + "first": 59, + "last": 219 + }, + "statictype": "static" + } + ] + }, + "ConfigAccessRights": { + "id": 13, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bitmask of login levels permitted to manipulate dangerous files", + "version": { + "first": 59, + "last": 219 + }, + "statictype": "static" + } + ] + }, + "FFlush": { + "id": 14, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to flush write buffers to an open file", + "version": { + "first": 66, + "last": 219 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "LOCKED_OUT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "AUTHENTICATION_FAILURE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "ACCESS_DENIED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "UNKNOWN_PARAMETER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + }, + "IN_USE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 4 + }, + "SIZES_DONT_MATCH": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 5 + }, + "CANT_READ_CONFIG_FILE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 6 + }, + "USER_NOT_KNOWN": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 7 + }, + "CANT_CREATE_CONFIG_FILE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 8 + }, + "STORE_DIDNT_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 9 + }, + "STORE_CORRUPT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 10 + }, + "EXPECTED_WRITE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 11 + }, + "EXPECTED_READ": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 12 + }, + "STOP_CYCLING": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 13 + }, + "TOO_MANY_OPEN": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 14 + }, + "NEVER_OPENED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 15 + }, + "FILE_PROTECTED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 16 + }, + "PARTIAL_RECALL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 17 + }, + "DEFAULT_PASSWORD_USED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 18 + } + } + }, + "NFC": { + "id": 21, + "version": { + "first": 1, + "last": 53 + }, + "registers": { + "EraseRMA": { + "id": 0, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RW" + }, + "description": "Writing TRUE to this register erases the RMA area", + "version": { + "first": 7, + "last": 53 + }, + "statictype": "dynamic" + } + ] + }, + "ForceUpdate": { + "id": 1, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write to this to force an update of some data. 0 - NDEF readings, 1 - NDEF details, 2 - RMA details", + "version": { + "first": 49, + "last": 53 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "BAD_CONFIG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "NDEF_WRITE_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "NDEF_VERIFY_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "NDEF_UPDATE_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + }, + "RMA_WRITE_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 4 + }, + "RMA_VERIFY_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 5 + }, + "RMA_BAD_ENTRY": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 6 + }, + "INIT_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 7 + }, + "NDEF_CONFIG_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 8 + }, + "RMA_CONFIG_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 9 + }, + "NDEF_START_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 10 + }, + "RMA_START_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 11 + } + } + }, + "SYSTEM": { + "id": 0, + "version": { + "first": 141, + "last": 498 + }, + "registers": { + "TriggerUpgrade": { + "id": 0, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Writing TRUE to this register internally calls SysTriggerUpgrade() then returns the result.", + "version": { + "first": 141, + "last": 498 + }, + "statictype": "dynamic" + } + ] + }, + "CheckPresence": { + "id": 1, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing an application id number allows the version number of that application to be read back.", + "version": { + "first": 150, + "last": 498 + }, + "statictype": "dynamic" + } + ] + }, + "PCBSerialNumber": { + "id": 2, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "A string reporting the PCB serial number, this string must be set using production equipment.", + "version": { + "first": 169, + "last": 498 + }, + "values": { + "default": "" + }, + "statictype": "static" + } + ] + }, + "CustomerSerialNumber0": { + "id": 3, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A string reported relating to the customer, this string can be written only once after manufacture. If subsequent changes are needed CUSTOMERSERIALNUMBER1 must be used.", + "version": { + "first": 170, + "last": 498 + }, + "values": { + "default": "" + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "CustomerSerialNumber1": { + "id": 4, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A string reported relating to the customer, this string can be written only once after manufacture. If subsequent changes are needed CUSTOMERSERIALNUMBER2 must be used.", + "version": { + "first": 170, + "last": 498 + }, + "values": { + "default": "" + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "CustomerSerialNumber2": { + "id": 5, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A string reported relating to the customer, this string can be written only once after manufacture. If subsequent changes are needed CUSTOMERSERIALNUMBER3 must be used.", + "version": { + "first": 170, + "last": 498 + }, + "values": { + "default": "" + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "CustomerSerialNumber3": { + "id": 6, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A string reported relating to the customer, this string can be written only once after manufacture. This is the last customer serial number change slot.", + "version": { + "first": 170, + "last": 498 + }, + "values": { + "default": "" + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "MonotonicSeconds": { + "id": 7, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The number of seconds since reboot.", + "version": { + "first": 176, + "last": 498 + }, + "statictype": "dynamic" + } + ] + }, + "CalendarSeconds": { + "id": 8, + "details": [ + { + "type": "time_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of seconds since 01-Jan-2000.", + "version": { + "first": 176, + "last": 498 + }, + "statictype": "dynamic" + } + ] + }, + "CoreRevision": { + "id": 9, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "A string reporting the product version string held in the system core binary.", + "version": { + "first": 196, + "last": 498 + }, + "statictype": "static" + } + ] + }, + "DriveCapacity": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing a drive number returns the drive capacity in bytes, or 0 if the drive is not ready, or an error if the driver is not configured to be present.", + "version": { + "first": 233, + "last": 498 + }, + "statictype": "dynamic" + } + ] + }, + "ExitReason": { + "id": 11, + "details": [ + { + "type": "status_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing an application id number allows the exit error number of that application to be read back.", + "version": { + "first": 258, + "last": 498 + }, + "statictype": "dynamic" + } + ] + }, + "CorePlatform": { + "id": 12, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Reports the instruction set of the hosting microprocessor in b8-15 and allocated platform number in b0-7.", + "version": { + "first": 265, + "last": 498 + }, + "statictype": "static" + } + ] + }, + "CRC": { + "id": 13, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing an application id number allows the CRC of that application to be read back.", + "version": { + "first": 279, + "last": 498 + }, + "statictype": "dynamic" + } + ] + }, + "UpgradePermissions": { + "id": 14, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bitfield of permissions releated to firmware upgrade", + "version": { + "first": 470, + "last": 498 + }, + "statictype": "static" + } + ] + } + }, + "status": { + "OK": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "ZERO_APPS": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "NO_MEMORY": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "NOT_IMPLEMENTED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + }, + "BLOCK_NOT_FOUND": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 4 + }, + "NO_SUCH_VAR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 5 + }, + "NO_CLIB": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 6 + }, + "KEY_FAILURE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 7 + }, + "NO_SLOTS_FREE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 8 + }, + "VECTOR_OUT_OF_RANGE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 9 + }, + "BAD_VECTOR_RELEASE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 10 + }, + "DRIVER_BUSY": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 11 + }, + "OUT_OF_RANGE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 12 + }, + "CANT_CANCEL_TICK": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 13 + }, + "ID_OUT_OF_RANGE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 14 + }, + "HANDLE_OUT_OF_RANGE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 15 + }, + "INCAPABLE_HARDWARE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 16 + }, + "ALREADY_OPEN": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 17 + }, + "STRING_TOO_LONG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 18 + }, + "CORRUPT_CONFIGURATION": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 19 + }, + "TIMEOUT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 20 + }, + "NO_PRIVILEGE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 21 + }, + "DEVICE_DORMANT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 22 + }, + "MEDIA_FAILURE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 23 + }, + "BUFFER_OVERFLOW": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 24 + }, + "UPGRADE_SYNTAX_ERROR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 25 + }, + "UPGRADE_DEPENDENCY_NOT_MET": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 26 + }, + "UPGRADE_MISSING": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 27 + }, + "UPGRADE_FRAGMENTED_BY_CLIB": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 28 + }, + "TRUNCATED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 29 + }, + "INVALID_HEADER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 30 + }, + "WONT_DELETE_CLIB": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 31 + }, + "BAD_REGISTER_VALUE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 32 + }, + "NO_CHANGE_MADE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 33 + }, + "NOT_ATOMIC": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 34 + }, + "CALENDAR_CHANGED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 35 + }, + "WORM_FIELD": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 36 + }, + "CONVERSION_UNSUPPORTED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 37 + }, + "CPU_PERMISSION_FAULT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 38 + }, + "CPU_SOFTWARE_FAULT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 39 + }, + "CPU_DECODE_FAULT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 40 + }, + "CPU_ADDRESS_ACCESS_FAULT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 41 + }, + "CPU_UNCAUGHT_FAULT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 42 + }, + "ACCURACY_LOST": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 43 + }, + "EXIT_FAILURE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 44 + }, + "CANT_CANCEL_CALLBACK": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 45 + }, + "RECOVERED_SPACE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 46 + }, + "DRIVE_FULL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 47 + }, + "NO_FILE_HANDLES_AVAILABLE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 48 + }, + "EXCESSIVE_RESTARTS": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 49 + }, + "MPU_SETUP_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 50 + }, + "DEVICE_NOT_OPEN": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 51 + }, + "NO_RESPONSE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 52 + } + } + }, + "METROLOGYASST": { + "id": 18, + "version": { + "first": 4, + "last": 107 + }, + "registers": { + "ILoopMaxFlowRate": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The flow rate that gives max output on the current loop", + "version": { + "first": 5, + "last": 36 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The flow rate that gives max output on the current loop", + "version": { + "first": 82, + "last": 107 + }, + "statictype": "static" + } + ] + }, + "StoreConfiguration": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing TRUE to this register stores the values of the other registers to the non-volatile memory", + "version": { + "first": 7, + "last": 81 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing TRUE to this register stores the values of the other registers to the non-volatile memory", + "version": { + "first": 82, + "last": 107 + }, + "statictype": "dynamic" + } + ] + }, + "PulseWeight": { + "id": 2, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Volume represented by one pulse in ml. If this is zero pulse output will not be enabled", + "version": { + "first": 7, + "last": 81 + }, + "values": { + "default": 1000, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Volume represented by one pulse in ml. If this is zero pulse output will not be enabled", + "version": { + "first": 82, + "last": 101 + }, + "values": { + "default": 1000, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Volume represented by one pulse. Units of (2^-5)ml. If this is zero pulse output will not be enabled", + "version": { + "first": 102, + "last": 107 + }, + "values": { + "default": 32000, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "PulseMode": { + "id": 3, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The way pulses are output on the two available channels. This is an enum of type pulse_mode_t.", + "version": { + "first": 7, + "last": 81 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The way pulses are output on the two available channels. This is an enum of type pulse_mode_t.", + "version": { + "first": 82, + "last": 97 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The way pulses are output on the two available channels. This is an enum of type pulse_mode_t.", + "version": { + "first": 98, + "last": 107 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 7 + }, + "statictype": "static" + } + ] + }, + "PulseLength": { + "id": 4, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The length of a pulse. This is an enum of type pulse_length_t.", + "version": { + "first": 7, + "last": 72 + }, + "values": { + "default": 5, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The length of a pulse. This is an enum of type pulse_length_t.", + "version": { + "first": 73, + "last": 81 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The length of a pulse. This is an enum of type pulse_length_t.", + "version": { + "first": 82, + "last": 107 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "FlowUnits": { + "id": 5, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of flow rate to display on the LCD. An enum of type displayflowunits_t", + "version": { + "first": 8, + "last": 81 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 8 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of flow rate to display on the LCD. An enum of type displayflowunits_t", + "version": { + "first": 82, + "last": 107 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 8 + }, + "statictype": "static" + } + ] + }, + "FlowPoint": { + "id": 6, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Position of the decimal point on the LCD for flow rate. An enum of type displayflowpoint_t", + "version": { + "first": 8, + "last": 81 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 4 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Position of the decimal point on the LCD for flow rate. An enum of type displayflowpoint_t", + "version": { + "first": 82, + "last": 107 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 4 + }, + "statictype": "static" + } + ] + }, + "ILoopRate": { + "id": 7, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The update rate for the current loop", + "version": { + "first": 9, + "last": 36 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The update rate for the current loop", + "version": { + "first": 82, + "last": 107 + }, + "statictype": "static" + } + ] + }, + "TemperatureUnits": { + "id": 8, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Units for displaying temperature on the LCD. 0 – Celcius, 1 – Fahrenheit.", + "version": { + "first": 13, + "last": 81 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Units for displaying temperature on the LCD. 0 – Celcius, 1 – Fahrenheit.", + "version": { + "first": 82, + "last": 107 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "PressureUnits": { + "id": 9, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Units for displaying pressure on the LCD. 0 – Mpa, 1 – PSI.", + "version": { + "first": 13, + "last": 81 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Units for displaying pressure on the LCD. 0 – Mpa, 1 – PSI.", + "version": { + "first": 82, + "last": 107 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "PressureRate": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time between pressure measurements in milliseconds", + "version": { + "first": 13, + "last": 71 + }, + "values": { + "default": 300000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time between pressure measurements in milliseconds", + "version": { + "first": 72, + "last": 81 + }, + "values": { + "default": 60000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time between pressure measurements in milliseconds", + "version": { + "first": 82, + "last": 107 + }, + "values": { + "default": 60000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "PressureOffset": { + "id": 11, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Value in Pa to subtract from measured value to correct for atmospheric pressure", + "version": { + "first": 13, + "last": 58 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Value in Pa to subtract from measured value to correct for atmospheric pressure", + "version": { + "first": 59, + "last": 79 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Value in Pa to subtract from measured value to correct for atmospheric pressure", + "version": { + "first": 80, + "last": 81 + }, + "values": { + "default": 0, + "minimum": -2000000, + "maximum": 2000000 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Value in Pa to subtract from measured value to correct for atmospheric pressure", + "version": { + "first": 82, + "last": 107 + }, + "values": { + "default": 0, + "minimum": -2000000, + "maximum": 2000000 + }, + "statictype": "static" + } + ] + }, + "PressurePresent": { + "id": 12, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether there is a pressure sensor present", + "version": { + "first": 63, + "last": 70 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether there is a pressure sensor present", + "version": { + "first": 71, + "last": 107 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "PressureMeasure": { + "id": 13, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write TRUE to trigger a pressure measurement, Read to get the latest measured value in Pa", + "version": { + "first": 65, + "last": 107 + }, + "statictype": "dynamic" + } + ] + }, + "LatestFlowRate": { + "id": 14, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Returns the latest flow rate. Write 0 to change scaling to internal scaling, 1 to change to display scaling", + "version": { + "first": 92, + "last": 107 + }, + "statictype": "dynamic" + } + ] + }, + "GenerateFwdPulses": { + "id": 15, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Generate some artificial pulses, used for testing", + "version": { + "first": 97, + "last": 107 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "dynamic" + } + ] + }, + "GenerateRevPulses": { + "id": 16, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Generate some artificial pulses, used for testing", + "version": { + "first": 97, + "last": 107 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "dynamic" + } + ] + }, + "PulseEvenDistribution": { + "id": 17, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Boolean value for whether pulse output is to space the pulses evenly (TRUE) or grouped (FALSE)", + "version": { + "first": 98, + "last": 107 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "PulseResolution": { + "id": 18, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The number of bits of fractional resolution in a pulse event", + "version": { + "first": 98, + "last": 107 + }, + "values": { + "minimum": 0, + "maximum": 7 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "BAD_CONFIG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "DID_NOT_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "PENDING_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + } + } + }, + "LOGGER": { + "id": 8, + "version": { + "first": 1, + "last": 17 + }, + "registers": { + "Quota": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A quota in bytes for the log. The Logger does not apply any policy to how the quota is allocated, this is left as a restriction to be applied on a product by product basis.", + "version": { + "first": 1, + "last": 17 + }, + "values": { + "default": 4096, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "Drive": { + "id": 1, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The drive to write to.", + "version": { + "first": 1, + "last": 17 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "TriggerLogFlush": { + "id": 2, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Writing TRUE will force a log flush", + "version": { + "first": 7, + "last": 17 + }, + "statictype": "dynamic" + } + ] + }, + "StoreConfiguration": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 16, + "last": 17 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "UNKNOWN_PARAMETER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "RESTARTED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "BLOCK_LISTING": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "PENDING_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + }, + "DID_NOT_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 4 + } + } + }, + "TESTMANAGER": { + "id": 98, + "version": { + "first": null, + "last": null + }, + "registers": { + "OutputFile": { + "id": 0, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "TestNumber": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "TestStatus": { + "id": 2, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "TrapError": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + }, + "TestParameter": { + "id": 4, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": null + }, + "statictype": null + } + ] + } + }, + "status": { + "FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "UNKNOWN_PARAMETER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "READ_ONLY_PARAMETER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "BUSY": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + }, + "STRING_TOO_LONG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 4 + }, + "FOPEN_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 5 + }, + "FSEEK_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 6 + }, + "FWRITE_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 7 + }, + "FCLOSE_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 8 + }, + "MALFORMED_FILENAME": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 9 + }, + "UNKNOWN_ACTION": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 10 + }, + "FILEREMOVE_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 11 + }, + "FREAD_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 12 + } + } + }, + "PERIODICLOG": { + "id": 17, + "version": { + "first": 1, + "last": 70 + }, + "registers": { + "DataLogContents": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit Mask of the items to store in LOG memory", + "version": { + "first": 10, + "last": 70 + }, + "values": { + "default": 201335811, + "minimum": 3, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "DataLogPeriod": { + "id": 1, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Storage Period of the LOG memory in minutes", + "version": { + "first": 10, + "last": 70 + }, + "values": { + "default": 60, + "minimum": 1, + "maximum": 1440 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "AverageFlowPeriod": { + "id": 2, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Averiging period for the Min/Max calculation of LOG&FDR memory", + "version": { + "first": 10, + "last": 70 + }, + "values": { + "default": 5, + "minimum": 1, + "maximum": 60 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FixedDateReadingContents": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit Mask of the items to store in FDR memory", + "version": { + "first": 10, + "last": 70 + }, + "values": { + "default": 201335811, + "minimum": 3, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FixedDateDayOfMonth": { + "id": 4, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The day of month the FDR storage will take place at 00:00", + "version": { + "first": 10, + "last": 70 + }, + "values": { + "default": 1, + "minimum": 1, + "maximum": 28 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PeriodicLogLifeTimeCounter": { + "id": 5, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A counter used for internal purposes", + "version": { + "first": 15, + "last": 70 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "ResetCounter": { + "id": 6, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A counter to monitor the application resets", + "version": { + "first": 20, + "last": 70 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + } + }, + "status": { + "FOPEN": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "BAD_CONFIG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "STRING_TOO_LONG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "FILES_IN_USE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + } + } + }, + "POWERMON": { + "id": 1, + "version": { + "first": 17, + "last": 67 + }, + "registers": { + "BatteryVoltage": { + "id": 0, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Measured battery terminal voltage in 1mV units.", + "version": { + "first": 17, + "last": 67 + }, + "statictype": "dynamic" + } + ] + }, + "BatteryManufacturer": { + "id": 1, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "String describing the battery brand.", + "version": { + "first": 17, + "last": 67 + }, + "values": { + "default": "Tadiran" + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BatterySize": { + "id": 2, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "One of: 0 = battery absent; 1 = built in; 2 = other; 3 = AA; 4 = AAA; 5 = C; 6 = D; 255 = unknown", + "version": { + "first": 17, + "last": 67 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BatteryQuantity": { + "id": 4, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The number of installed batteries.", + "version": { + "first": 17, + "last": 59 + }, + "values": { + "default": 1 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of installed batteries.", + "version": { + "first": 60, + "last": 67 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "BatteryRatedVoltage": { + "id": 5, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Datasheet terminal voltage in 100mV units as manufactured.", + "version": { + "first": 17, + "last": 67 + }, + "values": { + "default": 36, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BatteryVoltageMinThreshold": { + "id": 7, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Datasheet terminal voltage in 100mV units below which the cell is considered empty.", + "version": { + "first": 17, + "last": 67 + }, + "values": { + "default": 28, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BatterySelection": { + "id": 8, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Chosen manufacturer from the internal lookup table of known batteries.", + "version": { + "first": 20, + "last": 67 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "TotalUsedCharge": { + "id": 9, + "details": [ + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Accumulated charge used in uAs.", + "version": { + "first": 24, + "last": 67 + }, + "statictype": "dynamic" + } + ] + }, + "TotalUsedSeconds": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Elapsed time since manufacture in seconds.", + "version": { + "first": 39, + "last": 67 + }, + "statictype": "dynamic" + } + ] + }, + "WarnFromClamp": { + "id": 11, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time in seconds for which the projected end time cannot exceed.", + "version": { + "first": 39, + "last": 67 + }, + "values": { + "default": 473040000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "BatteryMilliAHrRating": { + "id": 12, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Datasheet capacity in mAh units as manufactured.", + "version": { + "first": 45, + "last": 67 + }, + "values": { + "default": 19000, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "StoreConfiguration": { + "id": 13, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 61, + "last": 67 + }, + "statictype": "dynamic" + } + ] + }, + "CriticalRepeatLimit": { + "id": 14, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of 15 minute periods of consecutive low battery voltage required for the battery to be deemed critically low", + "version": { + "first": 66, + "last": 67 + }, + "values": { + "default": 96, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + } + }, + "status": { + "TABLE_FULL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "UNKNOWN_PARAMETER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "OUT_OF_RANGE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "STOP_CYCLING": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + }, + "TEMPERATURE_LIMIT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 4 + }, + "BATTERY_STATUS_CHANGED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 5 + }, + "BATTERY_CRITICAL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 6 + }, + "PENDING_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 7 + }, + "DID_NOT_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 8 + } + } + }, + "GENESISFLOW": { + "id": 15, + "version": { + "first": 7, + "last": 605 + }, + "registers": { + "SampleRate": { + "id": 0, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 7, + "last": 203 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 204, + "last": 267 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FirstHitLvlUp1": { + "id": 1, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 1, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 1, units of 0.88mV", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 1, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 1, units of 0.88mV", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 1, units of 0.88mV", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "FirstHitLvlUp2": { + "id": 2, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 2, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 2, units of 0.88mV", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 2, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 2, units of 0.88mV", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 2, units of 0.88mV", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "FirstHitLvlUp3": { + "id": 3, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 3, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 3, units of 0.88mV", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 3, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 3, units of 0.88mV", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 3, units of 0.88mV", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "FirstHitLvlDown1": { + "id": 4, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 1, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 1, units of 0.88mV", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 1, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 1, units of 0.88mV", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 1, units of 0.88mV", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "FirstHitLvlDown2": { + "id": 5, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 2, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 2, units of 0.88mV", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 2, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 2, units of 0.88mV", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 2, units of 0.88mV", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "FirstHitLvlDown3": { + "id": 6, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 3, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 3, units of 0.88mV", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 3, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 3, units of 0.88mV", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 3, units of 0.88mV", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "StartHit": { + "id": 7, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The hit number to consider as the first hit", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The hit number to consider as the first hit", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The hit number to consider as the first hit", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The hit number to consider as the first hit", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The hit number to consider as the first hit", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "AmplitudePeakDetectEnd": { + "id": 8, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Where to stop running the amplitude peak detection", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Where to stop running the amplitude peak detection", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Where to stop running the amplitude peak detection", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Where to stop running the amplitude peak detection", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Where to stop running the amplitude peak detection", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "NumFirePulses": { + "id": 9, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of pulses to fire for a measurement", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 17, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of pulses to fire for a measurement", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 17, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of pulses to fire for a measurement", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 17, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of pulses to fire for a measurement", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 17, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of pulses to fire for a measurement", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 17, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "DisplayPow10": { + "id": 10, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The weight of the lowest display digit as a power of 10. The accepted range of values depends on the LCD present and the DisplayUnits chosen", + "version": { + "first": 36, + "last": 267 + }, + "values": { + "default": -6, + "minimum": -128, + "maximum": 127 + }, + "statictype": "static" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The weight of the lowest display digit as a power of 10. The accepted range of values depends on the LCD present and the DisplayUnits chosen", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": -6, + "minimum": -128, + "maximum": 127 + }, + "statictype": "static" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The weight of the lowest display digit as a power of 10. The accepted range of values depends on the LCD present and the DisplayUnits chosen", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": -6, + "minimum": -128, + "maximum": 127 + }, + "statictype": "static" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The weight of the lowest display digit as a power of 10. The accepted range of values depends on the LCD present and the DisplayUnits chosen", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": -6, + "minimum": -128, + "maximum": 127 + }, + "statictype": "static" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The weight of the lowest display digit as a power of 10. The accepted range of values depends on the LCD present and the DisplayUnits chosen", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": -6, + "minimum": -128, + "maximum": 127 + }, + "statictype": "static" + } + ] + }, + "DisplayUnits": { + "id": 11, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of volume to display. The accepted range of values depends on the LCD present and the DisplayPow10 chosen", + "version": { + "first": 36, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of volume to display. The accepted range of values depends on the LCD present and the DisplayPow10 chosen", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of volume to display. The accepted range of values depends on the LCD present and the DisplayPow10 chosen", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of volume to display. The accepted range of values depends on the LCD present and the DisplayPow10 chosen", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of volume to display. The accepted range of values depends on the LCD present and the DisplayPow10 chosen", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + } + ] + }, + "MeterSize": { + "id": 12, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 45, + "last": 237 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 9 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 238, + "last": 267 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 17 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 17 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 17 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 17 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 17 + }, + "statictype": "static" + } + ] + }, + "CalFactor1": { + "id": 13, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 45, + "last": 204 + }, + "values": { + "default": 62500, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 201, + "last": 267 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "CalFactor2": { + "id": 14, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 45, + "last": 204 + }, + "values": { + "default": 62500, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 201, + "last": 267 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "CalFactor3": { + "id": 15, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 45, + "last": 204 + }, + "values": { + "default": 62500, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 201, + "last": 267 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "ZeroOffset1": { + "id": 16, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in usual time of flight scaling (ie LS bit is 2^-38 seconds)", + "version": { + "first": 45, + "last": 132 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 133, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + } + ] + }, + "ZeroOffset2": { + "id": 17, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in usual time of flight scaling (ie LS bit is 2^-38 seconds)", + "version": { + "first": 45, + "last": 132 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 133, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + } + ] + }, + "ZeroOffset3": { + "id": 18, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in usual time of flight scaling (ie LS bit is 2^-38 seconds)", + "version": { + "first": 45, + "last": 132 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 133, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + } + ] + }, + "ScaledBilling": { + "id": 19, + "details": [ + { + "type": "int64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The scaled volume value shown on the display. In the units and precision set by DisplayUnits and DisplayPow10 respectively. Decimal point is not represented in this value", + "version": { + "first": 47, + "last": 295 + }, + "statictype": "dynamic" + }, + { + "type": "int64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The scaled volume value shown on the display. In the units and precision set by DisplayUnits and DisplayPow10 respectively. Decimal point is not represented in this value", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "int64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The scaled volume value shown on the display. In the units and precision set by DisplayUnits and DisplayPow10 respectively. Decimal point is not represented in this value", + "version": { + "first": 500, + "last": 508 + }, + "statictype": "dynamic" + }, + { + "type": "int64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The scaled volume value shown on the display. In the units and precision set by DisplayUnits and DisplayPow10 respectively. Decimal point is not represented in this value", + "version": { + "first": 601, + "last": 605 + }, + "statictype": "dynamic" + } + ] + }, + "ResetAccumulators": { + "id": 20, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "WO", + "lvl2": "WO", + "lvl3": "WO", + "lvl4": "WO", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to reset all accumulated volume to zero", + "version": { + "first": 47, + "last": 267 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to reset all accumulated volume to zero", + "version": { + "first": 268, + "last": 295 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to reset all accumulated volume to zero", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to reset all accumulated volume to zero", + "version": { + "first": 500, + "last": 508 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to reset all accumulated volume to zero", + "version": { + "first": 601, + "last": 605 + }, + "statictype": "dynamic" + } + ] + }, + "ForwardArrow": { + "id": 21, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow direction. 0 - undecided, 1 - right, 2 - left", + "version": { + "first": 47, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow direction. 0 - undecided, 1 - right, 2 - left", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow direction. 0 - undecided, 1 - right, 2 - left", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow direction. 0 - undecided, 1 - right, 2 - left", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow direction. 0 - undecided, 1 - right, 2 - left", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "LedMode": { + "id": 22, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 47, + "last": 203 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 204, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + } + ] + }, + "StoreCalibration": { + "id": 23, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store calibration values to non-volatile storage. Read back for status", + "version": { + "first": 54, + "last": 295 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store calibration values to non-volatile storage. Read back for status", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store calibration values to non-volatile storage. Read back for status", + "version": { + "first": 500, + "last": 508 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store calibration values to non-volatile storage. Read back for status", + "version": { + "first": 601, + "last": 605 + }, + "statictype": "dynamic" + } + ] + }, + "UnscaledFwd": { + "id": 24, + "details": [ + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 54, + "last": 295 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 500, + "last": 508 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 601, + "last": 605 + }, + "statictype": "dynamic" + } + ] + }, + "UnscaledRev": { + "id": 25, + "details": [ + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The reverse flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 54, + "last": 295 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The reverse flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The reverse flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 500, + "last": 508 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The reverse flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 601, + "last": 605 + }, + "statictype": "dynamic" + } + ] + }, + "LowFlowThreshold": { + "id": 26, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The volume that must pass in LowFlowMaxPeriod for it to be registered as real flow. Units of ml", + "version": { + "first": 55, + "last": 267 + }, + "values": { + "default": 200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The volume that must pass in LowFlowMaxPeriod for it to be registered as real flow. Units of ml", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The volume that must pass in LowFlowMaxPeriod for it to be registered as real flow. Units of ml", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The volume that must pass in LowFlowMaxPeriod for it to be registered as real flow. Units of ml", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The volume that must pass in LowFlowMaxPeriod for it to be registered as real flow. Units of ml", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "LowFlowMaxPeriod": { + "id": 27, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time during which LowFlowThreshold volume must pass for it to be registered as real flow. Units of seconds << 16", + "version": { + "first": 55, + "last": 267 + }, + "values": { + "default": 3932160, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time during which LowFlowThreshold volume must pass for it to be registered as real flow. Units of seconds << 16", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 3932160, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time during which LowFlowThreshold volume must pass for it to be registered as real flow. Units of seconds << 16", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 3932160, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time during which LowFlowThreshold volume must pass for it to be registered as real flow. Units of seconds << 16", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 3932160, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time during which LowFlowThreshold volume must pass for it to be registered as real flow. Units of seconds << 16", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 3932160, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "UpdateThreshold": { + "id": 28, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The amount of flow in ml to accumulate before updating the main scaled accumulators.", + "version": { + "first": 55, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The amount of flow in ml to accumulate before updating the main scaled accumulators.", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The amount of flow in ml to accumulate before updating the main scaled accumulators.", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The amount of flow in ml to accumulate before updating the main scaled accumulators.", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The amount of flow in ml to accumulate before updating the main scaled accumulators.", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "ArrowThreshold": { + "id": 29, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The net volume in ml that must flow in one direction for the forward arrow to be set", + "version": { + "first": 55, + "last": 267 + }, + "values": { + "default": 5000000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The net volume in ml that must flow in one direction for the forward arrow to be set", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 5000000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The net volume in ml that must flow in one direction for the forward arrow to be set", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 5000000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The net volume in ml that must flow in one direction for the forward arrow to be set", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 5000000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The net volume in ml that must flow in one direction for the forward arrow to be set", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 5000000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "FireBuffer1": { + "id": 30, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 1 to be used", + "version": { + "first": 64, + "last": 267 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 1 to be used", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 1 to be used", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 1 to be used", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 1 to be used", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FireBuffer2": { + "id": 31, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 2 to be used", + "version": { + "first": 64, + "last": 267 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 2 to be used", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 2 to be used", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 2 to be used", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 2 to be used", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FireBuffer3": { + "id": 32, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 3 to be used", + "version": { + "first": 64, + "last": 267 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 3 to be used", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 3 to be used", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 3 to be used", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 3 to be used", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "TriggerActive": { + "id": 33, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "WO", + "lvl2": "WO", + "lvl3": "WO", + "lvl4": "WO", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", + "version": { + "first": 75, + "last": 267 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "WO", + "lvl4": "NA", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", + "version": { + "first": 268, + "last": 295 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "WO", + "lvl4": "NA", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "WO", + "lvl4": "NA", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", + "version": { + "first": 500, + "last": 508 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "WO", + "lvl4": "NA", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", + "version": { + "first": 601, + "last": 605 + }, + "statictype": "dynamic" + } + ] + }, + "TriggerIdle": { + "id": 34, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 0 to put GenesisFlow in Active mode, otherwise put GenesisFlow in Idle mode. Idle mode displays just the number written to TriggerIdle. No measurements are performed. Read returns the number written", + "version": { + "first": 75, + "last": 295 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 0 to put GenesisFlow in Active mode, otherwise put GenesisFlow in Idle mode. Idle mode displays just the number written to TriggerIdle. No measurements are performed. Read returns the number written", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 0 to put GenesisFlow in Active mode, otherwise put GenesisFlow in Idle mode. Idle mode displays just the number written to TriggerIdle. No measurements are performed. Read returns the number written", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 0 to put GenesisFlow in Active mode, otherwise put GenesisFlow in Idle mode. Idle mode displays just the number written to TriggerIdle. No measurements are performed. Read returns the number written", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + } + ] + }, + "MaxValidDeltaToF": { + "id": 35, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum delta time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 87, + "last": 267 + }, + "values": { + "default": 247390, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum delta time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 309237, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum delta time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 309237, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum delta time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 309237, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum delta time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 309237, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MaxValidToF": { + "id": 36, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum absolute time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 87, + "last": 267 + }, + "values": { + "default": 24739011, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum absolute time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 24739011, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum absolute time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 24739011, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum absolute time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 24739011, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum absolute time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 24739011, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MinValidToF": { + "id": 37, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The minimum absolute time of flight, below this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 87, + "last": 267 + }, + "values": { + "default": 13743895, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The minimum absolute time of flight, below this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 13743895, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The minimum absolute time of flight, below this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 13743895, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The minimum absolute time of flight, below this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 13743895, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The minimum absolute time of flight, below this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 13743895, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "FirstHitPercent1": { + "id": 38, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 1", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 1", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 1", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 1", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 1", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FirstHitPercent2": { + "id": 39, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 2", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 2", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 2", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 2", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 2", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FirstHitPercent3": { + "id": 40, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 3", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 3", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 3", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 3", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 3", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FirstHitShift": { + "id": 41, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value describing how long the amplitude is averaged over for calculating the first hit level. This is the amount each amplitude value is shifted down before being added to the moving average", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 4, + "minimum": 3, + "maximum": 8 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value describing how long the amplitude is averaged over for calculating the first hit level. This is the amount each amplitude value is shifted down before being added to the moving average", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 4, + "minimum": 3, + "maximum": 8 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value describing how long the amplitude is averaged over for calculating the first hit level. This is the amount each amplitude value is shifted down before being added to the moving average", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 4, + "minimum": 3, + "maximum": 8 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value describing how long the amplitude is averaged over for calculating the first hit level. This is the amount each amplitude value is shifted down before being added to the moving average", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 4, + "minimum": 3, + "maximum": 8 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value describing how long the amplitude is averaged over for calculating the first hit level. This is the amount each amplitude value is shifted down before being added to the moving average", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 4, + "minimum": 3, + "maximum": 8 + }, + "statictype": "static" + } + ] + }, + "FirstHitMinimum": { + "id": 42, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum absolute first hit level value", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum absolute first hit level value", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum absolute first hit level value", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum absolute first hit level value", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum absolute first hit level value", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "ToFErrorLimit": { + "id": 43, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of ToF errors to allow before resetting the first hit levels to FirstHitMinimum", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 16, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of ToF errors to allow before resetting the first hit levels to FirstHitMinimum", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 16, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of ToF errors to allow before resetting the first hit levels to FirstHitMinimum", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 16, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of ToF errors to allow before resetting the first hit levels to FirstHitMinimum", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 16, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of ToF errors to allow before resetting the first hit levels to FirstHitMinimum", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 16, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "FirstHitUpdatePeriod": { + "id": 44, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period (in seconds) between first hit level updates", + "version": { + "first": 99, + "last": 267 + }, + "values": { + "default": 10, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period (in seconds) between first hit level updates", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 10, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period (in seconds) between first hit level updates", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 10, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period (in seconds) between first hit level updates", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 10, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period (in seconds) between first hit level updates", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 10, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "PipeFillingDelay": { + "id": 45, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time (in seconds) to maintain zero flow after leaving empty pipe", + "version": { + "first": 119, + "last": 267 + }, + "values": { + "default": 30, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time (in seconds) to maintain zero flow after leaving empty pipe", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 30, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time (in seconds) to maintain zero flow after leaving empty pipe", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 30, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time (in seconds) to maintain zero flow after leaving empty pipe", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 30, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time (in seconds) to maintain zero flow after leaving empty pipe", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 30, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "ToFTempOffset1": { + "id": 46, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 1. In units of 2^-38 seconds", + "version": { + "first": 124, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 1. In units of 2^-38 seconds", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 1. In units of 2^-38 seconds", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 1. In units of 2^-38 seconds", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 1. In units of 2^-38 seconds", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ToFTempOffset2": { + "id": 47, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 2. In units of 2^-38 seconds", + "version": { + "first": 124, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 2. In units of 2^-38 seconds", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 2. In units of 2^-38 seconds", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 2. In units of 2^-38 seconds", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 2. In units of 2^-38 seconds", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ToFTempOffset3": { + "id": 48, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 3. In units of 2^-38 seconds", + "version": { + "first": 124, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 3. In units of 2^-38 seconds", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 3. In units of 2^-38 seconds", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 3. In units of 2^-38 seconds", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 3. In units of 2^-38 seconds", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ToFTempCalibrate": { + "id": 49, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "WO", + "lvl2": "WO", + "lvl3": "WO", + "lvl4": "WO", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write the current temperature to this register to trigger a calibration step. In units of 2^-12 degrees celcius", + "version": { + "first": 124, + "last": 204 + }, + "values": { + "minimum": 0, + "maximum": 270336 + }, + "statictype": "dynamic" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write the current temperature to this register to trigger a calibration step. In units of 2^-12 degrees celcius", + "version": { + "first": 205, + "last": 295 + }, + "values": { + "minimum": 0, + "maximum": 286720 + }, + "statictype": "dynamic" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write the current temperature to this register to trigger a calibration step. In units of 2^-12 degrees celcius", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "minimum": 0, + "maximum": 286720 + }, + "statictype": "dynamic" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write the current temperature to this register to trigger a calibration step. In units of 2^-12 degrees celcius", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "minimum": 0, + "maximum": 286720 + }, + "statictype": "dynamic" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write the current temperature to this register to trigger a calibration step. In units of 2^-12 degrees celcius", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "minimum": 0, + "maximum": 286720 + }, + "statictype": "dynamic" + } + ] + }, + "StoreConfiguration": { + "id": 50, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 141, + "last": 267 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 268, + "last": 295 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 500, + "last": 508 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 601, + "last": 605 + }, + "statictype": "dynamic" + } + ] + }, + "SealDisplay": { + "id": 51, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to stop various display related registers being changed. Read back 1 for 'sealed' 0 for 'unsealed'", + "version": { + "first": 161, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to stop various display related registers being changed. Read back 1 for 'sealed' 0 for 'unsealed'", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to stop various display related registers being changed. Read back 1 for 'sealed' 0 for 'unsealed'", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to stop various display related registers being changed. Read back 1 for 'sealed' 0 for 'unsealed'", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to stop various display related registers being changed. Read back 1 for 'sealed' 0 for 'unsealed'", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "TriggerTest": { + "id": 52, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Test mode. This differs from normal measurement mode in that the volume is presented to 3 extra decimal places if possible. Read back 1 for Test mode, 0 otherwise", + "version": { + "first": 162, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Test mode. This differs from normal measurement mode in that the volume is presented to 3 extra decimal places if possible. Read back 1 for Test mode, 0 otherwise", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Test mode. This differs from normal measurement mode in that the volume is presented to 3 extra decimal places if possible. Read back 1 for Test mode, 0 otherwise", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Test mode. This differs from normal measurement mode in that the volume is presented to 3 extra decimal places if possible. Read back 1 for Test mode, 0 otherwise", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Test mode. This differs from normal measurement mode in that the volume is presented to 3 extra decimal places if possible. Read back 1 for Test mode, 0 otherwise", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + } + ] + }, + "MaxValidAmplitude": { + "id": 53, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Maximum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 168, + "last": 267 + }, + "values": { + "default": 2936012800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Maximum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 2936012800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Maximum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 2936012800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Maximum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 2936012800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Maximum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 2936012800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MinValidAmplitude": { + "id": 54, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 168, + "last": 267 + }, + "values": { + "default": 209715200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 209715200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 209715200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 209715200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 209715200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "HardErrorLimit": { + "id": 55, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of hard errors to allow before declaring a fatal error", + "version": { + "first": 176, + "last": 267 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of hard errors to allow before declaring a fatal error", + "version": { + "first": 268, + "last": 295 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of hard errors to allow before declaring a fatal error", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of hard errors to allow before declaring a fatal error", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of hard errors to allow before declaring a fatal error", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "Timeout": { + "id": 56, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The timeout for an ultrasonic measurement (0 - 128us, 1 - 256us, 2 - 1024us, 3 - 4096us)", + "version": { + "first": 273, + "last": 295 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The timeout for an ultrasonic measurement (0 - 128us, 1 - 256us, 2 - 1024us, 3 - 4096us)", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The timeout for an ultrasonic measurement (0 - 128us, 1 - 256us, 2 - 1024us, 3 - 4096us)", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The timeout for an ultrasonic measurement (0 - 128us, 1 - 256us, 2 - 1024us, 3 - 4096us)", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "MaxDeltaToFDeviation": { + "id": 57, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum deviation of a valid delta tof from the recent mean. In 2^-38 seconds units", + "version": { + "first": 280, + "last": 295 + }, + "values": { + "default": 109951, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum deviation of a valid delta tof from the recent mean. In 2^-38 seconds units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 109951, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum deviation of a valid delta tof from the recent mean. In 2^-38 seconds units", + "version": { + "first": 500, + "last": 508 + }, + "values": { + "default": 109951, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum deviation of a valid delta tof from the recent mean. In 2^-38 seconds units", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 109951, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MaxTempRange": { + "id": 58, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of temperatures between channels before one is rejected. In units of 2^-12 degrees celcius", + "version": { + "first": 289, + "last": 295 + }, + "values": { + "default": 8192, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of temperatures between channels before one is rejected. In units of 2^-12 degrees celcius", + "version": { + "first": 451, + "last": 463 + }, + "values": { + "default": 8192, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of temperatures between channels before one is rejected. In units of 2^-12 degrees celcius", + "version": { + "first": 504, + "last": 508 + }, + "values": { + "default": 8192, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of temperatures between channels before one is rejected. In units of 2^-12 degrees celcius", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 8192, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MaxDeltaToFRange": { + "id": 59, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of delta time of flight between channels before one is rejected. In 2^-38 seconds units", + "version": { + "first": 289, + "last": 295 + }, + "values": { + "default": 137438, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of delta time of flight between channels before one is rejected. In 2^-38 seconds units", + "version": { + "first": 451, + "last": 463 + }, + "values": { + "default": 137438, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of delta time of flight between channels before one is rejected. In 2^-38 seconds units", + "version": { + "first": 504, + "last": 508 + }, + "values": { + "default": 137438, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of delta time of flight between channels before one is rejected. In 2^-38 seconds units", + "version": { + "first": 601, + "last": 605 + }, + "values": { + "default": 137438, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + } + }, + "status": { + "BAD_TEST": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "BAD_CONFIG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "DID_NOT_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "STORE_PENDING": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + }, + "STORE_BUFFER_SIZE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 4 + }, + "STRING_TOO_LONG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 5 + }, + "BAD_DISPLAY_MODE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 6 + }, + "GLASS_TOO_LONG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 7 + }, + "SLOT_NOT_YOURS": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 8 + }, + "SUBLIST_TOO_LONG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 9 + }, + "NO_TEMP_SENSOR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 10 + }, + "UNDER_TEMP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 11 + }, + "LOW_TEMP_WARNING": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 12 + }, + "HIGH_TEMP_WARNING": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 13 + }, + "OVER_TEMP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 14 + }, + "MISMATCHING_LSB": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 15 + }, + "OUT_OF_RANGE_PWDIFF": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 16 + }, + "OUT_OF_RANGE_AMPLITUDE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 17 + }, + "OUT_OF_RANGE_TOF": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 18 + }, + "OUT_OF_RANGE_DTOF": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 19 + }, + "TOF_TIMEOUT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 20 + }, + "CAL_CHANGE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 21 + }, + "OUT_OF_RANGE_INTERVAL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 22 + }, + "VALIDATE_FAIL": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 23 + }, + "OUT_OF_RANGE_TEMP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 24 + }, + "NOT_READY": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 25 + }, + "METROLOGY_ERROR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 26 + }, + "GP30_ID_ERROR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 27 + }, + "GP30_FLAG_ERROR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 28 + }, + "GP30_TIMEOUT_ERROR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 29 + }, + "GP30_REQUEST_ERROR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 30 + }, + "GP30_SEQ_ERROR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 31 + }, + "VALUE_SEALED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 32 + }, + "IN_TEST_MODE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 33 + }, + "UNKNOWN_STATE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 34 + }, + "DISPLAY_INIT_SUCCEEDED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 35 + }, + "DISPLAY_INIT_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 36 + }, + "GP30_INIT_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 37 + }, + "START_TIMER_SUCCEEDED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 38 + }, + "START_TIMER_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 39 + }, + "VOLUME_STORE_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 40 + }, + "EMPTY_PIPE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 41 + }, + "PARAMETER_ERROR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 42 + }, + "GP30_INTERNAL_ERROR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 43 + }, + "GLASS_TOO_SHORT": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 44 + }, + "STORE_CAL_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 45 + }, + "STORE_CONF_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 46 + }, + "MODE_CHANGE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 47 + }, + "BAD_POW10": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 48 + }, + "BAD_DECIMAL_SEPARATOR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 49 + }, + "BAD_UNITS": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 50 + }, + "BAD_ICONS": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 51 + }, + "BAD_THOUSAND_SEPARATOR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 52 + }, + "NEW_LOCALE_REJECTED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 53 + }, + "SET_ACCUMULATORS": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 54 + }, + "SEAL_OPENED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 55 + }, + "CALIBRATION_RECALL_INCOMPLETE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 56 + }, + "BAD_AMR_SETTINGS": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 57 + }, + "SUSPECT_CYCLE_SKIP": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 58 + } + } + }, + "IRDA": { + "id": 20, + "version": { + "first": 10, + "last": 198 + }, + "registers": { + "PulseReportRate": { + "id": 0, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate at which pulse reports are sent to the IrDA pulse adapter", + "version": { + "first": 10, + "last": 97 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate at which pulse reports are sent to the IrDA pulse adapter", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate at which pulse reports are sent to the IrDA pulse adapter", + "version": { + "first": 161, + "last": 198 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "AdapterPresenceLimit": { + "id": 1, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of 15 minute periods we have to have received no valid IrDA messages to assume there is no adapter present", + "version": { + "first": 18, + "last": 28 + }, + "values": { + "default": 1, + "minimum": 1, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of 15 minute periods we have to have received no valid IrDA messages to assume there is no adapter present", + "version": { + "first": 29, + "last": 97 + }, + "values": { + "default": 3, + "minimum": 1, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of 15 minute periods we have to have received no valid IrDA messages to assume there is no adapter present", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 3, + "minimum": 1, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of 15 minute periods we have to have received no valid IrDA messages to assume there is no adapter present", + "version": { + "first": 161, + "last": 198 + }, + "values": { + "default": 3, + "minimum": 1, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "PulseSequence": { + "id": 2, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The present sequence number used in pulse reports", + "version": { + "first": 26, + "last": 97 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The present sequence number used in pulse reports", + "version": { + "first": 98, + "last": 114 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The present sequence number used in pulse reports", + "version": { + "first": 115, + "last": 136 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The present sequence number used in pulse reports", + "version": { + "first": 161, + "last": 198 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "StoreConfiguration": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 26, + "last": 97 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 98, + "last": 136 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 161, + "last": 198 + }, + "statictype": "dynamic" + } + ] + }, + "AMRDigits": { + "id": 4, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of digits to use for AMR", + "version": { + "first": 40, + "last": 53 + }, + "values": { + "default": 9, + "minimum": 0, + "maximum": 9 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of digits to use for AMR", + "version": { + "first": 53, + "last": 97 + }, + "values": { + "default": 9, + "minimum": 0, + "maximum": 9 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of digits to use for AMR", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 8, + "minimum": 0, + "maximum": 9 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of digits to use for AMR", + "version": { + "first": 161, + "last": 198 + }, + "values": { + "default": 8, + "minimum": 0, + "maximum": 9 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "AMROffset": { + "id": 5, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The offset of the AMR smallest digit from the right (always negative)", + "version": { + "first": 40, + "last": 97 + }, + "values": { + "default": 0, + "minimum": -9, + "maximum": 0 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The offset of the AMR smallest digit from the right (always negative)", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 0, + "minimum": -9, + "maximum": 0 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The offset of the AMR smallest digit from the right (always negative)", + "version": { + "first": 161, + "last": 198 + }, + "values": { + "default": 0, + "minimum": -9, + "maximum": 0 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "UI1203Fields": { + "id": 6, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A bitfield of the optional fields being used for UI-1203", + "version": { + "first": 40, + "last": 97 + }, + "values": { + "default": 268, + "minimum": 0, + "maximum": 268 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A bitfield of the optional fields being used for UI-1203", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 268, + "minimum": 0, + "maximum": 268 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A bitfield of the optional fields being used for UI-1203", + "version": { + "first": 161, + "last": 198 + }, + "values": { + "default": 268, + "minimum": 0, + "maximum": 268 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "MfgDate": { + "id": 7, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A timestamp of meter manufacture in seconds since 1/1/2000 00:00:00 UTC", + "version": { + "first": 43, + "last": 136 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A timestamp of meter manufacture in seconds since 1/1/2000 00:00:00 UTC", + "version": { + "first": 161, + "last": 198 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "DisplayAMRDigits": { + "id": 8, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether or not to display AMR digits on the screen", + "version": { + "first": 92, + "last": 97 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether or not to display AMR digits on the screen", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether or not to display AMR digits on the screen", + "version": { + "first": 161, + "last": 198 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "AdapterID": { + "id": 9, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The serial number of the current pulse adapter", + "version": { + "first": 193, + "last": 198 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "AdapterFwVersion": { + "id": 10, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The firmware version of the current pulse adapter", + "version": { + "first": 193, + "last": 198 + }, + "statictype": "infrequentlyupdated" + } + ] + } + }, + "status": { + "BAD_CONFIG": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "BAD_LENGTH": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "OUT_OF_RANGE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "PENDING_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + }, + "DID_NOT_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 4 + }, + "TOO_MANY_BYTES": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 5 + } + } + }, + "NA2WALARMS": { + "id": 23, + "version": { + "first": 41, + "last": 98 + }, + "registers": { + "StoreConfiguration": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 41, + "last": 98 + }, + "statictype": "dynamic" + } + ] + }, + "PredefEnable": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bitmask of enabled predefined alarms", + "version": { + "first": 41, + "last": 98 + }, + "values": { + "default": 561047, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + } + }, + "status": { + "SENSOR_INVALID": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "UNKNOWN_PARAMETER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + }, + "ALARM_INVALID": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 2 + }, + "UNIMPLEMENTED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 3 + }, + "UNCONFIGURED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 4 + }, + "CONFIG_INVALID": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 5 + }, + "NO_LATEST": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 6 + }, + "FIXED_TYPE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 7 + }, + "PREDEF_SET": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 8 + }, + "USERDEF_VOLUME_SET": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 9 + }, + "USERDEF_TEMPERATURE_SET": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 10 + }, + "USERDEF_PRESSURE_SET": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 11 + }, + "PREDEF_CLEAR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 12 + }, + "USERDEF_VOLUME_CLEAR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 13 + }, + "USERDEF_TEMPERATURE_CLEAR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 14 + }, + "USERDEF_PRESSURE_CLEAR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 15 + }, + "DID_NOT_STORE": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 16 + }, + "STORE_PENDING": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 17 + }, + "PREDEF_BACKUP_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 18 + }, + "PREDEF_RESTORE_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 19 + }, + "USERDEF_BACKUP_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 20 + }, + "USERDEF_RESTORE_FAILED": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 21 + }, + "USERDEF_UNSUPPORTED_TYPE_FOR_SENSOR": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 22 + } + } + }, + "NA2WLOGGER": { + "id": 22, + "version": { + "first": 1, + "last": 195 + }, + "registers": { + "StoreConfiguration": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Store all configuration items in non-volatile memory.", + "version": { + "first": 147, + "last": 195 + }, + "statictype": "dynamic" + } + ] + }, + "LimitLogSize": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Override the maximum number of entries per log (0 keeps default)", + "version": { + "first": 147, + "last": 195 + }, + "statictype": "static" + } + ] + } + } + }, + "FLEXNETVERSION": { + "id": 24, + "version": { + "first": 1, + "last": 9999 + } + }, + "FLEXNETSERIAL": { + "id": 26, + "version": { + "first": 1, + "last": 17 + }, + "registers": { + "UpgState": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem Ipsum", + "version": { + "first": 2, + "last": 17 + }, + "statictype": "dynamic" + } + ] + }, + "FwdlState": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem Ipsum", + "version": { + "first": 2, + "last": 17 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "UNKNOWN_PARAMETER": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 0 + }, + "TOO_MANY_APPS": { + "action": "Lorem Ipsum", + "description": "Lorem Ipsum", + "id": 1 + } + } + } +} diff --git a/packages/Common/de/PdfSharp.resources.dll b/packages/Common/de/PdfSharp.resources.dll new file mode 100644 index 000000000..e15dfe7a1 Binary files /dev/null and b/packages/Common/de/PdfSharp.resources.dll differ diff --git a/packages/Common/de/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.resources.dll b/packages/Common/de/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.resources.dll new file mode 100644 index 000000000..d55e814ce Binary files /dev/null and b/packages/Common/de/Xylem.Common.Hardware.WaterMeter.Genesis.Applications.resources.dll differ diff --git a/packages/Common/de/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.resources.dll b/packages/Common/de/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.resources.dll new file mode 100644 index 000000000..426ae7487 Binary files /dev/null and b/packages/Common/de/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.resources.dll differ diff --git a/packages/Common/de/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.resources.dll b/packages/Common/de/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.resources.dll new file mode 100644 index 000000000..2310ed6e9 Binary files /dev/null and b/packages/Common/de/Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.resources.dll differ diff --git a/packages/Common/meterconfig.json b/packages/Common/meterconfig.json new file mode 100644 index 000000000..955bd390b --- /dev/null +++ b/packages/Common/meterconfig.json @@ -0,0 +1,10 @@ +{ + "UseRegisterWatchService": true, + "RegisterWatchServiceUrl": "http://sla12iis01/MeterProcessState/api/RegisterWatch/", + "UseMinMaxCheck": true, + "UseErrorLogger": false, + "ErrorLoggerServiceUrl": "http://sla12iis01/MeterProcessState/api/GenesisMeter/", + "UseCalibrationLogger": false, + "CalibrationLoggerServiceUrl": "http://sla12iis01/MeterProcessState/api/GenesisMeter/", + "AutoUpdateFiles":true +} \ No newline at end of file diff --git a/packages/Common/status.json b/packages/Common/status.json new file mode 100644 index 000000000..89f645713 --- /dev/null +++ b/packages/Common/status.json @@ -0,0 +1,250 @@ +{ + "OK": {"id": 0}, + "ERROR_ZERO_APPS": {"id": 1}, + "ERROR_NO_MEMORY": {"id": 2}, + "ERROR_NOT_IMPLEMENTED": {"id": 3}, + "ERROR_BLOCK_NOT_FOUND": {"id": 4}, + "ERROR_NO_SUCH_VAR": {"id": 5}, + "ERROR_NO_CLIB": {"id": 6}, + "ERROR_KEY_FAILURE": {"id": 7}, + "ERROR_NO_SLOTS_FREE": {"id": 8}, + "ERROR_VECTOR_OUT_OF_RANGE": {"id": 9}, + "ERROR_BAD_VECTOR_RELEASE": {"id": 10}, + "ERROR_DRIVER_BUSY": {"id": 11}, + "ERROR_OUT_OF_RANGE": {"id": 12}, + "ERROR_CANT_CANCEL_TICK": {"id": 13}, + "ERROR_ID_OUT_OF_RANGE": {"id": 14}, + "ERROR_HANDLE_OUT_OF_RANGE": {"id": 15}, + "ERROR_INCAPABLE_HARDWARE": {"id": 16}, + "ERROR_ALREADY_OPEN": {"id": 17}, + "ERROR_STRING_TOO_LONG": {"id": 18}, + "ERROR_CORRUPT_CONFIGURATION": {"id": 19}, + "ERROR_TIMEOUT": {"id": 20}, + "ERROR_NO_PRIVILEGE": {"id": 21}, + "ERROR_DEVICE_DORMANT": {"id": 22}, + "ERROR_MEDIA_FAILURE": {"id": 23}, + "ERROR_BUFFER_OVERFLOW": {"id": 24}, + "ERROR_UPGRADE_SYNTAX_ERROR": {"id": 25}, + "ERROR_UPGRADE_DEPENDENCY_NOT_MET": {"id": 26}, + "ERROR_UPGRADE_MISSING": {"id": 27}, + "ERROR_UPGRADE_FRAGMENTED_BY_CLIB": {"id": 28}, + "ERROR_TRUNCATED": {"id": 29}, + "ERROR_INVALID_HEADER": {"id": 30}, + "ERROR_WONT_DELETE_CLIB": {"id": 31}, + "ERROR_BAD_REGISTER_VALUE": {"id": 32}, + "ERROR_NO_CHANGE_MADE": {"id": 33}, + "ERROR_NOT_ATOMIC": {"id": 34}, + "ERROR_CALENDAR_CHANGED": {"id": 35}, + "ERROR_WORM_FIELD": {"id": 36}, + "ERROR_CONVERSION_UNSUPPORTED": {"id": 37}, + "ERROR_CPU_PERMISSION_FAULT": {"id": 38}, + "ERROR_CPU_SOFTWARE_FAULT": {"id": 39}, + "ERROR_CPU_DECODE_FAULT": {"id": 40}, + "ERROR_CPU_ADDRESS_ACCESS_FAULT": {"id": 41}, + "ERROR_CPU_UNCAUGHT_FAULT": {"id": 42}, + "ERROR_ACCURACY_LOST": {"id": 43}, + "ERROR_EXIT_FAILURE": {"id": 44}, + "ERROR_CANT_CANCEL_CALLBACK": {"id": 45}, + "ERROR_RECOVERED_SPACE": {"id": 46}, + "ERROR_DRIVE_FULL": {"id": 47}, + "ERROR_NO_FILE_HANDLES_AVAILABLE": {"id": 48}, + "ERROR_EXCESSIVE_RESTARTS": {"id": 49}, + "ERROR_MPU_SETUP_FAILED": {"id": 50}, + "ERROR_DEVICE_NOT_OPEN": {"id": 51}, + "ERROR_NO_RESPONSE": {"id": 52}, + "ERROR_EXIT_WATCHDOG": {"id": 53}, + "ERROR_WONT_DELETE_SPECIAL": {"id": 54}, + "ERROR_WONT_UPGRADE_SPECIAL": {"id": 55}, + "ERROR_POWERMON_TABLE_FULL": {"id": 256}, + "ERROR_POWERMON_UNKNOWN_PARAMETER": {"id": 257}, + "ERROR_POWERMON_OUT_OF_RANGE": {"id": 258}, + "ERROR_POWERMON_STOP_CYCLING": {"id": 259}, + "ERROR_POWERMON_TEMPERATURE_LIMIT": {"id": 260}, + "ERROR_POWERMON_BATTERY_STATUS_CHANGED": {"id": 261}, + "ERROR_POWERMON_BATTERY_CRITICAL": {"id": 262}, + "ERROR_CONFIGEX_LOCKED_OUT": {"id": 1024}, + "ERROR_CONFIGEX_AUTHENTICATION_FAILURE": {"id": 1025}, + "ERROR_CONFIGEX_ACCESS_DENIED": {"id": 1026}, + "ERROR_CONFIGEX_UNKNOWN_PARAMETER": {"id": 1027}, + "ERROR_CONFIGEX_IN_USE": {"id": 1028}, + "ERROR_CONFIGEX_SIZES_DONT_MATCH": {"id": 1029}, + "ERROR_CONFIGEX_CANT_READ_CONFIG_FILE": {"id": 1030}, + "ERROR_CONFIGEX_USER_NOT_KNOWN": {"id": 1031}, + "ERROR_CONFIGEX_CANT_CREATE_CONFIG_FILE": {"id": 1032}, + "ERROR_CONFIGEX_STORE_DIDNT_STORE": {"id": 1033}, + "ERROR_CONFIGEX_STORE_CORRUPT": {"id": 1034}, + "ERROR_CONFIGEX_EXPECTED_WRITE": {"id": 1035}, + "ERROR_CONFIGEX_EXPECTED_READ": {"id": 1036}, + "ERROR_CONFIGEX_STOP_CYCLING": {"id": 1037}, + "ERROR_CONFIGEX_TOO_MANY_OPEN": {"id": 1038}, + "ERROR_CONFIGEX_NEVER_OPENED": {"id": 1039}, + "ERROR_CONFIGEX_FILE_PROTECTED": {"id": 1040}, + "ERROR_CONFIGEX_PARTIAL_RECALL": {"id": 1041}, + "ERROR_CONFIGEX_DEFAULT_PASSWORD_USED": {"id": 1042}, + "ERROR_OPTICALPORT_PAYLOAD_COUNT": {"id": 1280}, + "ERROR_OPTICALPORT_INVALID_SUBREASON": {"id": 1281}, + "ERROR_OPTICALPORT_INVALID_BAUDRATE": {"id": 1282}, + "ERROR_OPTICALPORT_INVALID_BUFFERSIZE": {"id": 1283}, + "ERROR_OPTICALPORT_CRCFAILURE": {"id": 1284}, + "ERROR_OPTICALPORT_UNRECOGNISEDCMD": {"id": 1285}, + "ERROR_OPTICALPORT_FRAMING": {"id": 1286}, + "ERROR_OPTICALPORT_OVERFLOW": {"id": 1287}, + "ERROR_OPTICALPORT_PACKETTIMEOUT": {"id": 1288}, + "ERROR_OPTICALPORT_INVALIDESCAPE": {"id": 1289}, + "ERROR_OPTICALPORT_UNKNOWN_PARAMETER": {"id": 1290}, + "ERROR_OPTICALPORT_TRAINING_FAILED": {"id": 1291}, + "ERROR_OPTICALPORT_NOBREAK": {"id": 1292}, + "ERROR_LOGGER_UNKNOWN_PARAMETER": {"id": 2048}, + "ERROR_LOGGER_RESTARTED": {"id": 2049}, + "ERROR_LOGGER_BLOCK_LISTING": {"id": 2050}, + "ERROR_CUSTOMER_REBOOT,": {"id": 2304}, + "ERROR_CUSTOMER_REBOOT_STOP,": {"id": 2305}, + "ERROR_CUSTOMER_LOW_BATTERY,": {"id": 2306}, + "ERROR_CUSTOMER_LOW_BATTERY_STOP,": {"id": 2307}, + "ERROR_CUSTOMER_VERY_LOW_BATTERY,": {"id": 2308}, + "ERROR_CUSTOMER_VERY_LOW_BATTERY_STOP,": {"id": 2309}, + "ERROR_CUSTOMER_CONFIG_ERROR,": {"id": 2310}, + "ERROR_CUSTOMER_CONFIG_ERROR_STOP,": {"id": 2311}, + "ERROR_CUSTOMER_EMPTY_PIPE,": {"id": 2312}, + "ERROR_CUSTOMER_EMPTY_PIPE_STOP,": {"id": 2313}, + "ERROR_CUSTOMER_MAGNETIC_TAMPER,": {"id": 2314}, + "ERROR_CUSTOMER_MAGNETIC_TAMPER_STOP,": {"id": 2315}, + "ERROR_CUSTOMER_REVERSE_FLOW,": {"id": 2316}, + "ERROR_CUSTOMER_REVERSE_FLOW_STOP,": {"id": 2317}, + "ERROR_CUSTOMER_SUSPECT_LEAK,": {"id": 2318}, + "ERROR_CUSTOMER_SUSPECT_LEAK_STOP,": {"id": 2319}, + "ERROR_CUSTOMER_BROKEN_PIPE,": {"id": 2320}, + "ERROR_CUSTOMER_BROKEN_PIPE_STOP,": {"id": 2321}, + "ERROR_CUSTOMER_LOW_PRESSURE,": {"id": 2322}, + "ERROR_CUSTOMER_LOW_PRESSURE_STOP,": {"id": 2323}, + "ERROR_CUSTOMER_HIGH_PRESSURE,": {"id": 2324}, + "ERROR_CUSTOMER_HIGH_PRESSURE_STOP,": {"id": 2325}, + "ERROR_CUSTOMER_LOW_TEMPERATURE,": {"id": 2326}, + "ERROR_CUSTOMER_LOW_TEMPERATURE_STOP,": {"id": 2327}, + "ERROR_CUSTOMER_HIGH_TEMPERATURE,": {"id": 2328}, + "ERROR_CUSTOMER_HIGH_TEMPERATURE_STOP,": {"id": 2329}, + "ERROR_CUSTOMER_RADIO_ERROR,": {"id": 2330}, + "ERROR_CUSTOMER_RADIO_ERROR_STOP,": {"id": 2331}, + "ERROR_CUSTOMER_METROLOGY_PARAMS,": {"id": 2332}, + "ERROR_CUSTOMER_METROLOGY_PARAMS_STOP,": {"id": 2333}, + "ERROR_CUSTOMER_METROLOGY_MEASURE,": {"id": 2334}, + "ERROR_CUSTOMER_METROLOGY_MEASURE_STOP,": {"id": 2335}, + "ERROR_CUSTOMER_UNALLOCATED_6,": {"id": 2336}, + "ERROR_CUSTOMER_UNALLOCATED_6_STOP,": {"id": 2337}, + "ERROR_CUSTOMER_UNALLOCATED_7,": {"id": 2338}, + "ERROR_CUSTOMER_UNALLOCATED_7_STOP,": {"id": 2339}, + "ERROR_CUSTOMER_UNALLOCATED_8,": {"id": 2340}, + "ERROR_CUSTOMER_UNALLOCATED_8_STOP,": {"id": 2341}, + "ERROR_CUSTOMER_UNALLOCATED_9,": {"id": 2342}, + "ERROR_CUSTOMER_UNALLOCATED_9_STOP,": {"id": 2343}, + "ERROR_CUSTOMER_UNALLOCATED_10,": {"id": 2344}, + "ERROR_CUSTOMER_UNALLOCATED_10_STOP,": {"id": 2345}, + "ERROR_CUSTOMER_UNALLOCATED_11,": {"id": 2346}, + "ERROR_CUSTOMER_UNALLOCATED_11_STOP,": {"id": 2347}, + "ERROR_CUSTOMER_UNALLOCATED_12,": {"id": 2348}, + "ERROR_CUSTOMER_UNALLOCATED_12_STOP,": {"id": 2349}, + "ERROR_CUSTOMER_UNALLOCATED_13,": {"id": 2350}, + "ERROR_CUSTOMER_UNALLOCATED_13_STOP,": {"id": 2351}, + "ERROR_CUSTOMER_UNALLOCATED_14,": {"id": 2352}, + "ERROR_CUSTOMER_UNALLOCATED_14_STOP,": {"id": 2353}, + "ERROR_CUSTOMER_UNALLOCATED_15,": {"id": 2354}, + "ERROR_CUSTOMER_UNALLOCATED_15_STOP,": {"id": 2355}, + "ERROR_CUSTOMER_UNALLOCATED_16,": {"id": 2356}, + "ERROR_CUSTOMER_UNALLOCATED_16_STOP,": {"id": 2357}, + "ERROR_CUSTOMER_UNALLOCATED_17,": {"id": 2358}, + "ERROR_CUSTOMER_UNALLOCATED_17_STOP,": {"id": 2359}, + "ERROR_CUSTOMER_UNALLOCATED_18,": {"id": 2360}, + "ERROR_CUSTOMER_UNALLOCATED_18_STOP,": {"id": 2361}, + "ERROR_CUSTOMER_UNALLOCATED_19,": {"id": 2362}, + "ERROR_CUSTOMER_UNALLOCATED_19_STOP,": {"id": 2363}, + "ERROR_CUSTOMER_UNALLOCATED_20,": {"id": 2364}, + "ERROR_CUSTOMER_UNALLOCATED_20_STOP,": {"id": 2365}, + "ERROR_CUSTOMER_UNALLOCATED_21,": {"id": 2366}, + "ERROR_CUSTOMER_UNALLOCATED_21_STOP,": {"id": 2367}, + "ERROR_CUSTOMER_UNKNOWN_PARAMETER,": {"id": 2368}, + "ERROR_CUSTOMER_LOCALE_UNDEFINED,": {"id": 2369}, + "ERROR_CUSTOMER_NO_SUCH_ALARM,": {"id": 2370}, + "ERROR_CUSTOMER_OUT_OF_RANGE,": {"id": 2371}, + "ERROR_CUSTOMER_NOT_IMPLEMENTED,": {"id": 2372}, + "ERROR_CUSTOMER_BAD_CONFIG,": {"id": 2373}, + "ERROR_CUSTOMER_DID_NOT_STORE,": {"id": 2374}, + "ERROR_CUSTOMER_STORE_PENDING,": {"id": 2375}, + "ERROR_GENESISFLOW_BAD_TEST": {"id": 3840}, + "ERROR_GENESISFLOW_BAD_CONFIG": {"id": 3841}, + "ERROR_GENESISFLOW_DID_NOT_STORE": {"id": 3842}, + "ERROR_GENESISFLOW_STORE_PENDING": {"id": 3843}, + "ERROR_GENESISFLOW_STORE_BUFFER_SIZE": {"id": 3844}, + "ERROR_GENESISFLOW_STRING_TOO_LONG": {"id": 3845}, + "ERROR_GENESISFLOW_BAD_DISPLAY_MODE": {"id": 3846}, + "ERROR_GENESISFLOW_GLASS_TOO_LONG": {"id": 3847}, + "ERROR_GENESISFLOW_SLOT_NOT_YOURS": {"id": 3848}, + "ERROR_GENESISFLOW_SUBLIST_TOO_LONG": {"id": 3849}, + "ERROR_GENESISFLOW_NO_TEMP_SENSOR": {"id": 3850}, + "ERROR_GENESISFLOW_UNDER_TEMP": {"id": 3851}, + "ERROR_GENESISFLOW_LOW_TEMP_WARNING": {"id": 3852}, + "ERROR_GENESISFLOW_HIGH_TEMP_WARNING": {"id": 3853}, + "ERROR_GENESISFLOW_OVER_TEMP": {"id": 3854}, + "ERROR_GENESISFLOW_MISMATCHING_LSB": {"id": 3855}, + "ERROR_GENESISFLOW_OUT_OF_RANGE_PWDIFF": {"id": 3856}, + "ERROR_GENESISFLOW_OUT_OF_RANGE_AMPLITUDE": {"id": 3857}, + "ERROR_GENESISFLOW_OUT_OF_RANGE_TOF": {"id": 3858}, + "ERROR_GENESISFLOW_OUT_OF_RANGE_DTOF": {"id": 3859}, + "ERROR_GENESISFLOW_TOF_TIMEOUT": {"id": 3860}, + "ERROR_GENESISFLOW_CAL_CHANGE": {"id": 3861}, + "ERROR_GENESISFLOW_OUT_OF_RANGE_INTERVAL": {"id": 3862}, + "ERROR_GENESISFLOW_VALIDATE_FAIL": {"id": 3863}, + "ERROR_GENESISFLOW_OUT_OF_RANGE_TEMP": {"id": 3864}, + "ERROR_GENESISFLOW_NOT_READY": {"id": 3865}, + "ERROR_GENESISFLOW_METROLOGY_ERROR": {"id": 3866}, + "ERROR_GENESISFLOW_GP30_ID_ERROR": {"id": 3867}, + "ERROR_GENESISFLOW_GP30_FLAG_ERROR": {"id": 3868}, + "ERROR_GENESISFLOW_GP30_TIMEOUT_ERROR": {"id": 3869}, + "ERROR_GENESISFLOW_GP30_REQUEST_ERROR": {"id": 3870}, + "ERROR_GENESISFLOW_GP30_SEQ_ERROR": {"id": 3871}, + "ERROR_GENESISFLOW_VALUE_SEALED": {"id": 3872}, + "ERROR_GENESISFLOW_IN_TEST_MODE": {"id": 3873}, + "ERROR_GENESISFLOW_UNKNOWN_STATE": {"id": 3874}, + "ERROR_GENESISFLOW_DISPLAY_INIT_SUCCEEDED": {"id": 3875}, + "ERROR_GENESISFLOW_DISPLAY_INIT_FAILED": {"id": 3876}, + "ERROR_GENESISFLOW_GP30_INIT_FAILED": {"id": 3877}, + "ERROR_GENESISFLOW_START_TIMER_SUCCEEDED": {"id": 3878}, + "ERROR_GENESISFLOW_START_TIMER_FAILED": {"id": 3879}, + "ERROR_GENESISFLOW_VOLUME_STORE_FAILED": {"id": 3880}, + "ERROR_GENESISFLOW_EMPTY_PIPE": {"id": 3881}, + "ERROR_GENESISFLOW_PARAMETER_ERROR": {"id": 3882}, + "ERROR_GENESISFLOW_GP30_INTERNAL_ERROR": {"id": 3883}, + "ERROR_GENESISFLOW_GLASS_TOO_SHORT": {"id": 3884}, + "ERROR_GENESISFLOW_STORE_CAL_FAILED": {"id": 3885}, + "ERROR_GENESISFLOW_STORE_CONF_FAILED": {"id": 3886}, + "ERROR_GENESISFLOW_MODE_CHANGE": {"id": 3887}, + "ERROR_GENESISFLOW_BAD_POW10": {"id": 3888}, + "ERROR_GENESISFLOW_BAD_DECIMAL_SEPARATOR": {"id": 3889}, + "ERROR_GENESISFLOW_BAD_UNITS": {"id": 3890}, + "ERROR_GENESISFLOW_BAD_ICONS": {"id": 3891}, + "ERROR_GENESISFLOW_BAD_THOUSAND_SEPARATOR": {"id": 3892}, + "ERROR_GENESISFLOW_NEW_LOCALE_REJECTED": {"id": 3893}, + "ERROR_GENESISFLOW_SET_ACCUMULATORS": {"id": 3894}, + "ERROR_GENESISFLOW_SEAL_OPENED": {"id": 3895}, + "ERROR_GENESISFLOW_CALIBRATION_RECALL_INCOMPLETE": {"id": 3896}, + "ERROR_METROLOGYASST_BAD_CONFIG": {"id": 4608}, + "ERROR_METROLOGYASST_DID_NOT_STORE": {"id": 4609}, + "ERROR_METROLOGYASST_PENDING_STORE": {"id": 4610}, + "ERROR_IRDA_BAD_CONFIG": {"id": 5120}, + "ERROR_IRDA_BAD_LENGTH": {"id": 5121}, + "ERROR_NA2WALARMS_SENSOR_INVALID": {"id": 5888}, + "ERROR_NA2WALARMS_UNKNOWN_PARAMETER": {"id": 5889}, + "ERROR_NA2WALARMS_ALARM_INVALID": {"id": 5890}, + "ERROR_NA2WALARMS_UNIMPLEMENTED": {"id": 5891}, + "ERROR_NA2WALARMS_UNCONFIGURED": {"id": 5892}, + "ERROR_NA2WALARMS_CONFIG_INVALID": {"id": 5893}, + "ERROR_NA2WALARMS_NO_LATEST": {"id": 5894}, + "ERROR_NA2WALARMS_FIXED_TYPE": {"id": 5895}, + "ERROR_NA2WALARMS_PREDEF_SET": {"id": 5896}, + "ERROR_NA2WALARMS_USERDEF_VOLUME_SET": {"id": 5897}, + "ERROR_NA2WALARMS_USERDEF_TEMPERATURE_SET": {"id": 5898}, + "ERROR_NA2WALARMS_USERDEF_PRESSURE_SET": {"id": 5899}, + "ERROR_NA2WALARMS_PREDEF_CLEAR": {"id": 5900}, + "ERROR_NA2WALARMS_USERDEF_VOLUME_CLEAR": {"id": 5901}, + "ERROR_NA2WALARMS_USERDEF_TEMPERATURE_CLEAR": {"id": 5902}, + "ERROR_NA2WALARMS_USERDEF_PRESSURE_CLEAR": {"id": 5903} +} \ No newline at end of file diff --git a/packages/FluentNHibernate.3.4.0/.signature.p7s b/packages/FluentNHibernate.3.4.0/.signature.p7s new file mode 100644 index 000000000..d30b8b32a Binary files /dev/null and b/packages/FluentNHibernate.3.4.0/.signature.p7s differ diff --git a/packages/FluentNHibernate.3.4.0/FluentNHibernate.3.4.0.nupkg b/packages/FluentNHibernate.3.4.0/FluentNHibernate.3.4.0.nupkg new file mode 100644 index 000000000..fb12795d2 Binary files /dev/null and b/packages/FluentNHibernate.3.4.0/FluentNHibernate.3.4.0.nupkg differ diff --git a/packages/FluentNHibernate.3.4.0/LICENSE b/packages/FluentNHibernate.3.4.0/LICENSE new file mode 100644 index 000000000..6d96b3afe --- /dev/null +++ b/packages/FluentNHibernate.3.4.0/LICENSE @@ -0,0 +1,10 @@ +Copyright (c) 2008-2018, James Gregory and contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * Neither the name of James Gregory nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/packages/FluentNHibernate.3.4.0/README.md b/packages/FluentNHibernate.3.4.0/README.md new file mode 100644 index 000000000..8a2437d23 --- /dev/null +++ b/packages/FluentNHibernate.3.4.0/README.md @@ -0,0 +1,37 @@ +![FluentNHibernate logo](https://raw.githubusercontent.com/nhibernate/fluent-nhibernate/main/docs/logo.png) + +[![Build status](https://ci.appveyor.com/api/projects/status/684r2ot07i2lrcij/branch/main?svg=true)](https://ci.appveyor.com/project/nhibernate/fluent-nhibernate/branch/main) +[![NuGet](https://img.shields.io/nuget/v/FluentNHibernate.svg)](https://www.nuget.org/packages/FluentNHibernate) + +## What is FluentNHibernate? +Fluent, XML-less, compile safe, automated, convention-based mappings for NHibernate. *Get your fluent on.* + +## Where can I get it? + +Install using the [FluentNHibernate NuGet package](https://www.nuget.org/packages/FluentNHibernate): + +``` +dotnet add package FluentNHibernate +``` + +## How do I use it? + +* Read the [introduction](https://github.com/FluentNHibernate/fluent-nhibernate/wiki/Getting-started). +* Get latest version from [NuGet](https://www.nuget.org/packages/FluentNHibernate) +* Create your [first project](https://github.com/FluentNHibernate/fluent-nhibernate/wiki/Getting-started#wiki-yourfirstproject). + +## Further reading + +Once you've followed the above, you can compare our [auto mapping](https://github.com/FluentNHibernate/fluent-nhibernate/wiki/Auto-mapping) to our [fluent interface](https://github.com/FluentNHibernate/fluent-nhibernate/wiki/Fluent-mapping) to see which suits your application, read through our [API documentation](https://github.com/FluentNHibernate/fluent-nhibernate/wiki/Fluent-configuration), or just see what's available for reading in our [wiki](https://github.com/FluentNHibernate/fluent-nhibernate/wiki). + +Contributors +--------------------------------------------- + +Fluent NHibernate wouldn't be possible without the time and effort of its contributors. The team comprises of [James Gregory](http://jagregory.com), [Paul Batum](http://www.paulbatum.com), Andrew Stewart, [Hudson Akridge](https://github.com/HudsonAkridge), [Gleb Chermennov](https://github.com/chester89) and [Jorge Rodríguez Galán](https://github.com/jrgcubano). + +**Our valued committers are:** Aaron Jensen, Alexander Gross, Andrew Stewart, Barry Dahlberg, Bobby Johnson, Brian Donahue, Cameron Harris, Chad Myers, Chris Chilvers, Craig Neuwirt, Dan Malcolm, Daniel Mirapalheta, David Archer, David Longnecker, David R. Longnecker, Derick Bailey, Erik Ojebo, Firo, Hudson Akridge, Ivan Zlatev, James Freiwirth, James Gregory, James Kovacs, Jeremy Skinner, Lee Henson, Louis DeJardin, Patric Forsgard, Paul Batum, Roelof Blom, Stuart Childs, Tom Janssens, Tuna Toksoz, U-BSOD\pruiz, di97mni, dschilling, felixg, jeremydmiller, kevm, leebrandt, maxild, robsosno, [Jorge Rodríguez Galán](https://github.com/jrgcubano) and many more.

+ +Thanks goes to [Jeremy Miller](http://codebetter.com/blogs/jeremy.miller) for the original idea and implementation. + +Fluent NHibernate is © 2008-2018 [James Gregory](http://jagregory.com) and contributors under the [BSD license](https://github.com/nhibernate/fluent-nhibernate/blob/main/LICENSE) + diff --git a/packages/FluentNHibernate.3.4.0/lib/net461/FluentNHibernate.dll b/packages/FluentNHibernate.3.4.0/lib/net461/FluentNHibernate.dll new file mode 100644 index 000000000..bdbac086d Binary files /dev/null and b/packages/FluentNHibernate.3.4.0/lib/net461/FluentNHibernate.dll differ diff --git a/packages/FluentNHibernate.3.4.0/lib/net461/FluentNHibernate.pdb b/packages/FluentNHibernate.3.4.0/lib/net461/FluentNHibernate.pdb new file mode 100644 index 000000000..d7b71512d Binary files /dev/null and b/packages/FluentNHibernate.3.4.0/lib/net461/FluentNHibernate.pdb differ diff --git a/packages/FluentNHibernate.3.4.0/lib/netcoreapp2.0/FluentNHibernate.dll b/packages/FluentNHibernate.3.4.0/lib/netcoreapp2.0/FluentNHibernate.dll new file mode 100644 index 000000000..b9eadace5 Binary files /dev/null and b/packages/FluentNHibernate.3.4.0/lib/netcoreapp2.0/FluentNHibernate.dll differ diff --git a/packages/FluentNHibernate.3.4.0/lib/netcoreapp2.0/FluentNHibernate.pdb b/packages/FluentNHibernate.3.4.0/lib/netcoreapp2.0/FluentNHibernate.pdb new file mode 100644 index 000000000..8ce6c4639 Binary files /dev/null and b/packages/FluentNHibernate.3.4.0/lib/netcoreapp2.0/FluentNHibernate.pdb differ diff --git a/packages/FluentNHibernate.3.4.0/lib/netstandard2.0/FluentNHibernate.dll b/packages/FluentNHibernate.3.4.0/lib/netstandard2.0/FluentNHibernate.dll new file mode 100644 index 000000000..b2219d12f Binary files /dev/null and b/packages/FluentNHibernate.3.4.0/lib/netstandard2.0/FluentNHibernate.dll differ diff --git a/packages/FluentNHibernate.3.4.0/lib/netstandard2.0/FluentNHibernate.pdb b/packages/FluentNHibernate.3.4.0/lib/netstandard2.0/FluentNHibernate.pdb new file mode 100644 index 000000000..8472ef657 Binary files /dev/null and b/packages/FluentNHibernate.3.4.0/lib/netstandard2.0/FluentNHibernate.pdb differ diff --git a/packages/FluentNHibernate.3.4.0/logo-nuget.png b/packages/FluentNHibernate.3.4.0/logo-nuget.png new file mode 100644 index 000000000..8a4a59048 Binary files /dev/null and b/packages/FluentNHibernate.3.4.0/logo-nuget.png differ diff --git a/packages/Iesi.Collections.4.0.4/.signature.p7s b/packages/Iesi.Collections.4.0.4/.signature.p7s new file mode 100644 index 000000000..fa0159dfa Binary files /dev/null and b/packages/Iesi.Collections.4.0.4/.signature.p7s differ diff --git a/packages/Iesi.Collections.4.0.4/Iesi.Collections.4.0.4.nupkg b/packages/Iesi.Collections.4.0.4/Iesi.Collections.4.0.4.nupkg new file mode 100644 index 000000000..03c3a7879 Binary files /dev/null and b/packages/Iesi.Collections.4.0.4/Iesi.Collections.4.0.4.nupkg differ diff --git a/packages/Iesi.Collections.4.0.4/lib/net40/Iesi.Collections.dll b/packages/Iesi.Collections.4.0.4/lib/net40/Iesi.Collections.dll new file mode 100644 index 000000000..09c113639 Binary files /dev/null and b/packages/Iesi.Collections.4.0.4/lib/net40/Iesi.Collections.dll differ diff --git a/packages/Iesi.Collections.4.0.4/lib/net461/Iesi.Collections.dll b/packages/Iesi.Collections.4.0.4/lib/net461/Iesi.Collections.dll new file mode 100644 index 000000000..c35d072fd Binary files /dev/null and b/packages/Iesi.Collections.4.0.4/lib/net461/Iesi.Collections.dll differ diff --git a/packages/Iesi.Collections.4.0.4/lib/netstandard1.0/Iesi.Collections.dll b/packages/Iesi.Collections.4.0.4/lib/netstandard1.0/Iesi.Collections.dll new file mode 100644 index 000000000..4b4636376 Binary files /dev/null and b/packages/Iesi.Collections.4.0.4/lib/netstandard1.0/Iesi.Collections.dll differ diff --git a/packages/Iesi.Collections.4.0.4/lib/netstandard1.3/Iesi.Collections.dll b/packages/Iesi.Collections.4.0.4/lib/netstandard1.3/Iesi.Collections.dll new file mode 100644 index 000000000..4c21085cd Binary files /dev/null and b/packages/Iesi.Collections.4.0.4/lib/netstandard1.3/Iesi.Collections.dll differ diff --git a/packages/NHibernate.5.5.2/.signature.p7s b/packages/NHibernate.5.5.2/.signature.p7s new file mode 100644 index 000000000..06405fb2d Binary files /dev/null and b/packages/NHibernate.5.5.2/.signature.p7s differ diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/FireBird.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/FireBird.cfg.xml new file mode 100644 index 000000000..9e3c8e429 --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/FireBird.cfg.xml @@ -0,0 +1,32 @@ + + + + + + NHibernate.Driver.FirebirdClientDriver + + DataSource=localhost; + Database=nhibernate; + User ID=SYSDBA;Password=masterkey; + MaxPoolSize=200; + charset=utf8; + + false + NHibernate.Dialect.FirebirdDialect + 60 + true 1, false 0, yes 1, no 0 + + diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/HANA.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/HANA.cfg.xml new file mode 100644 index 000000000..f21314961 --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/HANA.cfg.xml @@ -0,0 +1,18 @@ + + + + + NHibernate.Driver.HanaColumnStoreDriver + + + Server=localhost:39015;UserID=nhibernate;Password=; + Enlist=false; + + NHibernate.Dialect.HanaColumnStoreDialect + + diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/MSSQL.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/MSSQL.cfg.xml new file mode 100644 index 000000000..8e5706a5c --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/MSSQL.cfg.xml @@ -0,0 +1,16 @@ + + + + + + NHibernate.Driver.Sql2008ClientDriver + + Server=(local);initial catalog=nhibernate;Integrated Security=SSPI + + NHibernate.Dialect.MsSql2008Dialect + + diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/MySql.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/MySql.cfg.xml new file mode 100644 index 000000000..524deb631 --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/MySql.cfg.xml @@ -0,0 +1,16 @@ + + + + + NHibernate.Driver.MySqlDataDriver + + Database=nhibernate;Data Source=localhost;User Id=nhibernate;Password=; + Old Guids=True; + + NHibernate.Dialect.MySQL5Dialect + + \ No newline at end of file diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/Oracle-Managed.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/Oracle-Managed.cfg.xml new file mode 100644 index 000000000..efa6b51a5 --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/Oracle-Managed.cfg.xml @@ -0,0 +1,25 @@ + + + + + + NHibernate.Driver.OracleManagedDataClientDriver + + User ID=nhibernate;Password=nhibernate;Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL))) + + false + NHibernate.Dialect.Oracle10gDialect + true 1, false 0, yes 'Y', no 'N' + + false + + + + diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/Oracle.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/Oracle.cfg.xml new file mode 100644 index 000000000..790f06f9c --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/Oracle.cfg.xml @@ -0,0 +1,25 @@ + + + + + + NHibernate.Driver.OracleClientDriver + + User ID=nhibernate;Password=nhibernate;Data Source=localhost + + false + NHibernate.Dialect.OracleDialect + true 1, false 0, yes 'Y', no 'N' + + false + + + + \ No newline at end of file diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/PostgreSQL.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/PostgreSQL.cfg.xml new file mode 100644 index 000000000..459543f2b --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/PostgreSQL.cfg.xml @@ -0,0 +1,15 @@ + + + + + NHibernate.Driver.NpgsqlDriver + + Server=localhost;Database=nhibernate;User ID=nhibernate;Password=nhibernate;Enlist=true; + + NHibernate.Dialect.PostgreSQL83Dialect + + diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/SQLite.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/SQLite.cfg.xml new file mode 100644 index 000000000..50890aea5 --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/SQLite.cfg.xml @@ -0,0 +1,20 @@ + + + + + NHibernate.Driver.SQLite20Driver + + + Data Source=nhibernate.db; + DateTimeFormatString=yyyy-MM-dd HH:mm:ss.FFFFFFF; + + NHibernate.Dialect.SQLiteDialect + + diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/SapSQLAnywhere.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/SapSQLAnywhere.cfg.xml new file mode 100644 index 000000000..1ce5a50bb --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/SapSQLAnywhere.cfg.xml @@ -0,0 +1,21 @@ + + + + + NHibernate.Driver.SapSQLAnywhere17Driver + + + UID=DBA;PWD=sql;Server=localhost;DBN=nhibernate;DBF=c:\nhibernate.db;ASTOP=No;Enlist=false; + + NHibernate.Dialect.SapSQLAnywhere17Dialect + true=1;false=0 + + diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/SqlServerCe.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/SqlServerCe.cfg.xml new file mode 100644 index 000000000..c3b27bfda --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/SqlServerCe.cfg.xml @@ -0,0 +1,17 @@ + + + + + + 0 + NHibernate.Driver.SqlServerCeDriver + + Data Source=NHibernate.sdf + + NHibernate.Dialect.MsSqlCe40Dialect + + \ No newline at end of file diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/SybaseASE.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/SybaseASE.cfg.xml new file mode 100644 index 000000000..4f722b1f0 --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/SybaseASE.cfg.xml @@ -0,0 +1,16 @@ + + + + + NHibernate.Driver.SybaseAseClientDriver + + Data Source=10.0.0.1;Port=5000;Database=nhibernate;User ID=nhibernate;Password=password + + NHibernate.Dialect.SybaseASE15Dialect + true=1;false=0 + + \ No newline at end of file diff --git a/packages/NHibernate.5.5.2/ConfigurationTemplates/SybaseSQLAnywhere.cfg.xml b/packages/NHibernate.5.5.2/ConfigurationTemplates/SybaseSQLAnywhere.cfg.xml new file mode 100644 index 000000000..04a929b7b --- /dev/null +++ b/packages/NHibernate.5.5.2/ConfigurationTemplates/SybaseSQLAnywhere.cfg.xml @@ -0,0 +1,16 @@ + + + + + NHibernate.Driver.SybaseSQLAnywhereDriver + + UID=DBA;PWD=sql;Server=localhost;DBN=nhibernate;DBF=c:\nhibernate.db;ASTOP=No + + NHibernate.Dialect.SybaseSQLAnywhere12Dialect + true=1;false=0 + + \ No newline at end of file diff --git a/packages/NHibernate.5.5.2/NHibernate-NuGet.png b/packages/NHibernate.5.5.2/NHibernate-NuGet.png new file mode 100644 index 000000000..8a4a59048 Binary files /dev/null and b/packages/NHibernate.5.5.2/NHibernate-NuGet.png differ diff --git a/packages/NHibernate.5.5.2/NHibernate.5.5.2.nupkg b/packages/NHibernate.5.5.2/NHibernate.5.5.2.nupkg new file mode 100644 index 000000000..b31ae0c9a Binary files /dev/null and b/packages/NHibernate.5.5.2/NHibernate.5.5.2.nupkg differ diff --git a/packages/NHibernate.5.5.2/NHibernate.license.txt b/packages/NHibernate.5.5.2/NHibernate.license.txt new file mode 100644 index 000000000..866688dba --- /dev/null +++ b/packages/NHibernate.5.5.2/NHibernate.license.txt @@ -0,0 +1,460 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/packages/NHibernate.5.5.2/NHibernate.readme.md b/packages/NHibernate.5.5.2/NHibernate.readme.md new file mode 100644 index 000000000..6290ebbaa --- /dev/null +++ b/packages/NHibernate.5.5.2/NHibernate.readme.md @@ -0,0 +1,116 @@ +Welcome to NHibernate +===================== + +NHibernate is a mature, open source object-relational mapper for the .NET framework. It is actively developed, +fully featured and used in thousands of successful projects. + +The NHibernate community website - - has a range of resources to help you get started, +including [howtos][A1], [blogs][A2] and [reference documentation][A3]. + +[A1]: https://nhibernate.info/doc/ +[A2]: https://nhibernate.info/blog/ +[A3]: https://nhibernate.info/doc/nh/en/index.html + +Latest Release Version +-------------- + +The quickest way to get the latest release of NHibernate is to add it to your project using +NuGet (). + +Alternatively binaries are available from SourceForge at . + +You are encouraged to review the release notes ([releasenotes.txt](releasenotes.txt)), particularly when upgrading to a +later version. The release notes will generally document any breaking changes. + +Nightly Development Builds +-------------------------- + +The quickest way to get the latest development build of NHibernate is to add it to your project using +NuGet from Cloudsmith feed (). + +In order to make life a little bit easier you can register the package source in the NuGet.Config +file in the top folder of your project, similar to the following. + +```xml + + + + + + +``` + +Package repository hosting is graciously provided by [Cloudsmith](https://cloudsmith.com). +Cloudsmith is the only fully hosted, cloud-native, universal package management solution, that +enables your organization to create, store and share packages in any format, to any place, with total +confidence. + +[![Hosted By: Cloudsmith](https://img.shields.io/badge/OSS%20hosting%20by-cloudsmith-blue?logo=cloudsmith&style=flat-square)](https://cloudsmith.com) + +Community Forums +---------------- + +There are two official NHibernate community forums: + +* [NHibernate Users][B1] - a forum for users to find help using NHibernate +* [NHibernate Development][B2] - a forum for the developers of NHibernate + +[B1]: http://groups.google.com/group/nhusers +[B2]: http://groups.google.com/group/nhibernate-development + +Bug Reports +----------- + +If you find any bugs, please report them using the [GitHub issue tracker][C1]. A +test-case that demonstrates the issue is usually required. Instructions on providing a test-case +can be found in [contributing guidelines][C3] or [here][C2]. + +[C1]: https://github.com/nhibernate/nhibernate-core/issues +[C2]: https://nhibernate.info/blog/2008/10/04/the-best-way-to-solve-nhibernate-bugs-submit-good-unit-test.html +[C3]: CONTRIBUTING.md + +Licenses +-------- + +- This software is distributed under the terms of the Free Software Foundation [Lesser GNU Public License (LGPL), version 2.1][D1] (see [LICENSE.txt][D2]). +- The documentation for this software is distributed under the terms of the Free Software Foundation [GNU Free Documentation License (GNU FDL), version 1.1][D3] (see [doc/LICENSE.txt][D4]). + +[D1]: http://www.gnu.org/licenses/lgpl-2.1-standalone.html +[D2]: LICENSE.txt +[D3]: http://www.gnu.org/licenses/old-licenses/fdl-1.1-standalone.html +[D4]: doc/LICENSE.txt + +Credits +------- + +Many thanks to the following individuals, organisations and projects whose work is so important to the success +of NHibernate (in no particular order): + +* [NUnit][] - unit-testing +* [Nant][] - build automation +* [CodeBetter][] - [TeamCity][] continuous integration and build management server hosting +* [GitHub][] and [SourceForge][] - source code hosting +* [Atlassian][] - JIRA bug tracker licence and hosting +* [Log4net][] - logging, by the [Apache Software Foundation][] +* [JetBrains][] - [ReSharper][] licences for NHibernate developers +* [LinFu][] - proxy implementation (Philip Laureano) +* Iesi.Collections - source code taken from an [article][] written by Jason Smith +* [Relinq][] - Linq provider for NHibernate +* [AsyncGenerator][] - Roslyn based async C# code generator by @maca88 + + +[NUnit]: http://www.nunit.org +[Nant]: http://nant.sourceforge.net +[CodeBetter]: http://www.codebetter.com +[TeamCity]: http://www.jetbrains.com/teamcity +[GitHub]: http://www.github.com +[SourceForge]: http://www.sourceforge.net +[Atlassian]: http://www.atlassian.com +[Log4net]: http://logging.apache.org/log4net +[Apache Software Foundation]: http://www.apache.org +[JetBrains]: http://www.jetbrains.com +[ReSharper]: http://www.jetbrains.com/resharper +[LinFu]: https://github.com/philiplaureano/LinFu +[article]: http://www.codeproject.com/KB/recipes/sets.aspx +[Relinq]: https://github.com/re-motion/Relinq +[AsyncGenerator]: http://github.com/maca88/AsyncGenerator diff --git a/packages/NHibernate.5.5.2/NHibernate.releasenotes.txt b/packages/NHibernate.5.5.2/NHibernate.releasenotes.txt new file mode 100644 index 000000000..024a2a306 --- /dev/null +++ b/packages/NHibernate.5.5.2/NHibernate.releasenotes.txt @@ -0,0 +1,5495 @@ +Build 5.5.2 +============================= + +Release notes - NHibernate - Version 5.5.2 + +3 issues were resolved in this release, including CVE CVE-2024-39677 through the merge of 5.4.9. + +** Bug + + * #3536 MemberwiseClone should be virtual error in dotnet 9 preview 3 + +** Task + + * #3578 Release 5.5.1 + * #3577 Merge 5.4.9 into 5.5.x + + +Build 5.5.1 +============================= + +Release notes - NHibernate - Version 5.5.1 + +3 issues were resolved in this release. + +** Bug + + * #3465 Invalid SQL created for some joins in a subquery + +** Task + + * #3509 Release 5.5.1 + * #3508 Merge 5.4.8 into 5.5.x + + +Build 5.5.0 +============================= + +Release notes - NHibernate - Version 5.5.0 + + ##### Possible Breaking Changes ##### + * `Object.Finalize` is no more proxified when the entity base class has a destructor. See #3205. + * Default not-found behavior now works correctly on many-to-many Criteria fetch. It now throws + ObjectNotFoundException exception for not found records. See #2687. + +62 issues were resolved in this release. + +** Bug + + * #3413 Downgrade dependency System.Data.SQLite.Core 1.0.118 -> 1.0.117 + * #3406 Fix orphan removal for detached one-to-one + * #3392 Partial fix fetching lazy property after Select in Linq + * #3360 Incorrect parameter length for char types in MicrosoftDataSqlClientDriver + * #3334 Exception executing HQL query with uncorrelated left joins in subselect + * #3327 HqlParser does not correctly negate EXISTS-nodes below an AND/OR + * #3325 Cascading orphan delete may not work on versioned entity + * #3311 NamedQuery ignores and any other + * #3264 Fix collection filter on subclass columns + * #3256 Invalid SQL is generated for string Enum used in conditional LINQ + * #3205 `Object.Finalize` should not be proxiable + * #2687 Use table group joins for many-to-many in Criteria and Entity loaders + * #1267 NH-3047 - Lazy=no-proxy ignores join fetch + +** New Feature + + * #3242 Linq: add enum Equals and object Equals support + * #3165 Add support for Firebird 4 + * #829 NH-3365 - Support for HasFlag method for enums with Flags attribute applied + +** Improvement + + * #3429 Explicit how to use advanced Redis strategies + * #3410 Remove redundant collection BeforeAssemble call from query cache + * #3398 Do not store mapping field in Configuration + * #3396 Get rid of select queries for each ManyToMany not found ignored element in Criteria and lazy loading + * #3395 Remove ConstantConverter + * #3394 Get rid of select queries for each ManyToMany not found ignored element in hql + * #3390 Enable Not node handling in HqlParser.NegateNode + * #3384 Improve path rule handling with reserved words in Hql.g + * #3377 Move HqlToken.PossibleId to HqlParser.IsPossibleId method and remove castings + * #3374 Simplify aggregateDistinctAll rule in Hql.g + * #3373 Refactor sequential select related members in AbstractEntityPersister + * #3341 Apply fromFragment processing only when required in ProcessDynamicFilterParameters + * #3340 SqlString.Trim should return the same instance for not modified string + * #3253 Do not throw for unknown type in hql case node + * #3230 Add cached boxed boolean values to BooleanType + * #3209 Allow custom query loader + +** Task + + * #3460 Merge 5.4.7 in master + * #3445 Release 5.5.0 + * #3440 Update NUnit to v3.14.0 + * #3423 Update actions/checkout action to v4 + * #3420 Merge 5.4.6 in master + * #3411 Remove ISessionFactoryImplementor parameter from TableGroupJoinHelper + * #3409 Merge 5.4.5 in master + * #3387 Merge 5.4.4 in master + * #3379 Remove NHibernate.Example.Web project + * #3362 Update dependency NUnit3TestAdapter to v4.5.0 + * #3361 Update dependency NUnit.Console to v3.16.3 + * #3353 Migrate renovate config + * #3351 Merge 5.4.3 in master + * #3284 Update NHibernate.Caches to v5.9.0 + * #3283 Update dependency NSubstitute to v5 + * #3280 Add tests for Microsoft.Data.SqlClient driver + * #3275 Migrate dev packages to Cloudsmith + * #3241 Exclude generated files from Deepsource analisys + * #3236 Add MySQL8Dialect and MySQL8InnoDBDialect + * #3223 Simplify GitHub Actions Tests DB initialization + * #3206 Update actions/setup-dotnet action to v3 + * #3202 Update dependency Npgsql to v7 + * #3129 [Security] Update Oracle.ManagedDataAccess + * #3122 Update dependency FirebirdSql.Data.FirebirdClient to v9 + * #3102 Update dependency Microsoft.Data.SqlClient to v3.1.3 + * #3099 [Security] Update dependency System.Linq.Dynamic.Core to v1.3.3 + * #3098 Update dependency System.Data.SQLite.Core to v1.0.118 + * #3092 Update dependency Microsoft.AspNetCore.OData to v7.7.0 + * #3088 Update NUnit to v3.13.3 + +** Tests + + * #3412 Revive hql ParsingFixture + + +Build 5.4.9 +============================= + +Release notes - NHibernate - Version 5.4.9 + +6 issues were resolved in this release, including CVE-2024-39677. + +** Bug + + * #3547 Handle SQL injection vulnerabilities within ObjectToSQLString + +** Task + + * #3576 Release 5.4.9 + * #3558 Migrate AppVeyor & TC builds to PostgreSQL 13 + * #3545 Upgrade Npgsql to a non vulnerable version + * #3544 Upgrade vulnerable test dependencies + * #3517 Obsolete vulnerable literal AddColumn + + +Build 5.4.8 +============================= + +Release notes - NHibernate - Version 5.4.8 + +2 issues were resolved in this release. + +** Bug + + * #3489 Inserting multiple associations of the same entity fails + +** Task + + * #3507 Release 5.4.8 + + +Build 5.4.7 +============================= + +Release notes - NHibernate - Version 5.4.7 + +3 issues were resolved in this release. + +** Task + + * #3459 Release 5.4.7 + * #3458 Merge 5.3.20 into 5.4.x + * #3453 Migrate appveyor build to MySql 8 + + +Build 5.4.6 +============================= + +Release notes - NHibernate - Version 5.4.6 + +2 issues were resolved in this release. + +** Bug + + * #3414 Reenable use of SelectClauseVisitor for subqueries + +** Task + + * #3419 Release 5.4.6 + + +Build 5.4.5 +============================= + +Release notes - NHibernate - Version 5.4.5 + +2 issues were resolved in this release. + +** Task + + * #3408 Release 5.4.5 + * #3407 Merge 5.3.19 in 5.4.x + + +Build 5.4.4 +============================= + +Release notes - NHibernate - Version 5.4.4 + +6 issues were resolved in this release. + +** Bug + + * #3359 2nd level cache GetMany ineffective for collections + * #3354 Invalid program generated by FieldInterceptorProxyBuilder for indexer property getter + * #3352 Fetch throws "could not resolve property" error for a property that is not mapped + +** Improvement + + * #3368 Allow internal entity classes/interfaces in .NET Standard 2.0 for field interceptor + +** Task + + * #3386 Release 5.4.4 + * #3367 Update readme with actual dev build information for 5.4 + + +Build 5.4.3 +============================= + +Release notes - NHibernate - Version 5.4.3 + +11 issues were resolved in this release. + +** Bug + + * #3317 Issue with components list lazy loading with not lazy association + * #3307 IsDirty performance hit since 5.4.0 + * #3295 C# 8/11 Static interface members support + * #3291 Npgsql 6+ issues with null DateTime parameter types + * #3290 Incorrect fetch of Many-to-Many relation + * #3289 Fetching lazy loaded component causes n + 1 query when querying a subclass abstraction + * #3288 NullReferenceException is thrown when using Fetch + +** Task + + * #3349 Release 5.4.3 + * #3348 Merge 5.3.18 in 5.4.x + * #3318 Merge 5.3.17 in 5.4.x + * #3302 Upgrade NUnit3TestAdapter to fix "Unknown framework version 7.0" + + +Build 5.4.2 +============================= + +Release notes - NHibernate - Version 5.4.2 + +6 issues were resolved in this release. + +** Bug + + * #3274 Improve LINQ Contains subquery parameter detection + * #3271 LINQ subqueries wrongly altered by SelectClauseVisitor + * #3263 Wrong alias in Where clause if using Fetch and scalar Select + * #3239 Incorrect SQL generated fetching many-to-many with subclasses + +** New Feature + + * #3251 MappingByCode: Support backfield property access + +** Task + + * #3281 Merge 5.3.16 in 5.4.x + * #3277 Release 5.4.2 + + +Build 5.4.1 +============================= + +Release notes - NHibernate - Version 5.4.1 + +5 issues were resolved in this release. + +** Bug + + * #3216 Enable one-to-one optimistic lock handling in mapping + * #3215 Count(Distinct ...) does not work + * #3203 Fix a wrong example in configuration documentation + +** Task + + * #3232 Release 5.4.1 + * #3227 Merge 5.3.15 in 5.4.x + +As part of releasing 5.4.1, a missing 5.4.0 possible breaking change has been added, about +one-to-one associations and optimistic locking. See 5.4.0 possible breaking changes. + + +Build 5.4.0 +============================= + +Release notes - NHibernate - Version 5.4.0 + +** Highlights + * NHibernate has gained three new target frameworks: .Net 6, .Net Framework 4.8 and .Net Standard 2.1. NHibernate NuGet package + provides them, along with the older targets, .Net Core 2.0, .Net Framework 4.6.1 and .Net Standard 2.0. These new targets allow + some NHibernate optimizations for applications using them. The same limitations apply for .Net 6 and .Net Standard 2.1 as for + .Net Core 2.0 and .Net Standard 2.0, see NHibernate 5.1.0 release notes. + * A new batching strategy is available, minimizing the batching memory footprint. See #2959. Using it may increase CPU usage. + * 201 issues were resolved in this release. + + ##### Possible Breaking Changes ##### + * One-to-one changes does now trigger a version increment, consistently with the default behavior of other kinds of + associations. See #3204. + * Linq and criteria queries on unmapped entities will throw instead of returning an empty result list. See #1106, #1095. + * The second level cache UpdateTimestampsCache does not use locks anymore. This may slightly increase the number of cases + where stale data is returned by the query cache. See #2742. + * Equality and hashcode access on uninitialized persistent collections will no more trigger their loading. See #2461. + * DB2CoreDriver now uses named parameters instead of positional ones. See #2546. + +** Bug + + * #3198 EntityUpdateAction increments version despite veto on update + * #3189 Support proxies of classes with init properties + * #3188 No way of detecting if AutoFlush performed in added AutoFlushEventListener + * #3176 Cached entity always fetches lazy properties with read-write concurrency strategy + * #3156 Evaluation failure when using `Nullable` without a value in LINQ + * #3150 LINQ query dynamic component by interface hangs the application + * #3109 Fix table group join issue with subclasses + * #3104 Inner Join fails with left Outer Join when referenced in Where clause + * #3076 Nested group by results in "A recognition error occured" + * #2968 Fix QueryStatistics.ExecutionAvgTime calculation + * #2827 Fix BadImageFormatException in dynamic proxies for abstract classes and interfaces + * #2822 "A recognition error ocurred" querying by a nullable component with more than N properties + * #2758 Fix AmbiguousMatchException in ClearPool with FirebirdClient 6.6.0 and above + * #2750 Using System.Transaction with IStatelessSession doesn't always flush batches to database + * #2738 Unused Left Join in LINQ throws exception + * #2717 MappingByCode discriminator column with string type throws exception + * #2675 Fix collection lazy loading with composite keys on subclass columns + * #2672 Linq query failure with left joins + * #2619 InvalidOperationException in ProxyGenerator for class with generic non-virtual method + * #2614 Obvious bug in two HQLQueryPlan classes with distinction Set + * #2594 Wrong SQL produced by DML LINQ when using a select clause for a property referencing the outer select + * #2555 Add spaces around concat operator + * #2552 One-to-one second level cache issue + * #2548 Mark DB2Dialect as not supporting null columns in unique constraint + * #2547 Fix paging in DB2Dialect + * #2540 Unable to use external predicate in subquery + * #2534 Fix asymmetrical SqlType.Equals + * #2454 ConditionalProjection containing the correlation to outer query fails to determine projection type + * #2330 join on multiple conditions + * #2201 Fetch Join generates incorrect SQL joins for the same entity type + * #2092 Projection and join fetch in hql leads to duplicated column aliases + * #1365 NH-3288 - Stale data checking does not work for one-to-one associations + * #1349 NH-3893 - HQL parse error of a query with 'left' or 'right' function + * #1326 NH-3622 - Fetching in query causes incorrect/missing joins in subquery + * #1316 NH-3530 - memory when using default_batch_fetch_size + * #1235 NH-2785 - StaleStateExceptions discarded on optional table + * #1215 NH-2208 - Error with filters on joined-subclass as many-to-one + * #1209 NH-2049 - Error with filters on joined-subclass as one-to-one + * #1180 NH-3847 - ConditionalProjection throws "Both true and false projections must return the same types" when the types are the same + * #1106 NH-2978 - LINQ: Queries for unmapped entity types return empty result set + * #1075 NH-2239 - Wrong OrderBy in generated SQL when using ICriteria, Eager fetching and order by clauses in collection mappings + * #1072 NH-2174 - Invalid SQL is generated for OneToMany collections + * #1062 NH-1893 - Trigger-Identity with Dynamic Insert throws ORA-01036 (10g) + +** New Feature + + * #2959 Support Dynamic BatchFetchStyle + * #2744 Set which entities classes should never be cached, even indirectly + * #2737 Add more left join support + * #2645 Allow specifying the size of the query plan cache + * #2641 Avoid InvalidCastException with Oracle number high precision values + * #2551 Add support for joining a subquery in hql + * #2545 Table group joins for subclasses in Criteria + * #2486 Add Projections.Select in Criteria + * #2361 Table group joins support in hql + +** Improvement + + * #3184 Support caching queries with autodiscovered types + * #3177 Disable default caching in tests + * #3160 Allow internal entity classess/interfaces in .NET Standard 2.0 + * #3133 Automatically generate async code on pull request + * #3127 Register IType CLR types as aliases + * #3116 Simplify SqlGenerator.FromFragmentSeparator + * #3114 Exclude generated async files from Deepsource analysis + * #3106 Skip table group join processing for implicit join + * #3091 Use GitReleaseManager dotnet tool + * #3083 Update SHFB in order to build documentation without MSBuild + * #3050 Add .NET Standard 2.1 target + * #3027 Avoid allocations on lock in SyncCacheLock + * #3000 Add .NET 6 and .NET Framework 4.8 targets + * #2990 Use inner join instead of implicit join for implied entity joins + * #2957 Avoid lambda compilation as much as possible + * #2948 Avoid lambda compilation for member access expressions in LINQ + * #2947 LINQ queries triggers JIT a bit too much + * #2920 Add parameter type to ADO exception + * #2804 Projections.Conditional for CASE expressions with multiple conditions + * #2752 Change cascade style for DefaultDirtyCheckEventListener to persist to avoid flushing the session + * #2742 Remove locks from UpdateTimestampsCache + * #2723 Avoid double param type guessing and better NULL parameter handling in LINQ + * #2706 Set the rolledBack flag when disposing active transactions + * #2700 Potential improvement to AliasToBeanResultTransformer + * #2621 Regression bug with enums used as parameter for string column + * #2571 Default value for CancellationToken in IQueryBatch.GetResultAsync + * #2568 Support internal entity classes by proxy factory + * #2556 Register right function for Firebird and PostgreSQL + * #2546 Enable named parameters on DB2CoreDriver + * #2539 Skip no longer needed moving ON condition to Where clause in LINQ + * #2538 Remove no longer needed alias substitution for filtered many-to-many collection in hql + * #2518 Support Aggregate subqueries with paging on MS SQL Server + * #2510 Remove OrderByClause from query models with Contains, All and Any result operators + * #2492 Replace casting with NodeType checks in Criteria ExpressionProcessor + * #2479 When using a paged sub-query in Linq, generates incorrect SQL + * #2461 Remove persistent collections Equals/GetHashCode overrides + * #2460 Simplify single alias retrieval for SimpleProjections + * #2448 Avoid lambda compilation for constant and member access expressions in Criteria + * #1285 NH-3249 - Cannot perform HQL with "COUNT(DISTINCT Date(s.Date))" + * #1244 NH-2868 - Generate method of ForeignGenerator fails with stateless sessions + * #1095 NH-2829 - QueryOver/Criteria should throw exception when querying against unmapped class + * #871 NH-3115 - Should de-duplicate joins when using fetching with where in LINQ query + * #869 NH-2952 - Setting the SqlCheck is not supported in the ByCode mapping + * #809 NH-2799 - Provide the CancelQuery() method in IStatelessSession + * #766 NH-3813 - Eager fetch on key-many-to-one relation adds inner joins to the query + * #715 NH-1040 - property-ref on joined-subclasses should work or error + +** Task + + * #3197 Update dependency System.Data.SqlClient to v4.8.5 + * #3195 Release NHibernate 5.4 + * #3161 Tell NuGet about the readme file + * #3147 Add `datetimex` keyword to SapSQLAnywhere17Dialect + * #3146 Run tests against Oracle XE 21c + * #3123 Update dependency Npgsql to v6 + * #3121 Update dependency Microsoft.NETFramework.ReferenceAssemblies to v1.0.3 + * #3119 Update actions/setup-dotnet action to v2 + * #3118 Update actions/checkout action to v3 + * #3117 Update dependency NSubstitute to v4.4.0 + * #3111 Update dependency log4net to v2.0.15 + * #3080 Replace Dependabot with Renovate + * #3063 Bump Oracle.ManagedDataAccess from 19.12.0 to 21.6.1 + * #3061 Bump Oracle.ManagedDataAccess.Core from 2.19.120 to 3.21.61 + * #3059 Bump log4net from 2.0.12 to 2.0.14 + * #3057 Run tests using .NET 4.8 + * #3017 Add deepsource.io code analysis + * #3002 Bump NUnit3TestAdapter from 4.1.0 to 4.2.1 + * #2987 Disable auto rebasing for depandabot PRs + * #2951 Run tests on .NET 6 + * #2946 Bump Microsoft.SourceLink.GitHub from 1.0.0 to 1.1.1 + * #2936 Bump System.Data.SQLite.Core from 1.0.114.3 to 1.0.115.5 + * #2911 Bump System.Data.SqlClient from 4.8.2 to 4.8.3 + * #2898 Bump FirebirdSql.Data.FirebirdClient from 6.6.0 to 8.5.2 + * #2887 Bump Oracle.ManagedDataAccess from 19.11.0 to 19.12.0 + * #2886 Bump Oracle.ManagedDataAccess.Core from 2.19.110 to 2.19.120 + * #2878 Bump System.Linq.Dynamic.Core from 1.2.10 to 1.2.12 + * #2870 Bump MySql.Data from 8.0.25 to 8.0.26 + * #2851 Cache Dialect in tests + * #2818 Bump Microsoft.Data.SqlClient from 2.1.3 to 3.0.0 + * #2800 Bump System.Data.SQLite.Core from 1.0.113.7 to 1.0.114.2 + * #2799 Bump Npgsql from 4.0.3 to 4.1.9 + * #2796 Bump System.Linq.Dynamic.Core from 1.2.9 to 1.2.10 + * #2790 Bump Microsoft.NET.Test.Sdk from 16.9.4 to 16.10.0 + * #2786 Bump Microsoft.Data.SqlClient from 2.1.2 to 2.1.3 + * #2771 Bump MySql.Data from 8.0.22 to 8.0.25 + * #2770 Bump System.Data.SQLite.Core from 1.0.109.2 to 1.0.113.7 + * #2765 Bump Microsoft.NETFramework.ReferenceAssemblies from 1.0.0 to 1.0.2 + * #2759 Enable dependabot + * #2756 Update dependencies + * #2607 Merge 5.3.5 + * #2605 Upgrade AsyncGenerator to 0.19.1 + * #2593 Merge 5.3.4 + * #2582 Remove no longer used code in QueryModelVisitor + * #2570 Update Relinq and LinFu links + * #2516 Suppress Codefactor single class per file rule for test project + * #2501 Upgrade MySql client and remove allowed failures on CI builds + +** Tests + + * #3024 Enable test accessing Component's Parent property in LINQ + * #2921 Fix test for SAP SQL Anywhere + * #2848 Add Oracle to GitHub Actions + * #2541 LINQ SELECT tests with WHERE subquery + * #2489 Improve CriteriaAssertFixture + * #2456 Test case for #1180 and improve NullableType.ToString + * #2242 Test case for NH-3972 - SQL error when selecting a column of a subclass when sibling classes have a column of the same name + + +Build 5.3.20 +============================= + +Release notes - NHibernate - Version 5.3.20 + +2 issues were resolved in this release. + +** Bug + + * #3438 DB2/400: ArgumentException Column 'SQL_TYPE_NAME' does not belong to table DataTypes + +** Task + + * #3454 Release 5.3.20 + + +Build 5.3.19 +============================= + +Release notes - NHibernate - Version 5.3.19 + +2 issues were resolved in this release. + +** Bug + + * #3397 GenerateSchemaCreationScript creates many identical dialect instances + +** Task + + * #3405 Release 5.3.19 + + +Build 5.3.18 +============================= + +Release notes - NHibernate - Version 5.3.18 + +3 issues were resolved in this release. + +** Bug + + * #3333 Lazy property with nosetter accessor remains uninitialized + * #3330 Linq with FetchLazyProperties() resets lazy property changes + +** Task + + * #3346 Release 5.3.18 + + +Build 5.3.17 +============================= + +Release notes - NHibernate - Version 5.3.17 + +5 issues were resolved in this release. + +** Bug + + * #3306 Invalid SQL when referencing nullable entity in correlated subquery + * #3304 Fix SetSnapShot CopyTo variance failure + * #3294 Undefined join type failure with cross joins and Informix + +** Task + + * #3315 Release 5.3.17 + * #3300 Backport handling of null DateTime parameters in Npgsql 6+ + + +Build 5.3.16 +============================= + +Release notes - NHibernate - Version 5.3.16 + +3 issues were resolved in this release. + +** Bug + + * #3269 "Or" clause in a "where" condition returns a wrong result with not-found-ignore + * #3210 Wrong name value for L2 read-only cache warning on mutable + +** Task + + * #3276 Release 5.3.16 + + +Build 5.3.15 +============================= + +Release notes - NHibernate - Version 5.3.15 + +4 issues were resolved in this release. + +** Bug + + * #3218 Failure of contains subquery with parameter + * #3187 Fix mixing implied implicit and left joins in HQL for v5.3 + +** Task + + * #3225 Release 5.3.15 + * #3222 Automatically generate async code on pull requests for 5.3 + + +Build 5.3.14 +============================= + +Release notes - NHibernate - Version 5.3.14 + +3 issues were resolved in this release. + +** Bug + + * #3169 InvalidOperationException: This transformer is not initialized by Cached Query + * #3164 Fetching a lazy loaded component regression + +** Task + + * #3183 Release 5.3.14 + + +Build 5.3.13 +============================= + +Release notes - NHibernate - Version 5.3.13 + +6 issues were resolved in this release. + +** Bug + + * #3134 ManyToMany - Tries to select not existing column in Mapping Table + * #3113 Join fails on Oracle9Dialect + * #3030 Memory leak named parameter holds entity references + +** Improvement + + * #3120 Guards against use of a disposed session factory + * #2994 Npgsql 6 is not compatible + +** Task + + * #3145 Release 5.3.13 + + +Build 5.3.12 +============================= + +Release notes - NHibernate - Version 5.3.12 + +5 issues were resolved in this release. + +** Bug + + * #3046 Regression for filters on entity joins with many-to-one disabled + * #3029 InvalidOperationException on proxies with explicit implementation of a generic method + +** Improvement + + * #3043 Improve exception for query on delayed id + +** Test + + * #3035 Support tests in VS 2022 + +** Task + + * #3044 Release 5.3.12 + +Build 5.3.11 +============================= + +Release notes - NHibernate - Version 5.3.11 + +12 issues were resolved in this release. + +** Bug + + * #3005 LINQ: Casting from object to TimeSpan throws + * #2988 Query issues when using not-found='ignore' in entity mapping + * #2965 Fix possible issue with logging for Linq Readonly tests + * #2963 Time is incompatible with bigint for TimeAsTimeSpanType + * #2937 NRE in linq processing of custom components + * #2928 Session.Refresh when entity is IFieldInterceptorAccessor throws a MappingException + * #2904 SQL query result not retrieved from second level cache + * #2876 Schema validation not working with NpgSql v5 + * #2862 NHibernate AsyncReaderWriterLock stalls under load + * #2727 The session.Load(obj, id) overload can't handle proxies + +** Task + + * #3019 Release 5.3.11 + * #2984 Bump AsyncGenerator to 0.18.3 for 5.3 branch with fix for .net 6 + +Build 5.3.10 +============================= + +Release notes - NHibernate - Version 5.3.10 + +11 issues were resolved in this release. + +** Bug + + * #2891 Fix nullable entity comparison with null and implicit/cross joins + * #2885 Do not serialize unnecessary members in SessionFactory + * #2882 Fix ArgumentNullException when provider is unable to open a connection + * #2871 If DbTransaction.Dispose throws an exception, the AdoTransaction is left in an inconsistent state + * #2860 Null reference when calling Trim() on interpolated string containing null property + * #2858 Casting to object and back to interface in Subquery causes incorrect SQL + * #2856 Distinct on Composite User Type property fails + * #2855 Error log from ReflectHelper.TypeFromAssembly() on Linq query + * #2611 One-to-zero-or-one relation not returning data when checking for null + * #1962 Failing Linq query on element index + +** Task + + * #2915 Release 5.3.10 + +Build 5.3.9 +============================= + +Release notes - NHibernate - Version 5.3.9 + +11 issues were resolved in this release. + +** Bug + + * #2835 Fix ExecuteWorkInIsolation ignores MultiTenancy configuration + * #2811 Remove session finalizer + * #2805 Model not mapped Exception + * #2802 ArgumentException on session Flush + * #2792 Arithmetic operations adding casts to SQLite that cause incorrect results + * #2791 Custom Equality Fails + * #2772 LINQ query returns NULL instead of expected result + +** Test + + * #2841 Fix possible test failure for SqlServer 2019 + * #2814 Fix intermittent Firebird test errors + * #2812 Replace Travis CI with GitHub Actions + +** Task + + * #2837 Release 5.3.9 + +Build 5.3.8 +============================= + +Release notes - NHibernate - Version 5.3.8 + +6 issues were resolved in this release. + +** Bug + + * #2710 Filtered Entity Dml Update Throws Collection was modified + * #2708 MappedAs throws when called on a Convert UnaryExpression + * #2707 Don't currently support idents of type X + * #2673 Exception when using BinaryFormatter to deserialize entities with initialized proxies in associations + * #1264 NH-3005 - NHibernate.Hql.Ast.HqlIdent..ctor throws Don't currently support idents of type Date + +** Task + + * #2721 Release 5.3.8 + +Build 5.3.7 +============================= + +Release notes - NHibernate - Version 5.3.7 + +5 issues were resolved in this release. + +** Bug + + * #2704 IEnhancedUserType from string to bool fails in some circumstances + * #2702 LINQ projection of nullable enum with list fails + * #2693 Invalid parameter conversion with group by + * #2688 NoViableAltException in a delete on a many-to-one id + +** Task + + * #2701 Release 5.3.7 + +Build 5.3.6 +============================= + +Release notes - NHibernate - Version 5.3.6 + +12 issues were resolved in this release. + +** Bug + + * #2659 IQueryable filter by subquery gives "Item with Same Key has already been added" + * #2649 Invalid parameter conversion for enums mapped in sub-classes + * #2646 Invalid generated sql with linq any in select and composite keys + * #2642 Linq expression parser removes required Convert nodes + * #2631 IndexOutOfRange exception with One-to-One mapping + * #2627 Null reference on Merge for detached unsaved entity + * #2626 WHERE IN SELECT uses wrong column + * #2608 Delay entity insert may fail with Merge + * #2544 Recognition error occurs using System.Linq.Queryable.Contains + +** Improvement + + * #2677 Missing ConfigureAwait in FutureEnumerable.GetEnumerableAsync + * #2656 Make sure dbcommand is disposed + +** Task + + * #2676 Release 5.3.6 + +As part of releasing 5.3.6, one missing 5.3.0 possible breaking change has been added, about +Merge no more triggering immediate generation of identifier. See 5.3.0 possible breaking changes. + +Build 5.3.5 +============================= + +Release notes - NHibernate - Version 5.3.5 + +2 issues were resolved in this release. + +** Bug + + * #2599 WrongClassException in Linq query + +** Task + + * #2606 Release 5.3.5 + +Build 5.3.4 +============================= + +Release notes - NHibernate - Version 5.3.4 + +6 issues were resolved in this release. + +** Bug + + * #2580 InvalidWithClauseException when join polymorphic entity + * #2559 Regression in caching linq query with ThenFetchMany statement. + * #2549 ApplyFilter does not work on join statements in LINQ + * #2537 Unable to cast "System.Linq.Expressions.UnaryExpression" to "System.Linq.Expressions.LambdaExpression". + +** Task + + * #2578 Add missing possible breaking changes for #2365 + * #2587 Release 5.3.4 + +As part of releasing 5.3.4, one missing 5.3.0 possible breaking change has been added, about +custom method generators for Linq. See 5.3.0 possible breaking changes. + +Build 5.3.3 +============================= + +Release notes - NHibernate - Version 5.3.3 + +16 issues were resolved in this release. + +** Bug + + * #2519 Fix parameter caching for Linq provider + * #2515 InvalidCastException for Linq query with subquery + * #2514 Entity with field interceptor are not correctly passed as Linq parameters + * #2512 Linq queries with a condition after a projection on a collection fail + * #2511 Linq Fetch over component after fetching a many-to-one throws exception + * #2508 OnPreUpdateCollection - Passed entity instance X is not of expected type Y + * #2499 Cast operation fails when an enum is mapped as an AnsiString + * #2490 Unnecessary cast in sql with Linq are causing performance issues + * #2488 Fix parameter detection for Equals and CompareTo methods for Linq provider + * #2485 Throw entity not mapped exception for entity join in hql if possible + * #2484 Entity Joins are not polymorphic in hql + * #2476 Hashset add returns true instead of false + * #2474 Fetch all lazy properties when entity is already loaded fails + * #2471 AsQueryable() on collection throws if applied after Where statement + +** Task + + * #2482 Add missing possible breaking changes for #2010 + * #2527 Release 5.3.3 + +As part of releasing 5.3.3, two missing 5.3.0 possible breaking changes have been added, about +uninitialized extra lazy collections and SQLite schema validation. See 5.3.0 possible breaking changes. + +Build 5.3.2 +============================= + +Release notes - NHibernate - Version 5.3.2 + +6 issues were resolved in this release. + +** Bug + + * #2468 Null reference at NHibernate.Util.AsyncReaderWriterLock.ReadLock() + * #2465 Linq contains on a value collection is failing + * #2463 Path expected for join + * #2458 Evaluatable expressions with parameters are no more pre-evaluated + * #2453 Fail to cast enum as nvarchar for Linq Contains + +** Task + + * #2472 Release 5.3.2 + +Build 5.3.1 +============================= + +Release notes - NHibernate - Version 5.3.1 + +7 issues were resolved in this release. + +** Bug + + * #2445 LINQ queries with a cast from int to uint fail + * #2440 InvalidCastException for Future Criteria with aliased fetches + * #2439 Invalid parameter conversion for enums + * #2437 Invalid cast on nullable custom type with Linq + +** Task + + * #2450 Release 5.3.1 + * #2436 Fix old http://nhibernate.info URIs + * #2435 Fix iconUrl warning + +Build 5.3.0 +============================= + +Release notes - NHibernate - Version 5.3.0 + +220 issues were resolved in this release. + + ##### Possible Breaking Changes ##### + * A distributed cache may hold conflicting timestamps after upgrade for as much as twelve hours. + Consider flushing a distributed cache after upgrade to avoid any issue. Do not share a distributed + cache with applications using an earlier version of NHibernate. + * The counter id generator may generate conflicting ids for as much as twelve hours after upgrade. + * `update` and `delete` statements will now take into account any enabled filter on the entities + they update or delete, while previously they were ignoring them. (`insert` statements will also take + them into account, but previously they were failing instead of ignoring enabled filters.) + * ISession.Persist and ISession.Merge will no more trigger immediate generation of identifier. + * Bags will no more be loaded with "null" entities, they will be filtered out. + * Setting the value of an uninitialized lazy property will no more trigger loading of all the lazy + properties of the entity. + * If an uninitialized lazy property has got its value set, without any other subsequent lazy property + load on the entity, a dynamic update will occur on flush, even if the entity has dynamic updates + disabled. This update will occur even if the set value is identical to the currently persisted + property value. + * Assigning an uninitialized proxy to a `no-proxy` property will no more trigger the proxy + initialization. Moreover, reading the property afterwards will no more unwrap the assigned proxy, + but will yield it. + * A class having an explicitly implemented interface declaring a member with the same name than the + class id will have its proxies trigger a lazy load if the interface "id" is accessed. + * SQLite: in order to avoid a floating point division bug losing the fractional part, decimal are now + stored as `REAL` instead of `NUMERIC`. Both are binary floating point types, excepted that `NUMERIC` + stores integral values as `INTEGER`. This change may cause big integral decimal values to lose more + precision in SQLite. + * SQLite: non supported SQL type names previously used by NHibernate, resulting in unexpected actual typing, + have been fixed. This causes databases generated by a previous NHibernate version to fail schema validation + by 5.3 or higher versions. See #2507 for more information. + * Custom dialects used for databases that do not support cross join will have to override + `SupportsCrossJoin` property and set it to `false`. + * `VisitorParameters.ConstantToParameterMap` may contain the same parameter for multiple constant + expressions. + * `ICache` caches yielded by the session factory will be `CacheBase` wrappers around the cache actually + provided by the cache provider, if it was not deriving from `CacheBase`. + * Calling `IList.RemoveAt` or `IList<>.RemoveAt` on an uninitialized list with a negative number + will now throw an `ArgumentOutOfRangeException`. + * Calling `IList.RemoveAt` or `IList<>.RemoveAt` on an uninitialized list mapped as `lazy="extra"` + with a number that is equal or higher that the current collection size will now throw an + `ArgumentOutOfRangeException`. + * Calling `IList.Insert` or `IList<>.Insert` on an uninitialized list with a negative number will + now throw an `ArgumentOutOfRangeException`. + * Calling `IList.Insert` or `IList<>.Insert` on an uninitialized list mapped as `lazy="extra"` + with a number that is higher that the current collection size will now throw an + `ArgumentOutOfRangeException`. + * Getting or setting a value with `IList.this[int index]` or `IList<>.this[int index]` on an uninitialized + list with a negative number will now throw an `ArgumentOutOfRangeException`. + * Setting a value with `IList.this[int index]` or `IList<>.this[int index]` on an uninitialized list + mapped as `lazy="extra"` with a number that is equal or higher that the current collection size will now + throw an `ArgumentOutOfRangeException`. + * Calling `IDictionary<,>.Add` or `ICollection<>.Add` on an uninitialized map mapped as `lazy="extra"` with + a key that already exists will now throw an `ArgumentException`. + * Calling `IDictionary<,>.Remove` or `ICollection<>.Remove` on an uninitialized map mapped as `lazy="extra"` + with a key that does not exist will now return false. + * Map dirtiness is now evaluated by `EqualityComparer.Default` when setting an existing key value + with `IDictionary<,>.this[]` on an initialized map. + * Calling `ISet<>.Add` on an uninitialized set mapped as `lazy="extra"` with a transient element that + already exists in the set will now return false. + * Calling `ISet<>.Add` or `ICollection<>.Add` on an uninitialized set mapped as `lazy="true"` with a + transient element that does not override `Equals` method will not initialize the collection. + * Linq custom generators deriving from `BaseHqlGeneratorForMethod` should override the + `TryGetCollectionParameter` method if they have to support parameter lists. + +** Bug + + * #2425 NRE with nullable subselect value in Linq + * #2421 Chapter 26: Best Practices, error about identifier recommendations + * #2410 Second level cache failures with CoreMemoryCaches + * #2380 OData NotSupportedException MemberInit on base class member + * #2365 Add Linq parameter type detection + * #2346 Fix SQLite typing + * #2336 Intermittent null reference exception on CloseConnection + * #2324 Update IIsEntityDecider to use ExpressionsHelper.TryGetMappedType + * #2319 Upgrade AsyncGenerator to 0.18.1 + * #2299 Proper query plan caching for DML LINQ queries + * #2286 Wrong sql if used joined-subclass with filters for key columns + * #2278 IInterceptor.OnPrepareStatement results not used in insert/update commands + * #2266 Fix comment for Restrictions.IsEmpty + * #2255 Fix a flaky test + * #2245 Add sqlite.binaryguid to configuration schema + * #2244 SelectMany Linq extension does not work correctly - subsequent FetchMany fails + * #2233 Fix possible issue with async code for delayed entity inserts + * #2231 Invalid alias name used in Linq Joins + * #2222 NHibernate query plan for Linq Dml is not cached + * #2219 Fix BuildTool output path + * #2215 Fix ShowBuildMenu.sh + * #2181 Skip null entities when bag is populated + * #2164 Do not call GC.SuppressFinalize from finalizer thread + * #2158 Proper support for IN clause for composite values in Criteria + * #2147 Improve async locking + * #2144 AdoTransaction memory leak (5.2.5) + * #2137 NullReferenceException in EntityEntry.GetLoadedValue on an update of a never loaded detached entity + * #2099 "Composite Index" not working with inheritance + * #2088 Fix cacheable CreateSQLQuery throws on query with AddJoin + * #2085 Duplicated methods generated in proxies + * #2067 Wrong proxy built for base class with interfaced sub-classes + * #2064 One-to-one properties not appearing in Select() projection result set + * #2053 Dml Style Update fails with static where sql in mapping + * #2038 Fix a typo on the memcached distributed cache description in the docs + * #2029 Incorrect SQL for cast inside an aggregate (MS SQL) + * #2019 Update symbol package format and add Sourcelink + * #2000 Fixed Equals method for transformers + * #1997 Fix criteria collection ordering + * #1994 Extra Select for every "outfiltered" Element + * #1993 InvalidCastException when merging a collection with a lazy property + * #1985 DateTime.xxxx are not supported in SelectGroup + * #1965 Fix code sample in docs, section 10.4.2 + * #1956 Fix lazy property caching + * #1921 DML insert fails when a filter is enabled + * #1738 Refresh of locally removed collection item crashes with "instance was not in a valid state" + * #1480 Fix cache build for honoring mapped concurrency + * #1368 NH-3778 - Crash when performing a Linq query on a one-to-one mapped reference + * #1341 NH-3848 - Child collection fetched using left outer join with on clause or where clause restrictions on fetched collection shouldn’t be stored in second level cache. + * #1319 NH-3549 - BasicFormatter throws exceptions for certain types of data containing "signal words" + * #1312 NH-3493 - Cannot use alias between more than 1 level of nested queries + * #1310 NH-3478 - StatefulPersistenceContext.RemoveEntity KeyNotFoundException on Evict + * #1309 NH-3469 - Impossible to load one-to-one association with LINQ for composite-id + * #1274 NH-3117 - Query on one-to-one property returns incorrect results + * #1263 NH-2991 - Criteria withClause doesn't work in case of many to many collections + * #1228 NH-2648 - HQL with joins in sub-select creates wrong SQL + * #1206 NH-1761 - Criteria query inserts an extra order by expression when using JoinType.LeftOuterJoin and Projections + * #1158 NH-3492 - SqlClientBatchingBatcher incorrectly ignoring per-SessionFactory Settings properties + * #1128 NH-3210 - NHibernate Linq Provider does cross join or left outer join and not inner join (even if outer-join=false on many-to-one mapping) + * #1124 NH-3155 - Linq subquery with group is not supported + * #1125 NH-3178 - Exception when using one-to-one properties in a criteria projections + * #1117 NH-3079 - Cannot use a sql custom loader with a composite ID + * #1107 NH-2983 - Coalesce in projection doesn't work if there is more than 1 Coalesce + * #1103 NH-2926 - CriteriaQuery - Unable to sort by composite-id + * #1100 NH-2892 - The columns containing reserved words are not quoted + * #1059 NH-1001 - Select statement issued for each not-found=ignore + * #1047 NH-3865 - Swallowed ArgumentNullException with dynamic composite id + * #1015 NH-2951 - Missing alias in hql update (select) statement with joined subclasses + * #1006 NH-2714 - Properties mapped inside a group are not set when retrieving object + +** New Feature + + * #2411 Add an option to register a custom pre-transformer for a Linq query + * #2392 Add locate support for SQLite + * #2362 Add support for lt, gt, le, ge oData operators on strings + * #2349 Add support for Oracle binary floating point types + * #2347 Support fetching individual lazy properties for Criteria EntityProjection + * #2327 Add cross join support for Hql and Linq query provider + * #2313 Add overloads to ISession.Get taking both an entityName and a lockMode + * #2259 Schema auto-update should throw errors + * #2221 Support MemberInit expression in group by + * #2216 Add a driver to support Microsoft.Data.SqlClient provider + * #2209 IN clause support in hql for composite keys on databases without row value constructor support + * #2156 Support basic arithmetic operations (+, -, *, /) in QueryOver + * #2135 Support OData GroupBy/Aggregate + * #2116 Ability to replace ConfigurationManager with a custom config provider + * #2108 Multi-Tenancy: Implement tenant per Database strategy + * #2107 Port Hibernate's Aggregate functions for subqueries + * #2106 Port Hibernate's support subqueries in HQL as CASE statement alternatives + * #2100 Allow to override default types with length or precision parameters + * #2097 Add support for fetching an individual lazy property with Criteria + * #2090 Add support for caching fetched relations with Criteria + * #2080 Add ability to set custom collection type as a string in mapping by code + * #2049 Fix property-ref ignoring not-found="exception" mapping + * #1949 Port Hibernate's lazy attribute fetch groups + * #1922 Add support for fetching an individual lazy property with hql and linq provider + * #1861 Lazy loading and Eager initialization for Component + * #1376 Composite id is incorrectly expanded in SQL + * #1195 NH-4078 - LINQ fetched collections aren't cached + * #981 NH-3873 - Explicit joins on unrelated classes + * #959 NH-4048 - Support non-deterministic/db-side-only methods in Linq + * #896 NH-1432 - Expression.Sql should support aliases other than {alias} + +** Improvement + + * #2404 Allow overriding default CastFunction + * #2401 Optimize JoinWalker.WhereString method + * #2399 Optimize PersistentGenericBag.EqualsSnapshot + * #2394 Optimize PersistentGenericSet snapshot + * #2352 Improve performance of ReflectHelper.GetMethod/Definition + * #2350 Optimize LINQ batch item processing for queries with overridden result type + * #2316 Add multiple arguments support for ISQLFunction + * #2315 Add SetFlushMode for QueryOver and Linq + * #2295 Optimize filter applying logic + * #2287 Allow customizing 'alias to bean' property not found behavior + * #2284 Make persistent collection classes implement the IReadOnly* interfaces + * #2270 IQueryOver is lacking some options + * #2254 Add dev build version suffix + * #2249 Improve handling of SqlCeParameter.SqlDbType + * #2248 Remove most RemoveAsAliasesFromSql usages + * #2241 Avoid duplicating parameters in LINQ query + * #2238 Call generic query.List from Linq queries + * #2235 Configure log4net from embedded resource log4net.xml in tests + * #2232 Use SqlStringBuilder for batching Future/QueryBatch queries + * #2226 Use DateTime.UtcNow for timestamps + * #2225 Avoid unnecessary locking via MethodImplOptions.Synchronized + * #2223 Short-Circuit SessionFactoryImpl.Close() when already closed + * #2214 Allow configuring auto-join transaction globally + * #2213 Add a shortcut to reduce Transaction.Current reads + * #2211 Port SupportsRowValueConstructorSyntaxInInList values + * #2182 Upgrade AsyncGenerator to 0.17.1 + * #2166 Optimize usages of SqlString.Append + * #2163 Add virtual DefaultQueryProvider.CreateWithOptions + * #2162 Use collection types for private members + * #2161 Optimize ToArray conversions + * #2159 Unify handling of composite values in hql and Criteria + * #2153 Use generic parameters in ActionQueue + * #2139 Add ability to set fetch for mapping in mapping by code + * #2131 Create Stopwatch only if stats is enabled + * #2126 Upgrade AsyncGenerator to 0.14.0 + * #2125 Skip logger default initialization logic when logger provided by user + * #2123 Use Assert.Throws instead of try-catch in tests + * #2119 Obsolete interfaces for Loquacios configuration and use config classes directly + * #2117 Replace array concatenation with hand written append + * #2115 Statefull Session commit performance issue when nothing changed and second level cache with query cache enabled + * #2091 Obsolete StringHelper.Join + * #2084 Improve one-to-one handling in queries + * #2082 Use entities prepared by Loader in hql select projections + * #2078 Avoid unnecessary join for entity comparisons in with clause + * #2071 Support subclass mapping with EntityName based base class mapping + * #2061 Reduce cast usage for COUNT aggregate and add support for Mssql count_big + * #2058 DB2 dialect enhancements + * #2056 Optimize GetOrphans and remove wrong checks from IsNotTransientSlow + * #2041 Hql entity join fixes + * #2039 Use generic CollectingNodeVisitor in hql parser + * #2036 Reduce cast usage for aggregate functions + * #2032 Allow using ON instead of WITH in hql + * #2024 Refactor to simplify netfx retargeting + * #2022 Make CancellationToken optional for async Linq DML queries + * #2010 Add new collection operation queue mechanism + * #2009 Add support for IDictionary to IQuery.SetProperties + * #2007 Dispose session in cascade tests + * #2006 Skip Topological sorting if not required + * #2003 Avoid some cases of Type -> string -> Type conversion in Mapping By Code + * #2002 Refactor DependentAlias handling logic in JoinWalker + * #1999 Optimize DistinctRootEntityResultTransformer + * #1989 Optimize ProxyCacheEntry equality for the same instance + * #1988 Improve exception on user types lacking some interfaces + * #1984 Reduce SessionIdLoggingContext creation + * #1981 Remove AbstractLazyInitializer unused field + * #1979 Refactor sequential select + * #1977 Obsolete IDeserializationCallback from EntityKey + * #1972 Port Hibernate's EntityKey optimization + * #1968 Optimize StaticProxyFactory GetProxy and GetFieldInterceptionProxy methods + * #1955 Optimize batchable cache calls for cached queries + * #1947 Partially port Hibernate's current field interceptor mechanism + * #1946 Port Hibernate's BytecodeEnhancementMetadata + * #1944 Extend IAccessOptimizer to support getting/setting single property value + * #1943 Skip initialization of lazy properties when setting one + * #1923 Obsolete StringHelper.Replace + * #1860 LINQ "==" operator generates OR with IS NULL + * #1754 Delay entity insert on Persist until session is flushed + * #1627 Refactored session List method for Criteria + * #913 NH-3704 - Allow Setting Dynamic Component Templates From Dictionary + * #864 NH-2379 - Add support of Left Joins to Linq Provider + * #803 NH-2521 - Session.EnableFilter method should work for HQL-DML statement + * #780 NH-1200 - Exception occurs when using criteria exist queries + * #767 NH-3892 - Add ability to coalesce using a property instead of a constant + * #722 NH-1953 - Support Future for collection filters + * #476 Eliminated double Persister resolution in Loader.InstanceNotYetLoaded flow + +** Task + + * #2433 Improve slightly mapping documentation + * #2432 Document the caches configuration providers + * #2430 Document cache.serializer setting of CoreDistributedCache + * #2397 Update GitReleaseManager + * #2391 Use latest Firebird for AppVeyor and Travis + * #2388 Release 5.3 + * #2382 Refactor debug logging in AbstractBatcher + * #2381 Use optimized Dictionary.Remove(key, out value) in .NET Core + * #2379 Simplify swap items logic in LINQ Visitors + * #2377 Use dotnet to push packages to nuget + * #2376 Add MyGet gallery link to readme + * #2368 Replace SafetyEnumerable with OfType where applicable + * #2363 Upgrade AsyncGenerator to 0.18.2 + * #2356 Obsolete IdentitySet class + * #2354 Do not require Mono to build on not Windows + * #2353 Update Microsoft.SourceLink.GitHub to 1.0.0 + * #2351 Get rid of JoinedEnumerable and SingletonEnumerable + * #2348 Use static ReferenceComparer for reference comparisons + * #2308 Merge 5.2.7 + * #2294 Add StackExchangeRedis cache provider documentation + * #2293 Update RtMemoryCache framework dependency + * #2265 Fix code style issues + * #2251 Publish development nightly builds on nuget + * #2205 Merge 5.2.6 + * #2171 Upgrade NUnit + * #2122 Update AsyncGenerator to 0.13.3 + * #2016 Avoid recursive calls in BatchFetchQueue + * #2014 Obsolete Environment.Properties + * #1973 Investigate licenseUrl deprecation + * #1971 Add SourceLink to allow NuGet package debugging + * #1940 Allow to provide dev specific properties in NHibernate.dev.props + * #1936 Upgrade AsyncGenerator to 0.13.1 + +** Tests + + * #2384 Tests to verify NH-2329 is obsolete + * #2360 Add OData test for single property $expand + * #2089 Bidirectional list fails if session only knows about child + * #2066 Tests for proxy interface handling + * #1966 Test duplicated join on some Linq queries + +Build 5.2.7 +============================= + +Release notes - NHibernate - Version 5.2.7 + +4 issues were resolved in this release. + +** Bug + + * #2302 Backport sqlite.binaryguid to configuration schema + * #2298 Dml Linq Update Produce Wrong Sql + * #2296 Missing Row Count in Debug Log for Future queries + +** Task + + * #2303 Release 5.2.7 + +Build 5.2.6 +============================= + +Release notes - NHibernate - Version 5.2.6 + +11 issues were resolved in this release. + +** Bug + + * #2190 Cannot instantiate a SessionFactory using Prevalence cache + * #2177 New Fetch() method in QueryOver returns IQueryOver<> instead of QueryOver<> + * #2172 Using DependentTransaction fails + * #2175 Subcriteria on component collection generates incorrect join alias + * #2173 Futures not batching correctly in NH 5.2.x + * #2141 Undefined call to Equals object in collection during flush just before commit + * #2127 StackExchangeRedisCache with PreferMultipleGet = true calls GetMany multiple times + * #2110 Wrong GUID to string conversion with SQLite BinaryGuid=False + +** Task + + * #2200 Release 5.2.6 + * #2199 Upgrade AsyncGenerator to 0.8.2.12 + +** Tests + + * #2132 Add GetMany for ReadWriteCache tests + +Build 5.2.5 +============================= + +Release notes - NHibernate - Version 5.2.5 + +5 issues were resolved in this release. + +** Bug + + * #2075 Missing cast when comparing a guid and string columns in SAP SQL Anywhere + * #2046 Fix nullable Guid ToString is not translated correctly on some dialects + * #2043 System.Reflection.TargetException when an interface is used as class mapping proxy definition + * #2040 Incorrect SQL when comparing a guid and string column in Sql Server + +** Task + + * #2086 Release 5.2.5 + +Build 5.2.4 +============================= + +Release notes - NHibernate - Version 5.2.4 + +3 issues were resolved in this release. The dialect change has the side effect of +re-enabling a hack used by NHibernate.Spatial, allowing Spatial users to upgrade +to NHibernate 5.2.x. See NHibernate.Spatial#104. + + ##### Possible Breaking Changes ##### + * Using DML on an entity collection was applying the changes without + filtering according to the entity. It will now throw a + NotSupportedException. + +** Bug + + * #2020 Throw for DML on filter + * #2011 Use a statically resolved dialect when building the session factory + +** Task + + * #2030 Release 5.2.4 + +As part of releasing 5.2.4, a missing 5.2.0 possible breaking change has been added about +property-ref on null values. See 5.2.0 possible breaking changes. + +Build 5.2.3 +============================= + +Release notes - NHibernate - Version 5.2.3 + +1 issue was resolved in this release. + +** Bug + + * #1964 Unable to serialize session because SerializationFieldInfo is not marked as serializable + +Build 5.2.2 +============================= + +Release notes - NHibernate - Version 5.2.2 + +3 issues were resolved in this release. + +** Bug + + * #1953 Query space invalidation doesn't work for bulk actions + * #1269 NH-3069 - Cannot use Session.Lock with Version column on abstract base class + +** Task + + * #1957 Release 5.2.2 + +Build 5.2.1 +============================= + +Release notes - NHibernate - Version 5.2.1 + +5 issues were resolved in this release. + +** Bug + + * #1928 JoinAlias on JoinQueryOver fails + * #1920 ISession.Get may fail with a null exception + * #1918 Property-ref on many-to-one with composite id fails + +** Task + + * #1932 Release 5.2.1 + * #1927 Add missing possible breaking change + +As part of releasing 5.2.1, a missing 5.2.0 possible breaking change has been added about duplicated columns +in mapping. See 5.2.0 possible breaking changes. + +Build 5.2.0 +============================= + +Release notes - NHibernate - Version 5.2.0 + +157 issues were resolved in this release. + + ##### Possible Breaking Changes ##### + * Entities having many non-readonly properties (including many-to-one) mapped to + the same column will no more silently ignore the trouble till an insert or update + is attempted. They will now cause the session factory built to fail. When + mapping many properties to the same column, all of them excepted at most one + should be mapped with `insert="false" update="false"`. + * Mappings mixing column elements and formula elements were taking into account + only the formula elements. They will now take into account all elements. + * Mappings mixing column elements and/or formula elements with a column attribute + or a formula attribute were silently ignoring the attribute. They will now throw. + * Mappings mixing a column attribute and a formula attribute were silently doing + some best effort logic, either considering this as a two columns mapping, the + second one being the formula (most cases), or only taking into account the + formula (case of the `` mapping). They will now throw. + * NHibernate StringType has gained case-sensitivity and culture parameters. + Previously it was ignoring parameters. This type may change its behavior + for any mapping having defined parameters for this type. See #1833. + * Mapping a dynamic component with a Hashtable property instead of an + IDictionary is no more supported. + * Querying a dynamic entity as a Hashtable instead of an IDictionary is no more + supported. + * A collection mapped with a `property-ref` will no more support being accessed + when the referenced property is null. It will throw. Previously, the collection + was not throwing but was always loaded empty. + * With PostgreSQL, a HQL query using the bitwise xor operator "^" or "bxor" + was exponentiating the arguments instead. It will now correctly apply the xor + operator. (# operator in PostgreSQL SQL.) + * Auto-generated constraint names will not be the same than the ones generated + with previous NHibernate versions under .Net Framework. (Under .Net Core those + names were anyway changing at each run.) The new ones will be the same + whatever the runtime used for generating them. + * Some generated PK names may change, if a table name has a quoting symbol at + precise 13th character. + * The WcfOperationSessionContext has been removed from .Net Core and .Net + Standard builds. See #1842. + * Some classes, which were not serializing the session factory, do now serialize it. + In case of cross-process serialization/deserialization, these session factories + will need to be properly named, by setting the session_factory_name setting in the + configuration used to build them. This may mainly affect users of a distributed + second level cache, if their cache implementation uses binary serialization. + Affected classes are: CacheKey, CollectionKey, EntityKey and EntityUniqueKey. + * Some types cache representations have changed. Out-of-process second level + caches should be cleared after upgrading NHibernate, if some of those types + were cached. The concerned types are: CultureInfoType, TypeType, UriType, + XDocType, XmlDocType. + * Dialect.GetIdentitySelectString was called by the entity persisters with + inverted parameter values: the table name in the column parameter, and the + column name in the table parameter. No built-in dialects were using the + parameter values. External dialects which were using it inverted (causing issues + to collection persisters, which have always supplied them correctly) needs + to be accordingly adjusted. + * Users providing through an IObjectFactory some custom logic for instantiating + value types will now need to supply their own result transformer if they were + using AliasToBeanResultTransformer with value types, or their own entity + tuplizer if they were using value types as entities. + * Users providing through an IObjectFactory some custom logic for instantiating + their custom session contexts will have to implement + ICurrentSessionContextWithFactory and add a parameterless public constructor + to their custom context, and move their custom instantiation logic from + IObjectsFactory.CreateInstance(Type, object[]) to + IObjectsFactory.CreateInstance(Type). + * Various *Binding classes of NHibernate will now always have their protected + dialect field null. (These classes are not expected to be derived by users, + as there is no way to use custom descendants with NHibernate.) + * AbstractPersistentCollection.AfterInitialize does no more perform queued + operations. Queued operations are now run by a later call to a new method, + ApplyPendingOperations. Concrete custom implementations relying on the queued + operations to be done by their base AfterInitialize will need to be changed + accordingly. + +** Bug + + * #1900 Do not generate FK on non-generated unique constraint + * #1888 Second level cache key mismatch + * #1886 Superfluous SQL casts generated in FirebirdClientDriver + * #1885 Process classes accordingly to inheritance path in mapping by code + * #1884 Fix attempt of static proxies to call base method for abstract classes + * #1874 Item in child collection not being removed + * #1872 Fix property ref handling + * #1870 Update build-menu options in documentation + * #1867 Fix registration of current_date for some dialects + * #1859 Fix filter & where fragment appended after lock hint + * #1855 Fix NotNullUnique not taken into account for single column + * #1849 Loquatious QueryCache constraint should be an IQueryCacheFactory constraint + * #1836 Cannot create configuration due to log4net loading failure + * #1824 property-ref on a component's property causes "wrong number of columns" error + * #1821 Allow using ICompositeUserType for collection element mappings in Mapping By Code + * #1818 Handle DbDataReaders that do not support GetSchemaTable + * #1812 Fix the handling without meta-values + * #1809 Update the mapping documentation + * #1799 Default value of 'proxyfactory.factory_class' in the documentation + * #1774 HQL and LINQ query by the type on with meta-type "string" fails + * #1769 Table mapping for UniqueColumn uses unstable GetHashCode() method + * #1764 Fix configuration schema forbidding custom bytecode provider + * #1760 Support formula on one-to-many map-key + * #1756 Fix unsaved-value for assigned identifiers + * #1753 Fix possible InvalidCastException in ActionQueue + * #1751 Avoid completing the same transaction twice + * #1748 Fix a bad setting naming about transaction scopes + * #1745 Remove obsoleted hibernate configuration prefix + * #1744 Reconnect lazy property proxy on deserialization + * #1737 Remove a binary breaking change introduced in #305 + * #1728 Generate a correct proxy for interfaces + * #1727 Fix a null-ref exception with no-proxy one-to-one + * #1726 Fix serialization exception when run on .NET Core 2.1 + * #1719 Cascade delete-orphan on no-proxy null association fails + * #1706 Entity Projection: Fixed AsEntity() for root entity + * #1704 GroupBy to custom class fails with ArgumentException + * #1696 Fixed CriteriaImpl.Clone for readonly query + * #1692 Update base_mapping.xml + * #1673 Bitwise xor treated as pow with PostgreSQL + * #1654 Fix the url to the quickstart of DocBook + * #1635 IdentitySelectString implementation is inconsistent + * #1612 Fix TypedValue not always using adequate comparer with SetParameterList + * #1609 Schema validation using SQLite and a specific schema fails + * #1366 NH-3506 - ICriteria/QueryOver create incorrect left join condition when table-per-hierarchy is used with filters + * #1358 NH-3992 - Intermediate inherited classes are not mapped correctly + * #1344 NH-3864 - Cacheable Multicriteria/Future'd query with aliased join throw exception + * #1339 NH-3823 - Initialization of Set with Lazy=Extra causes pending additions to disappear + * #1338 NH-3806 - Saving entities with proxy associations leads to fetching associated entities + * #1300 NH-3403 - Wrong parameter size in query with MsSql2000Dialect,MsSql2005Dialect and MsSql2008Dialect + * #1293 NH-3350 - Duplicate records using Future() + * #1278 NH-3189 - IManyToOneMapper lacks method to add columns AND formula into a single relationship + * #1214 NH-2180 - Many-To-Many with Property-ref fails to get subitems with FetchMode Join + * #1201 NH-1316 - PostgreSQL dialect use of lastval to retrieve last inserted "id" not safe with Triggers + * #1182 NH-3860 - Missing EntityName in IManyToOneMapper + * #1170 NH-3646 - Incorrect query when items removed from a collection of components contain null values + * #1163 NH-3545 - SchemaValidator fails for PostgreSql sequences + * #1151 NH-3426 - Wrong result when converting Guid to string + * #1121 NH-3095 - Cast from mapped long field to enum leads to 'Specified cast not valid' + * #1096 NH-2836 - SchemaValidator throws with SqlCe4 if db-schema set + * #1089 NH-2755 - LockMode hash differs in x86 and 64bit OS + * #1037 NH-3749 - Unnecessary comma in CREATE TABLE statement + * #1016 NH-3007 - Informix dialect generates incorrect boolean constants + * #1000 NH-2558 - NoViableAltException with boolean expression in OrderBy clause + * #990 NH-2016 - Duplicate Association Path when creating multiple aliases + * #460 Fix Criteria caching filtered collections + +** New Feature + + * #1892 Allow disabling Firebird driver parameter casting + * #1879 LINQ Coalesce and Conditional on Properties + * #1854 Add SQL Anywhere 17 support + * #1848 Add in ByCode support of all type mappings on Id + * #1833 Parametrize string type comparer + * #1830 Add a Linux build menu + * #1796 Support CacheMode in QueryBatch + * #1786 Document future results + * #1772 Support futures with stateless session + * #1752 Async ISynchronization + * #1742 Add new DB2CoreDriver to use with IBM.Data.DB2.Core provider + * #1693 Implement SurrogateSelector + * #1690 Bitwise xor not supported by SQLite + * #1682 Add support for System.MathF methods + * #1662 Add support for SAP HANA + * #1633 Added support for batching 2nd level cache operations when loading entities and collections + * #1631 Create UtcTicks and UtcDbTimestamp types + * #1599 Full control of entities fetching in Criteria + * #1381 NHibernate's IQuery is missing AddSynchronizedQuerySpace + * #968 NH-2285 - Support for LockMode in linq provider + * #920 NH-3991 - Support for Sybase ASE ADO.NET 4 Provider + * #897 NH-2187 - ElementAt LINQ extension method is not supported. + * #838 NH-3805 - Add support for string indexer property (get_Chars) + * #819 NH-3088 - Support the item operator [] on lists in linq queries + +** Improvement + + * #1908 Control over BeginTransaction in AdoTransaction + * #1905 Improve support of Npgsql 4 + * #1901 Add ability to use dynamic entities as C# dynamic + * #1890 Merge two logs in one + * #1875 Improve exception message in case of duplicated column + * #1869 Replace an O(n) lookup in LINQ query parsing by an O(1) one + * #1846 Remove dependency on System.Security.Permissions package for .NET Standard and .NET Core + * #1842 Remove WcfOperationSessionContext from .Net Core and .Net Standard + * #1838 Cannot add HqlJoin to HqlFrom + * #1827 Include the query in loader PostInstantiate QueryException + * #1819 Append the batched sql statement when StaleStateException occurs + * #1814 Mark proxy assembly with IgnoresAccessChecksToAttribute to allow implementing non public interfaces + * #1808 Support mixed formulas and columns + * #1792 Obsolete HolderInstantiator + * #1788 Implement multiple get and put for query cache and query batch + * #1785 Update user types documentation + * #1782 Refactor BugTestCase + * #1781 Clean-up IObjectsFactory usages + * #1778 Allow to use dynamic objects as dynamic components + * #1777 Replace ICache interface by a CacheBase class + * #1776 Make cache types serialization friendly + * #1775 Start/Stop required db-service for TeamCity + * #1770 Make obsolete abstract virtual + * #1767 Allow generic dictionaries for dynamic entities + * #1765 Provide cacheable representations for all NHibernate built-in types + * #1762 Remove duplicated and obsolete interceptor documentation + * #1761 Update mapping documentation + * #1759 Support mixed formulas and columns in By Code + * #1736 Remove excessive rowIdAlias parameter in Loader + * #1713 Update contributing guidelines + * #1712 Support IEquatable in LINQ provider + * #1710 Rationalize DateTimeOffset read and write + * #1709 Lazy properties static proxy + * #1703 Remove dialect instantiation in AddDeserializedMapping + * #1700 Single place to specify TargetFrameworks + * #1699 Add ability to load types from in-memory-only assemblies + * #1698 Document setting the logger factory programmatically + * #1694 Implement CollectionHelper.GetHashCode that accepts IEqualityComparer + * #1689 Purge more Invariant culture usages + * #1671 Decouple configuration of IObjectsFactory from BytecodeProvider + * #1666 Handle multi-queries support in FutureBatch + * #1656 Allow any cache.* property in NHibernate configuration + * #1641 Add cross platform build for full .NET Framework + * #1452 Async After-/BeforeTransactionCompletion + * #874 NH-3543 - Enhanced Db2 driver to support multi query + * #865 NH-2428 - Session.MultiCriteria and FlushMode.Auto inside transaction + * #840 NH-3835 - Future/MultiCriteria 2nd level caching + * #822 NH-3150 - Select Post Insert Generator Improvements + * #755 NH-3670 - Dynamic component should allow generic dictionary + * #752 NH-3541 - Future queries of Criteria API/QueryOver are batched separately from other query methods + * #696 Upgrade to ReLinq 2.2.0 + * #415 Add check to ensure that IUserCollectionType.Instantiate returns uninitialized collection + +** Task + + * #1863 Release 5.2.0 + * #1823 Run tests for SQLite on .NET Core + * #1783 Obsolete MultiQuery and MultiCriteria + * #1773 Obsolete unused version related methods of SByteType + * #1771 Obsolete unused "xml" type methods + * #1743 Merge 5.1.3 into master + * #1739 Upgrade to AsyncGenerator 0.8.2.7 + * #1688 Merge 5.1.2 into master + * #1687 Update NUnit to 3.10.1 + * #881 NH-3358 - Document all attributes for the element tag + +** Tests + + * #1887 Test ref and out methods with static proxy + * #1724 NH-2716 - Modify test case for discarding the alleged bug + * #1584 Test Parent property is not accessible in queries + * #1531 Test for Merging a bidirectional list creates unnecessary UPDATE statement + * #1440 Test case for ComposedId Entity with Lazy Property is not proxified + * #1414 Test ISession.IsDirty() should not trigger cascade saving + +As part of releasing 5.2.0, a misnamed setting in 5.0.0 release notes has been fixed: +transaction.use_connection_on_system_events correct name is transaction.use_connection_on_system_prepare + +Build 5.1.7 +============================= + +Release notes - NHibernate - Version 5.1.7 + +** Bug + * #2298 Dml Linq Update Produce Wrong Sql + +Build 5.1.6 +============================= + +Release notes - NHibernate - Version 5.1.6 + +** Bug + * #2172 Using DependentTransaction fails + +Build 5.1.5 +============================= + +Release notes - NHibernate - Version 5.1.5 + + ##### Possible Breaking Changes ##### + * Using DML on an entity collection was applying the changes without + filtering according to the entity. It will now throw a + NotSupportedException. + +** Bug + + * #2043 System.Reflection.TargetException when an interface is used as class mapping proxy definition + * #2020 Throw for DML on filter + +** Task + * #2074 Release 5.1.5 + +Build 5.1.4 +============================= + +Release notes - NHibernate - Version 5.1.4 + +** Bug + + * #1959 Backport Query space invalidation doesn't work for bulk actions + +Build 5.1.3 +============================= + +Release notes - NHibernate - Version 5.1.3 + +** Bug + + * #1741 Fix DbType.Binary registration in DB2Dialect + * #1732 Dictionary failure in Loader + * #1730 Query cache always missed in session having altered the entities + * #1711 Fix static proxy serialization + +** Task + + * #1716 Release 5.1.3 + + +Build 5.1.2 +============================= + +Release notes - NHibernate - Version 5.1.2 + +** Bug + + * #1680 RowCount not working with JoinEntityAlias + * #1672 Generated async methods do not correctly propagate OperationCanceledException + * #1667 Collection initializing with zero rows after update to NH5 + * #1660 Wrong CopyTo implementation + * #1650 Cannot use cache.use_sliding_expiration in hibernate.cfg.xml + * #1585 Hashset unsupported by SetParameterList + * #1355 NH-3928 - Random invalid SQL generated when using bitwise operators + +** Task + + * #1668 Merge 5.0.5 into 5.1.x + * #1664 Release 5.1.2 + * #1659 Merge 5.0.4 into 5.1.x + +As part of releasing 5.1.2, a missing 5.0.0 possible breaking change has been added about future queries with data +providers not actually supporting them. See 5.0.0 possible breaking changes. + + +Build 5.1.1 +============================= + +Release notes - NHibernate - Version 5.1.1 + +** Bug + + * #1645 One-to-one with property-ref triggers StackOverflow Exception + * #1643 TypeLoadException in StaticProxyFactory after upgrading to 5.1.0 + * #1640 Handle all overloads of String.Trim*() + * #1636 Fix api documentation assets path + * #1628 StackOverflowException for lazy proxied entities with explicit interface properties + * #1618 Fix NuGet push script + * #1149 NH-3391 - StatelessSession: one-to-one detail-object is always null + +** Improvement + + * #1646 Add a link to release notes in NuGet package + * #1639 Speedup access to SQL Server on Linux + * #1624 Add missing ids on documentation sections + * #1619 Document "entity join" and "entity projection" + +** Task + + * #1649 Release 5.1.1 + * #1622 Update cache documentation + * #1621 Upgrade Async Generator to a version compatible with VS 15.6.3 + + +Build 5.1.0 +============================= + +Release notes - NHibernate - Version 5.1.0 + +** Highlights + * NHibernate has gained two new target frameworks: .Net Core 2.0 and .Net Standard 2.0. NHibernate NuGet package + provides them, along with the .Net framework 4.6.1 build. + For these new frameworks, some additional specificities or limitations apply: + * Binary serialization is not supported - the user shall implement serialization surrogates for System.Type, + FieldInfo, PropertyInfo, MethodInfo, ConstructorInfo, Delegate, etc. + * SqlClient, Odbc, Oledb drivers are converted to ReflectionBasedDriver to avoid the extra dependencies. + * CallSessionContext uses a static AsyncLocal field to mimic the CallContext behavior. + * System transactions (transaction scopes) are untested, due to the lack of data providers supporting them. + * 114 issues were resolved in this release. + + ##### Possible Breaking Changes ##### + * Since Ingres9Dialect is now supporting sequences, the enhanced-sequence identifier generator will default to + using a sequence instead of a table. Revert to previous behavior by using its force_table_use parameter. + * Some overridable methods of the Dialect base class and of MsSql2000Dialect have been obsoleted in favor of + new methods. Dialects implementors need to override the replacing methods if they were overriding the + obsolete ones, which are: + * Dialect.GetIfNotExistsCreateConstraint(Table table, string name), replaced by + GetIfNotExistsCreateConstraint(string catalog, string schema, string table, string name). + * Dialect.GetIfNotExistsCreateConstraintEnd(Table table, string name), replaced by + GetIfNotExistsCreateConstraintEnd(string catalog, string schema, string table, string name). + * Dialect.GetIfExistsDropConstraint(Table table, string name), replaced by + GetIfExistsDropConstraint(string catalog, string schema, string table, string name). + * Dialect.GetIfExistsDropConstraintEnd(Table table, string name), replaced by + GetIfExistsDropConstraintEnd(string catalog, string schema, string table, string name). + * MsSql2000Dialect.GetSelectExistingObject(string name, Table table), replaced by + GetSelectExistingObject(string catalog, string schema, string table, string name). + +** Bug + + * #1606 NHibernate 5 precision maximum on decimal reduced vs. NHibernate 4 + * #1605 MySql batcher may attempt initiating a new batch without closing open reader first. + * #1604 MySql batcher disables db exception translation + * #1602 Preserve original snapshot mode. + * #1594 AsyncLocal leak in SystemTransactionContext + * #1587 Prevent substitute garbage collection + * #1565 For update with outer join fails with PostgreSQL + * #1562 Fix round registration + * #1559 Deep removal of Fetch result operators when Any is used + * #1556 Linq query with "Contains" on persistent collection fails + * #1551 Assert for a null reference in a flaky test. + * #1536 Avoid a null reference exception in ExpressionKeyVisitor + * #1535 Fix some HQL functions registration + * #1534 Fixed entity name retrieval for EntityProjection + * #1526 ExpressionKeyVisitor does not produce unique keys for anonymous types coming from different assemblies + * #1514 Fix exceptions serialization + * #1511 Test Unicode string. + * #1509 Add missing NHibernateLogLevel.Info in example web project + * #1507 NH-3119 - fix test not supporting optimization + * #1506 SQLite is bugged with distributed transactions: disable distributed tests + * #1505 Chaining scopes with ODBC is bugged: disabling the test. + * #1501 Fix NH-3023 test + * #1496 Fix ManyToOneType.IsModified to handle both object instance and identifier passed to the parameter “old”. + * #1491 Forgotten async generation for #1487 + * #1486 Fix IsModified so that a null equates empty components when using select-before-update. + * #1484 Fix default types + * #1478 Exception when using envers with the latest logging changes + * #1476 Fix GetQueryCache storing two different caches. + * #1468 Comparison with DateTime? produces wrong SQL + * #1463 Fix a null reference case in session context + * #1454 Fix ProxyFactory cache + * #1445 Upgrade AsyncGenerator to 0.6.2 and regenerate. + * #1442 Unable to use an entity with a `FieldInterceptor` property and a lazy loaded property + * #1436 StackOverflowException when merging an entity with a lazy property + * #1434 Replace remaining SetOptions with WithOptions + * #1385 SecondLevelCache CreateSQLQuery().UniqueResult() throws Exception Specified cast is not valid. + * #1372 NH-3982 - Simple query with Cacheable, Fetch and SingleOrDefault throws exception (regression from 3.3.0) + * #1371 NH-3898 - Configuring a property with generated="insert" turns "Property.IsUpdatable" into"false" even using update="true" in the xml mapping file. + * #1363 NH-2500 - NH 3.0 Linq provider uses query parameters from first call in subsequent calls. + * #1335 NH-3787 - Decimal truncation in Linq ternary expression + * #1330 NH-3673 - Closure variable values locked in from expressions in NHibernate LINQ provider + * #1226 NH-2534 - Join-fetching a many-to-one with property-ref results in select n+1 problem + * #1196 NH-4087 - Decimal truncation occurs after 5 digits + * #1119 NH-3084 - Class NHibernate.Loader.Loader logs SQL statement on INFO level + * #1052 NH-3976 - Inconsistent Decimal/NHibernateUtil.Currency handling causing runtime error when using Oracle.ManagedDataAccess + * #987 NH-1509 - MsSql2000Dialect does not use default schema when creating "if exists" statement + * #448 NH-1285 - Drop/Create script with default_schema/default_catalog fix(SqlServer) + +** New Feature + + * #1588 Add a generic batcher for insert/update/delete statements, usable with PostgreSQL and others + * #1545 Support to join not associated entities in Criteria (aka Entity Join) + * #1451 New StaticProxyFactoryFactory + * #1403 Add timeouts support to MultiCriteria + * #1377 Logging refactoring + * #954 NH-3807 - Support for .NET Core 2.0 + * #948 NH-3435 - Ability to select entities in Criteria projections + * #910 NH-3606 - Open a stateless session from a session + * #908 NH-3470 - Allow Linq Query to load entities as read-only + +** Improvement + + * #1600 Set MySqlClientBatchingBatcher as a default batcher for MySqlDataDriver + * #1597 Add support for single-argument truncate to dialects that do not support it natively + * #1569 Modernize test example + * #1567 Avoid Trim().Length as empty check and ToLowerInvariant() in string comparison + * #1561 NAnt refactoring + * #1558 Improved collection batch fetching + * #1557 Aggregate named queries validation exceptions. + * #1555 Catch practices: avoid losing catched exception information. + * #1552 Obsolete UnmodifiableDictionary + * #1549 Remove an override which was doing the same thing as the base + * #1548 Add a missing short circuit in query parameter expansion. + * #1547 Double query translation + * #1546 Remove a redundant argument in Linq provider ExecuteQuery. + * #1543 Various string manipulation optimizations + * #1541 Cache subclass entity aliases in Loader + * #1537 Avoid unnecessary persister lookup in Loader + * #1529 Lazy mapping schema loading + * #1521 Enable warning as error for all projects and configurations + * #1519 Reuse SchemaExport in CreateSchema/DropSchema in tests + * #1515 Make NHibernateUtil.Initialize / IsInitialized better reusable for sub-projects like Envers + * #1504 More reliable SQLite handling in tests. + * #1502 Upgrade Iesi to 4.0.3 in order to use a release assembly + * #1498 Cease throwing bare Exception + * #1494 Update to Oracle installation instructions. + * #1490 Optimize empty arrays usages + * #1483 Clean-up of TypeFactory + * #1482 Refactored DefaultEntityAliases to avoid unnecessary calculations + * #1477 Reuse the same generic EmptyMapClass instance across the project + * #1475 Document expiration constraint on UpdateTimestampsCache region. + * #1467 Reduce the number of calls to UpdateTimestampsCache + * #1466 Obsolete EqualsHelper + * #1465 Obsolete EnumerableExtensions + * #1464 Obsolete ISessionImplementor.Initialize method + * #1449 Document IsDirty potential side effects + * #1441 Normalize TargetInvocationException unwrapping + * #1417 Table counter for aliases should be stable + * #1412 Store Linq query options in a query provider instead of a queryable + * #1391 Performance regression in SessionIdLoggingContext + * #843 NH-3879 - SequenceHiLoGenerator Jumps 1 number each lo > maxLo + * #842 NH-3869 - Add a way of adding comments into LINQ queries + * #837 NH-3804 - Register CHR/CHAR, NCHAR, UNICODE, and ASCII standard functions to the dialect(s) + * #831 NH-3515 - Support for Decimal.Round, Decimal.Ceiling, Decimal.Floor and other static methods of Decimal class + * #768 NH-3921 - Support sequences in Ingres9Dialect + * #769 NH-3922 - The various timeout methods should indicate time unit + +** Task + + * #1610 Move MsSql constants from driver to dialect. + * #1608 Missing Async test for GH1594 + * #1603 Forgotten async generation of truncate test + * #1598 Upgrade IESI to 4.0.4 for having a bumped file version. + * #1589 Add framework info to example web project and enable .NET Core. + * #1574 Fix encoding in NorthwindDbCreator.cs + * #1563 Generate Async test for deep removal of fetch. + * #1527 Adjust ignore rules for not ignoring DebugHelpers folder and contents + * #1525 5.1.0 release + * #1524 Reduce breaking changes due to Ingres9 sequence support + * #1518 Upgrade to AsyncGenerator 0.8.1 + * #1512 Upgrade to NUnit 3.9 + * #1474 Upgrade AsyncGenerator to 0.7.0 + +** Tests + + * #1539 Add more tests for constants in LINQ queries + +As part of releasing 5.1.0, a missing 5.0.0 possible breaking change has been added about inequality semantic in LINQ +queries. See 5.0.0 possible breaking changes. + +Build 5.0.8 +============================= + +Release notes - NHibernate - Version 5.0.8 + +** Bug + * #2172 Using DependentTransaction fails + +Build 5.0.7 +============================= + +Release notes - NHibernate - Version 5.0.7 + + ##### Possible Breaking Changes ##### + * Using DML on an entity collection was applying the changes without + filtering according to the entity. It will now throw a + NotSupportedException. + +** Bug + + * #2043 System.Reflection.TargetException when an interface is used as class mapping proxy definition + * #2020 Throw for DML on filter + +** Task + * #2073 Release 5.0.7 + +Build 5.0.6 +============================= + +Release notes - NHibernate - Version 5.0.6 + +** Bug + * #1672 Generated async methods do not correctly propagate OperationCanceledException + * #1355 NH-3928 - Random invalid SQL generated when using bitwise operators + +** Task + * #1686 Release 5.0.6 + +Build 5.0.5 +============================= + +Release notes - NHibernate - Version 5.0.5 + +** Bug + * #1665 Have IFutureEnumerable.GetEnumerable executing immediatly the query + +Build 5.0.4 +============================= + +Release notes - NHibernate - Version 5.0.4 + +** Bug + * #1658 Add missing cache setting + +Build 5.0.3 +============================= + +Release notes - NHibernate - Version 5.0.3 + +** Bug + * #1462 Fix disposing SessionIdLoggingContext if CheckAndUpdateSessionStatus is failed + +Build 5.0.2 +============================= + +Release notes - NHibernate - Version 5.0.2 + +** Bug + * #1456 NH-4052 - Add missing serializable implementation + * #1455 Reduces check session and set context id redundant calls + * #1453 Eliminate unnecessary AsyncLocal allocation if SessionId isn't changed + +** Task + * #1457 Release 5.0.2 + +As part of releasing 5.0.2, a missing 5.0.0 possible breaking change has been added about Dialects requiring now +to be configured. See 5.0.0 possible breaking changes. + +Build 5.0.1 +============================= + +Release notes - NHibernate - Version 5.0.1 + +** Bug + * #1428 Insert underscore in combined parameter name + * #1424 Bad wording and example fixes in cache documentation. + * #1420 Fix #1419 - ISession.IsDirty() shouldn't throw exception for transient many-to-one object in a session + * #1419 ISession.IsDirty() shouldn't throw exception for transient many-to-one object in a session + * #1418 Column.GetAlias should account for other suffixes + * #1415 Correct MaxAliasLength for various dialects + * #1393 Fix Linq Future aggregates failures, fixes #1387 + * #1389 Add support for out/ref Nullable parameters of proxied methods + * #1387 Linq Sum() with ToFutureValue fails + * #1384 Fix a column spec causing missing col in pdf, fix a text overflow + * #1380 #750 - AliasToBean failure, test case and fix + * #1378 Fix #1362 - Running Unit tests against SQLite fails on datetime/UTC + * #1362 NH-4093 - Running Unit tests against SQLite fails on numerous (22) datetime/UTC related tests. + * #1357 NH-3983 - ToFuture throws ArgumentException at CreateCombinedQueryParameters + * #1179 NH-3840 - Wrong documentation of "cascade" in 5.1.11 (many-to-one) + * #1165 NH-3554 - Docs - bidirectional, indexed collections + * #983 Fix forgotten CDATA closure. + * #879 NH-4006 - Provide a correct MaxAliasLength for various dialects + * #750 Transformers.AliasToBean: Value cannot be null. Parameter name: key + * #712 NH-4092 - AsyncGenerator creates unused private static event handler in SQLite20Driver + +** Improvement + * #1410 Remove unused code in build scripts + * #1404 Use MsBuild for packing .nupkg files + * #1401 Clean up db tests dependencies + * #1395 Documentation fixes + * #1386 Lack of custom logging documentation + * #1382 Jira to GitHub: change issue naming in tests + * #1379 Documentation fixes + * #982 Back port doc fixes + * #824 NH-3208 - Document all possible settings in hibernate.cfg + * #823 NH-3179 - Documentation should note that OnDelete should set IsSaved to false in chapter 24.1 + * #788 NH-1947 - Undocumented attributes on sql-query element + * #713 Switch to GitHub issues + * #711 Switch doc generation to UTF-8. + +** Task + * #1431 Release 5.0.1 + * #1405 Remove unused and broken NHibernate.Setup WiX project + + +Build 5.0.0 +============================= + +** Highlights + * IO bound methods have gained an async counterpart. Not intended for parallelism, make sure to await each + call before further interacting with a session and its queries. + * Strongly typed DML operation (insert/update/delete) are now available as Linq extensions on queryables. + * Entities collections can be queried with .AsQueryable() Linq extension without being fully loaded. + * Reference documentation has been curated and completed, notably with a Linq section. + http://nhibernate.info/doc/nhibernate-reference/index.html + +** Known BREAKING CHANGES from NH4.1.1.GA to 5.0.0 + + NHibernate now targets .Net 4.6.1. + + Remotion.Linq and Antlr3 libraries are no more merged in the NHibernate library, + and must be deployed along NHibernate library. (NuGet will reference them.) + + Classes and members which were flagged as obsolete in the NHibernate 4.x series have been dropped. + Prior to upgrading, fix any obsolete warning according to its message. See NH-4075 and NH-3684 for a list. + + ##### Possible Breaking Changes ##### + * All members exposing some System.Data types have been changed for the corresponding System.Data.Common + types. (IDbCommand => DbCommand, ...) + * The Date NHibernate type will no more replace by null values below its base value (which was year 1753). + Its base value is now DateTime.MinValue. Its configuration parameter is obsolete. + * NHibernate type DateTimeType, which is the default for a .Net DateTime, does no longer cut fractional + seconds. Use DateTimeNoMsType if you wish to have fractional seconds cut. It applies to its Local/Utc + counterparts too. + * LocalDateTimeType and UtcDateTimeType do no more accept being set with a value having a non-matching kind, + they throw instead. + * DbTimestamp will now round the retrieved value according to Dialect.TimestampResolutionInTicks. + * When an object typed property is mapped to a NHibernate timestamp, setting an invalid object in the + property will now throw at flush instead of replacing it with DateTime.Now. + * Decimal type registration now correctly handles maximal precision. For most dialects, it is 28, matching + the .Net limit. Values in mappings above maximal precision will be reduced to maximal precision. + * Default cast types do no more resolve string to 255 length and decimal to its default precision/scale for + the dialect. They resolve to 4000 length string and (28, 10) precision/scale decimals by default, and are + trimmed down according to dialect. Those defaults can be overridden with query.default_cast_length, + query.default_cast_precision and query.default_cast_scale settings. + * Future queries with data provider not actually supporting them (not supporting mutliple queries in a single + SQL command) are no more immediately executed at the .Future call. They are executed only when directly + enumerated or when their IFutureEnumerable.GetEnumerable method is called. (This aligns them with the behavior + of FutureValue.) + * Dialects are now configurable. If you instantiate a dialect directly, make sure you call its Configure + method, with as argument the properties of a NHibernate Configuration object. You may use instead + Dialect.GetDialect methods, which configure the dialect before returning it. + * Transaction scopes handling has undergone a major rework. See NH-4011 for full details. + ** More transaction promotion to distributed may occur if you use the "flush on commit" feature with + transaction scopes. Explicitly flush your session instead. Ensure it does not occur by disabling + transaction.use_connection_on_system_prepare setting. + ** After transaction events no more allow using the connection when they are raised from a scope + completion. + ** Connection enlistment in an ambient transaction is now enforced by NHibernate by default. + ** The connection releasing is no more directly triggered by a scope completion, but by later + interactions with the session. + * AdoNetWithDistributedTransactionFactory has been renamed AdoNetWithSystemTransactionFactory. + * Subcriteria.UniqueResult for value types now return default(T) when result is null, as was + already doing CriteriaImpl.UniqueResult. + * AliasToBeanResultTransformer property/field resolution logic has changed for supporting members + which names differ only by case. See NH-3693 last comments for details. + * Linq inequality implementation has been changed for supporting null, meaning that a "a != b" expression + will now be considered matching if one side is null, while previously due to SQL null semantic it was + considered non-matching. See NH-3100. + * Linq extension methods marked with attribute LinqExtensionMethod will no more be evaluated + in-memory prior to query execution when they do not depend on query results, but will always be + translated to their corresponding SQL call. This can be changed with a parameter of the attribute. + * Linq Query methods are now native members of ISession and IStatelessSession instead of being + extension methods. + * Linq provider now use Remotion.Linq v2, which may break Linq provider extensions, mainly due to names + changes. See https://github.com/nhibernate/nhibernate-core/pull/568 changes to test files for examples. + * NHibernate Linq internals have undergone some minor changes which may break custom Linq providers due + to method signature changes and additional methods to implement. + * IMapping interface has an additional Dialect member. ISessionFactoryImplementor has lost it, since it + gains it back through IMapping. + * IDriver.ExpandQueryParameters and DriverBase.CloneParameter take an additional argument. + * NullableType, its descendent (notably all PrimitiveType) and IUserType value getters and setters now + take the session as an argument. This should mainly impact custom types implementors. + * EmitUtil is now internal and has been cleaned of unused members. + * ContraintOrderedTableKeyColumnClosure has been renamed ConstraintOrderedTableKeyColumnClosure. + * enabledFilter parameter has been removed from IProjection.ToSqlString and ICriterion.ToSqlString methods. + * Proxy factory and proxy cache now use TypeInfo instead of System.Type. This should be transparent for + most users. + * Exceptions which were based on ApplicationException are now based on Exception: HibernateException, + ParserException and AssertionFailure. The logger factory which could throw a bare ApplicationException + now throws an InstantiationException instead. + * ThreadSafeDictionary class has been removed. Use System.Collections.Concurrent.ConcurrentDictionary + instead. + * Entity mode switching capability, which had never been fully implemented, is dropped. + * BytecodeProviderImpl, intended for .Net Framework 1 and broken, is dropped. + * Sessions concrete classes constructors have been changed. (It is not expected for them to be used + directly.) + * Obsolete setting interceptors.beforetransactioncompletion_ignore_exceptions is dropped. + * SQL Server 2008+ dialects now use datetime2 instead of datetime for all date-time types, including + timestamp. This can be reverted with sql_types.keep_datetime setting. + * SQL Server 2008+ timestamp resolution is now 100ns in accordance with datetime2 capabilities, down from + 10ms previously. This can be reverted with sql_types.keep_datetime setting. + * Oracle 9g+ dialects now use timestamp(7) for all date time types, instead of timestamp(4). + * Oracle 9g+ timestamp resolution is now 100ns in accordance with timestamp(7) capabilities, down from + 100µs previously. + * Oracle: Hbm2dll will no-more choose N- prefixed types for typing Unicode string columns by default. + This can be changed with oracle.use_n_prefixed_types_for_unicode setting, which will furthermore + control DbCommand parameters typing accordingly. See NH-4062. + * SqlServerCe: the id generator "native" will now resolve as table-hilo instead of identity. + * Firebird: timestamp resolution is now 1ms. + * PostgreSQL: if Npgsql v3 or later is used, time DbParameters will be fetched as TimeSpan instead of + DateTime. + * DB2 & Oracle lite: decimal type registration was hardcoding precision as 19 and was using length as + scale. It now uses precision and scale from mapping when specified, and disregards length. + * Ingres & Sybase ASA: decimal type registration was hardcoding precision as 18 and was using length as + scale. It now uses precision and scale from mapping when specified, and disregards length. + * ODBC: String parameter length will no more be specified by the OdbcDriver. + + +Release notes - NHibernate - Version 5.0.0 + +** Sub-task + * [NH-3956] - Native SQL query plan may get wrong plan + * [NH-3957] - Second level query cache may yields wrong cache entry + * [NH-4001] - Remove ThreadSafeDictionary + +** Bug + * [NH-926] - Identity insert fails with SQL Ce dialect and aggressive connection release mode. + * [NH-1752] - NHibernate Date type converts to NULL + * [NH-1904] - Protected properties and public properties cannot have the same name with different case + * [NH-2029] - filter-def's use-many-to-one=false should take ON into consideration + * [NH-2145] - AssertionFailure exception at ISession.Save + * [NH-2176] - Consecutive TransactionScopes cannot be used in same NHibernate session + * [NH-2238] - "DTC transaction prepare phase failed" when UPDATE:ing in a promoted TransactionScope + * [NH-2241] - Batch Insert using stateless session when using second level cache throws exception when unable to determine transient status + * [NH-2928] - Connections can only be closed after the Transaction is completed + * [NH-3023] - Deadlocks may cause connection pool corruption when in a distributed transaction + * [NH-3078] - TimeAsTimeSpanType issue when using Sybase Advantage Database + * [NH-3100] - Problem in use if condition for nullable boolean in linq to NHibernate + * [NH-3114] - Collection inside Component cannot be mapped to a different table + * [NH-3227] - InvalidOperationException in AbstractBatcher when distributed transaction is aborted + * [NH-3247] - Char value gets 'cached' in Where-queries + * [NH-3374] - Session.Merge throws InvalidCastException when using a Lazy bytes[] property + * [NH-3600] - ISession.Save returns wrong Id + * [NH-3665] - FirstOrDefault() broken since 3.3.4 and 3.4.0 + * [NH-3693] - AliasToBeanResultTransformerFixture fails under Firebird + * [NH-3755] - Proxy exception for multiple joined-subclass + * [NH-3757] - Dynamic entity mapped with entity-name cannot have a component of a fixed class + * [NH-3793] - Attribute entity-name on is ignored, causing mapping exception + * [NH-3845] - OfType fails with polymorphism + * [NH-3850] - .Count(), .Any() and other aggregates return only first result on polymorphic queries + * [NH-3885] - ThreadSafeDictionary is not threadsafe + * [NH-3889] - Coalesce on entity in sub-select causes incorrect SQL + * [NH-3895] - Problem with DateTime fractional seconds on ODBC for MS SQL Server + * [NH-3911] - Reflection Optimizer tries to cast values to getter type in setter + * [NH-3913] - Component has bag of child components. Child property mapping ignored + * [NH-3931] - Invalid order of child inserts when using TPH inheritance + * [NH-3946] - Linq where "is base class" doesn't get subclasses + * [NH-3948] - CheckAndUpdateSessionStatus() called twice in CreateFilter method inside SessionImpl class + * [NH-3950] - FutureValue fails on Linq queries defining a PostExecuteTransformer + * [NH-3954] - Dynamic proxy cache may yield a wrong proxy + * [NH-3955] - Unreliable Equals implementation + * [NH-3961] - Invalid date parameter format with nullables and MappedAs + * [NH-3966] - Missing command set dispose in batchers + * [NH-3968] - Distributed transaction cannot be committed because AdoNetWithDistributedTransactionFactory tries to write data by using locked sqlConnection + * [NH-3969] - Firebird: TimestampResolutionInTicks should be 1ms + * [NH-3977] - Thread safety weaknesses of MapBasedSessionContext + * [NH-3981] - CollectionHelper.DictionaryEquals throws + * [NH-3985] - ObjectDisposedException is thrown when using a child session after having previously disposed of another child session. + * [NH-3998] - SqlServer CE: "The column aliases must be unique" exception is thrown in some tests + * [NH-4013] - SqlClientBatchingBatcher CloseCommands contract violated + * [NH-4022] - MsSql2012Dialect: Invalid drop sequence statement + * [NH-4024] - ODBC failures with time + * [NH-4027] - Missing disposals of enumerators + * [NH-4035] - Teardown failure should not prevent cleanup + * [NH-4038] - Mapping a TimeSpan in a collection component mapping maps as a BIGINT + * [NH-4046] - Default length too short for variable length types with SAP Anywhere / ASE + * [NH-4077] - Possible race condition in ActionQueue.ExecuteActions + * [NH-4083] - ODBC nvarchar parameter corruption + * [NH-4084] - DbTimestamp cause stale update exception + * [NH-4086] - TimeType may lose fractional seconds + * [NH-4088] - Dialect.GetCastTypeName is buggy + * [NH-4090] - Prepare SQL fails with time parameters and SQL Server 2008+ + * [NH-4091] - SQL Server CE allocates too much memory with blob and sql prepare + +** New Feature + * [NH-1530] - Add support for XmlDocType and XDocType for Oracle + * [NH-2319] - IQueryable support for persistent collections + * [NH-3488] - Strongly Typed Updates and Deletes + * [NH-3771] - Implement setting to enable Batch Update with Optimistic Locking control + * [NH-3905] - Support async: Blocking IO leads to ThreadPool starvation and limits scalability + * [NH-3934] - Add methods WhereNot(ICriterion) and AndNot(ICriterion) in QueryOver + * [NH-3951] - Support .All() result operator + * [NH-3996] - Postgres: add support for XmlDocType and XDocType + * [NH-4009] - Allow marking a Linq extension as db only + * [NH-4017] - Handle Time parameter conversion for newer Npgsql + * [NH-4018] - Port AutoJoinTransaction feature + * [NH-4028] - Support inconclusive tests in result comparison + * [NH-4031] - Add an AsyncLocalSessionContext + * [NH-4032] - Supports multiple factories with ThreadStaticSessionContext + * [NH-4062] - Properly handle Oracle Unicode support dual model + +** Task + * [NH-3683] - Fix Compilation Warnings + * [NH-3958] - Reference documentation: missing types + * [NH-3959] - Fix documentation typos + * [NH-3999] - Document effect of quoted identifier on case sensitivity + * [NH-4000] - Release 5.0 + * [NH-4004] - Restrict tests running on SQL CE + * [NH-4051] - Replace System.Linq.Dynamic with System.Linq.Dynamic.Core in tests + * [NH-4057] - Fix tests for MySql + * [NH-4058] - Fix Oracle managed failing tests + * [NH-4063] - Fix ODBC failing tests + +** Improvement + * [NH-1851] - Mapping a TimeSpan as TimeAsTimeSpan for MySQL + * [NH-2444] - Document linq provider + * [NH-3094] - Linq does not support unary plus and unary minus operators + * [NH-3370] - Remove warning about "NHibernate.Type.CustomType -- the custom type * is not serializable" + * [NH-3386] - Linq OrderBy NewID() + * [NH-3431] - Replace System.Data with System.Data.Common + * [NH-3578] - Subcriteria.UniqueResult for value types should return default(T), same as CriteriaImpl.UniqueResult when result is null + * [NH-3669] - Query should be instance method of ISession + * [NH-3723] - Some tests are failing when log level set to DEBUG + * [NH-3744] - Fixed spelling of ContraintOrderedTableKeyColumnClosure method + * [NH-3750] - Use NuGet to refer to Remotion.Linq (unmerge ReMotion.Linq) + * [NH-3877] - Target .NET 4.6.1 + * [NH-3900] - Upgrade to Nunit 3.x + * [NH-3919] - Clean up and harmonize datetime types with regards to different dialects + * [NH-3927] - Switch to SemVer version scheme + * [NH-3932] - Merge() may fire unnecessary updates if collection and version mapping exists + * [NH-3943] - Use NuGet to reference packages instead of local copies + * [NH-3944] - Upgrade to ReLinq 2 + * [NH-3945] - Update to Antlr 3.5.1 + * [NH-3952] - Cleanup EnumerableHelper usage + * [NH-3962] - Build with MSBuild Tools 2017 (15) + * [NH-3963] - More explicit error on MappedAs invalid usage. + * [NH-3964] - Refactor reflection patterns + * [NH-3970] - TestCase base class: avoid hiding test failure on tear-down + * [NH-3973] - Remove enabledFilter parameter from IProjection.ToSqlString and ICriterion.ToSqlString methods + * [NH-3975] - Synchronize some features dialect support properties + * [NH-3978] - Extract IDatabaseMetadata from DatabaseMetadata + * [NH-3987] - Re-implement NhQueryable options + * [NH-3988] - Replace ApplicationException base class with just Exception + * [NH-3990] - Upgrade to VS2017 Project structure + * [NH-3993] - Component Element Customizer Missing ability to map non-public parents and composite element relations + * [NH-3997] - SqlServer CE: Make native generator to be TableHiLoGenerator + * [NH-4003] - Refactor session constructor + * [NH-4010] - Visual Studio launcher still launches 2015 + * [NH-4014] - Update SQLite assembly for tests + * [NH-4015] - Update Npgsql driver and enable DTC for it in tests + * [NH-4019] - Pass assembly into log4net functions + * [NH-4020] - Use TypeBuilder.CreateTypeInfo() + * [NH-4021] - Track all opened session in tests + * [NH-4023] - Pass ISessionImplementor to all value setters and getters of nullable types + * [NH-4026] - Update Firebird driver and use server in tests + * [NH-4030] - Cleanup and xml doc of Linq Future extension + * [NH-4033] - Update MySql connector used in tests + * [NH-4034] - Flush all sessions participating in a transaction + * [NH-4043] - Complete keyword registration needs done in dialects. + * [NH-4049] - EmitUtil can be cleaned up + * [NH-4050] - Use Task.Run instead of BeginInvoke in tests + * [NH-4052] - Collect schema validation exceptions + * [NH-4064] - Unmerge Antrl3.Runtime + * [NH-4073] - Replace NHibernate.Web.Example with modern version + * [NH-4076] - Do not resurrect session + +** Remove Feature + * [NH-3684] - Remove