diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Classifiers/1 Pricing.fsx b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Classifiers/1 Pricing.fsx new file mode 100755 index 0000000..7f7c625 --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Classifiers/1 Pricing.fsx @@ -0,0 +1,127 @@ +#load "Classifiers.fsx" + +open System +open System.Net +open System.Windows +open System.Threading +open Classifiers + +// ------------------------------------------------------- +// Create classifier window +// ------------------------------------------------------- + +let win = new ClassifierWindow(TopMost = true) +win.Run("MSFT") + +// Add some simple pattern classifiers (always rising never occurs!) +win.Add("Always up", Price.rising) +win.Add("Mostly up", Price.regression Price.rising) +win.Add("Mostly down", Price.regression Price.declining) +win.Add("Average", Price.average) + +// Compose pattern for detecting the "V" pattern +let mostlyUp = Price.regression Price.rising +let mostlyDown = Price.regression Price.declining +win.Add("V pattern", Price.sequenceAnd mostlyDown mostlyUp) + +// Pattern that detects when price is going up and is above given limit +let highAndRising limit = + Price.both + Price.average + mostlyUp + |> Price.map (fun (avg, up) -> + avg > limit && up) + +win.Add("High & rising", highAndRising 30.0) + + + + + + +// ------------------------------------------------------------------ +// Simple pattern classifiers + +open Classifiers.Price + +// Price is always rising (rarely happens) +win.Add("Always rising", rising) + +// Price rising over a linear regression +win.Add("Mostly rising", regression rising) +win.Add("Mostly declining", regression declining) + + +// Classifiers for calculating numeric indicators + +// Basic classifiers extract min, max, avg +win.Add("Minimum", minimum) +win.Add("Maximum", maximum) +win.Add("Average", average) + +// Calculate difference between min and max +let diff = both minimum maximum |> map (fun (l, h) -> h - l) +win.Add("Difference", diff) + +// Detecting interesting patterns + +// Inverse "V" pattern (price goes up, then down) +let upDown = sequenceAnd (regression rising) (regression declining) +win.Add("Up & Down", upDown) + +// Classifier checks whether average is less than specified +let averageLessThan lo = + average |> map (fun v -> v < lo) + +// Classifier detects rising price with avg under 26 +let risingUnder26 = + bothAnd (regression rising) (averageLessThan 26.0) +win.Add("Rising <26", risingUnder26) + +// True when difference is greater than specified +let differsBy limit = + both minimum maximum |> map (fun (l, h) -> h - l > limit) + +// The price is mostly rising and the difference is more than 3 +let risingFast = bothAnd (regression rising) (differsBy 3.0) +win.Add("Rising fast", risingFast) + + +// Computation expression examples + +// Price is declining and average is more than 27 +let downOver27 = classify { + // Calculate average over the range + let! avg = average + // Test if the price is mostly declining + let! down = regression declining + // Evaluate the condition + return down && (avg >= 27.0) } + +win.Add("Down >27", downOver27) + + +// Detecting the "L" patterns & some helpers + +// Get the min-max range +let range = both minimum maximum +// Left side is going down +let leftDown = bothAnd (regression declining) always +win.Add("Left down", leftDown) + +// Detect the "L" pattern +// (Left side goes down & the right side keeps low +// - in range 1/3 from minimum of left side) +let patternL = classify { + // Get ranges for left & right parts + let! (lmin, lmax), (rmin, rmax) = sequence range range + // The left part is declining + let! decl = leftDown + + // The right part keeps in a range + // (lo +/- of 1/3 difference) + let offs = (lmax - lmin) / 3.0 + let inRange v = v >= lmin - offs && v <= lmin + offs + return decl && inRange rmin && inRange rmax } + +win.Add("L pattern", patternL) diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Classifiers/Classifiers.fsx b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Classifiers/Classifiers.fsx new file mode 100755 index 0000000..ce3bb14 --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Classifiers/Classifiers.fsx @@ -0,0 +1,255 @@ +open System +open System.Net +open System.Windows +open System.Threading + +// ------------------------------------------------------------------ +// Domain-specific language for creating classifiers + +/// Represents a classifier that produces a value 'T +type Classifier<'T> = PT of ((DateTime * float)[] -> 'T) + + +/// Simple classifiers that extract value or check property +module Price = + + // ---------------------------------------------------------------- + // Basic functions for composition + + /// Runs a classifier and transforms the result using a specified function + let map g (PT f) = PT (f >> g) + + /// Classifier that alwasy succeeds & returns the specified value + let unit v = PT (fun _ -> v) + /// Classifier that applies two classifiers in sequence + let bind f (PT g) = PT (fun values -> + let (PT r) = f (g values) in r values) + + /// Simple classifier that always returns true + let always = unit true + + /// Creates a classifier that combines the result of two classifiers using a tuple + let both (PT f) (PT g) = PT (fun values -> f values, g values) + + /// Checks two properties of subsequent parts of the input + let sequence (PT f1) (PT f2) = PT (fun input -> + let length = input.Length + let input1 = input.[0 .. length/2 - (if length%2=0 then 1 else 0)] + let input2 = input.[length/2 .. length-1] + (f1 input1, f2 input2)) + + /// Gets the minimum over the whole range + let reduce f = PT (fun input -> + input |> Seq.map snd |> Seq.reduce f) + + // ---------------------------------------------------------------- + // Primitive classifiers + + /// Checks whether the price is rising over the whole checked range + let rising = PT (fun input -> + input |> Seq.pairwise |> Seq.forall (fun ((_, a), (_, b)) -> b >= a)) + + /// Checks whether the price is declining over the whole checked range + let declining = PT (fun input -> + input |> Seq.pairwise |> Seq.forall (fun ((_, a), (_, b)) -> b <= a)) + + /// Gets the minimum over the whole range + let minimum = reduce min |> map (fun v -> Math.Round(v, 2)) + + /// Gets the maximum over the whole range + let maximum = reduce max |> map (fun v -> Math.Round(v, 2)) + + /// Gets the maximum over the whole range + let average = PT (fun input -> + Math.Round(input |> Seq.map snd |> Seq.average, 2) ) + + /// Checks that the price is at least the specified value in the whole range + let atLeast min = PT (Seq.forall (fun (_, v) -> v >= min)) + + /// Checks that the price is at most the specified value in the whole range + let atMost max = PT (Seq.forall (fun (_, v) -> v <= max)) + + // ---------------------------------------------------------------- + // Advanced combinators + + /// Checks that two properties hold for subsequent parts of the input + let sequenceAnd a b = sequence a b |> map (fun (a, b) -> a && b) + /// Checks that two properties hold for the same input + let bothAnd a b = both a b |> map (fun (a, b) -> a && b) + /// Checks that one of the properties holds for subsequent parts of the input + let sequenceOr a b = sequence a b |> map (fun (a, b) -> a || b) + /// Checks that one of the properties holds for the same input + let bothOr a b = both a b |> map (fun (a, b) -> a || b) + + /// Checks that the price is withing a specified range over the whole input + let inRange min max = bothAnd (atLeast min) (atMost max) + + /// Checks that the property holds over an approximation + /// obtained using linear regression + let regression (PT f) = PT (fun values -> + // TODO: Use date time in case it is not linear + let xavg = float (values.Length - 1) / 2.0 + let yavg = Seq.averageBy snd values + let sums = values |> Seq.mapi (fun x (_, v) -> + (float x - xavg) * (v - yavg), pown (float x - xavg) 2) + let v1 = Seq.sumBy fst sums + let v2 = Seq.sumBy snd sums + let a = v1 / v2 + let b = yavg - a * xavg + values |> Array.mapi (fun x (dt, _) -> (dt, a * (float x) + b)) |> f) + +/// Computation expression builder for building classifiers +type ClassifierBuilder() = + member x.Return(v) = Price.unit v + member x.Bind(c, f) = Price.bind f c + +/// Instance of computation expression builder for classifiers +let classify = ClassifierBuilder() + +/// Does the property hold over the entire data set? +let run (PT f) (data:(DateTime * float)[]) = + f data + + +// ------------------------------------------------------------------ +// Downloading stock prices from Yahoo + + +/// Asynchronously downloads stock prices from Yahoo +let downloadPrices from stock = async { + // Download price from Yahoo + let wc = new WebClient() + let url = "http://ichart.finance.yahoo.com/table.csv?s=" + stock + let! html = wc.AsyncDownloadString(Uri(url)) + let lines = html.Split([|'\n'; '\r'|], StringSplitOptions.RemoveEmptyEntries) + let lines = lines |> Seq.skip 1 |> Array.ofSeq |> Array.rev + + // Return sequence that reads the prices + let data = seq { + while true do + for line in lines do + let infos = (line:string).Split(',') + let dt = DateTime.Parse(infos.[0]) + let op = float infos.[1] + if dt > from then yield dt, op } + + return data } + +// ------------------------------------------------------------------ +// Visualizing stock prices using FSharpChart + +#load "lib\\FSharpChart.fsx" +open MSDN.FSharp.Charting +open ChartData + +open System.Windows.Forms +open System.Drawing + +type ClassifierWindow() = + inherit Form(Visible=true, Width=800, Height=500) + + /// List of update functions to be called from GUI + let updates = ResizeArray<((DateTime * float)[] -> unit) * (unit -> unit)>() + let cleanup = ref ignore + + // Current cancellation token + let tok = ref <| new CancellationTokenSource() + + let grid = System.Windows.Forms.DataVisualization.Charting.Grid(LineColor=System.Drawing.Color.DimGray) + let ds = new OneValue() + let ch = + FSharpChart.Line [ 0.0 .. 100.0 ] + |> FSharpChart.WithArea.AxisY(MajorGrid=grid) + |> FSharpChart.WithArea.AxisX(MajorGrid=grid) + + let chart = new ChartControl(ch, Dock = DockStyle.Fill) + let chartArea = (chart.Controls.[0] :?> System.Windows.Forms.DataVisualization.Charting.Chart).ChartAreas.[0] + do chartArea.BackColor <- Color.Black + do chartArea.AxisX.TitleForeColor <- Color.White + do chartArea.AxisY.TitleForeColor <- Color.White + do chart.BackColor <- Color.Black + do base.BackColor <- Color.Black + do base.ForeColor <- Color.White + do ((chart.Controls.[1] :?> System.Windows.Forms.PropertyGrid).SelectedObject :?> System.Windows.Forms.DataVisualization.Charting.Chart).BackColor <- System.Drawing.Color.Black + do chartArea.AxisX.LineColor <- System.Drawing.Color.White + do chartArea.AxisY.LineColor <- System.Drawing.Color.White + do chartArea.AxisX.LabelStyle.ForeColor <- System.Drawing.Color.White + do chartArea.AxisY.LabelStyle.ForeColor <- System.Drawing.Color.White + + let split = new SplitContainer(Dock = DockStyle.Fill) + do + base.Controls.Add(split) + split.SplitterDistance <- 520 + split.Panel1.Controls.Add(chart) + do ds.BindSeries(chart.ChartSeries) + + /// Add classifier to list & create GUI + let addBoolClassifier name (cls:Classifier) = + let cont = new Panel(Anchor = (AnchorStyles.Left ||| AnchorStyles.Right ||| AnchorStyles.Top), Height=50, Width=split.Panel2.Width, Top=split.Panel2.Controls.Count*50) + let box = new Panel(Width = 60, Height = 30, Top = 10, Left = 10, BackColor=Color.LightGray) + cont.Controls.Add(box) + split.Panel2.Controls.Add(cont) + let block = new Label(Text = name, Height=50, Left=80, Width=split.Panel2.Width-60,Anchor = (AnchorStyles.Left ||| AnchorStyles.Right), TextAlign = ContentAlignment.MiddleLeft) + block.Font <- new System.Drawing.Font("Calibri", 15.0f) + cont.Controls.Add(block) + + let update data = + box.BackColor <- if run cls data then Color.YellowGreen else Color.DimGray + let clear () = + split.Panel2.Controls.Remove(cont) + updates.Add( (update, clear) ) + + /// Add classifier to list & create GUI + let addFloatClassifier name (cls:Classifier) = + let cont = new Panel(Anchor = (AnchorStyles.Left ||| AnchorStyles.Right ||| AnchorStyles.Top), Height=50, Width=split.Panel2.Width, Top=split.Panel2.Controls.Count*50) + let box = new Label(Width = 60, Height = 30, Top = 10, Left = 10, TextAlign = ContentAlignment.MiddleCenter) + cont.Controls.Add(box) + split.Panel2.Controls.Add(cont) + let block = new Label(Text = name, Height=50, Left=80, Width=split.Panel2.Width-60,Anchor = (AnchorStyles.Left ||| AnchorStyles.Right), TextAlign = ContentAlignment.MiddleLeft) + block.Font <- new System.Drawing.Font("Calibri", 15.0f) + box.Font <- new System.Drawing.Font("Calibri", 15.0f) + cont.Controls.Add(block) + + let update data = + box.Text <- string (run cls data) + let clear () = + split.Panel2.Controls.Remove(cont) + updates.Add( (update, clear) ) + + /// Main loop + let mainLoop stock = async { + let! prices = downloadPrices (DateTime(2009, 1, 1)) stock + let blocks = prices |> Seq.windowed 30 + let en = blocks.GetEnumerator() + + while en.MoveNext() do + do! Async.Sleep(125) + for fn, _ in updates do fn en.Current + + let lo = Seq.min (Seq.map snd en.Current) + let hi = Seq.max (Seq.map snd en.Current) + let diff = (hi - lo) / 6.0 + chartArea.AxisY.Maximum <- ceil (hi + diff) + chartArea.AxisY.Minimum <- floor (lo - diff) + ds.SetData(Array.map snd en.Current) } + + member x.Run(stock) = + let cts = new CancellationTokenSource() + x.Closing.Add(fun _ -> cts.Cancel()) + tok := cts + Async.StartImmediate(mainLoop stock, cts.Token) + + member x.Add(name, cls) = + addBoolClassifier name cls + + member x.Add(name, cls) = + addFloatClassifier name cls + + member x.Clear() = + for _, clean in updates do clean () + updates.Clear() + + member x.Stop() = + (!tok).Cancel() + + member x.Chart = chart \ No newline at end of file diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Classifiers/lib/FSharpChart.fsx b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Classifiers/lib/FSharpChart.fsx new file mode 100755 index 0000000..ede99e0 --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Classifiers/lib/FSharpChart.fsx @@ -0,0 +1,4350 @@ +// -------------------------------------------------------------------------------------- +// Charting API for F# (version 0.55) +// -------------------------------------------------------------------------------------- + +#nowarn "40" +#if INTERACTIVE +#r "System.Windows.Forms.DataVisualization.dll" +#endif + +namespace MSDN.FSharp.Charting + +open System +open System.Collections +open System.Collections.Generic +open System.Drawing +open System.Reflection +open System.Runtime.InteropServices +open System.Windows.Forms +open System.Windows.Forms.DataVisualization +open System.Windows.Forms.DataVisualization.Charting + +// ----------------------------------- +// Charting.ClipboardMetafileHelper.fs +// ----------------------------------- +module internal ClipboardMetafileHelper = + [] + extern bool OpenClipboard(nativeint hWndNewOwner) + [] + extern bool EmptyClipboard() + [] + extern IntPtr SetClipboardData(uint32 uFormat, nativeint hMem) + [] + extern bool CloseClipboard() + [] + extern nativeint CopyEnhMetaFile(nativeint hemfSrc, nativeint hNULL) + [] + extern bool DeleteEnhMetaFile(IntPtr hemf) + + // Metafile mf is set to a state that is not valid inside this function. + let PutEnhMetafileOnClipboard(hWnd, mf : System.Drawing.Imaging.Metafile) = + let mutable bResult = false + let hEMF = mf.GetHenhmetafile() // invalidates mf + if (hEMF <> 0n) then + let hEMF2 = CopyEnhMetaFile(hEMF, 0n) + if (hEMF2 <> 0n) then + if OpenClipboard(hWnd) && EmptyClipboard() then + let hRes = SetClipboardData( 14u (*CF_ENHMETAFILE*), hEMF2 ); + bResult <- hRes = hEMF2 + CloseClipboard() |> ignore + DeleteEnhMetaFile( hEMF ) |> ignore + bResult + +// ----------------------------------- +// Charting.ChartStyles.fs +// ----------------------------------- +module ChartStyles = + + // -------------------------------------------------------------------------------------- + // [AUTOGENERATED]: Enumerations for custom attribute types + + /// Specifies the plot area shape in Radar and Polar charts. + type AreaDrawingStyle = + | Circle = 0 + | Polygon = 1 + + /// Specifies the placement of the data point label. + type BarLabelStyle = + | Outside = 0 + | Left = 1 + | Right = 2 + | Center = 3 + + /// Specifies the text orientation of the axis labels in Radar + /// and Polar charts. + type CircularLabelStyle = + | Circular = 0 + | Horizontal = 1 + | Radial = 2 + + /// Specifies the drawing style of data points. + type DrawingStyle = + | Cylinder = 0 + | Emboss = 1 + | LightToDark = 2 + | Wedge = 3 + | Default = 4 + + /// Specifies whether series of the same chart type are drawn + /// next to each other instead of overlapping each other. + type DrawSideBySide = + | Auto = 0 + | True = 1 + | False = 2 + + /// Specifies the value to be used for empty points. + type EmptyPointValue = + | Average = 0 + | Zero = 1 + + /// Specifies the appearance of the marker at the center value + /// of the error bar. + type ErrorBarCenterMarkerStyle = + | None = 0 + | Line = 1 + | Square = 2 + | Circle = 3 + | Diamond = 4 + | Triangle = 5 + | Cross = 6 + | Star4 = 7 + | Star5 = 8 + | Star6 = 9 + | Star10 = 10 + + /// Specifies the visibility of the upper and lower error values. + type ErrorBarStyle = + | Both = 0 + | UpperError = 1 + | LowerError = 2 + + /// Specifies how the upper and lower error values are calculated + /// for the center values of the ErrorBarSeries. + type ErrorBarType = + | FixedValue = 0 + | Percentage = 1 + | StandardDeviation = 2 + | StandardError = 3 + + /// Specifies the 3D drawing style of the Funnel chart type. + type Funnel3DDrawingStyle = + | CircularBase = 0 + | SquareBase = 1 + + /// Specifies the data point label placement of the Funnel chart + /// type when the FunnelLabelStyle is set to Inside. + type FunnelInsideLabelAlignment = + | Center = 0 + | Top = 1 + | Bottom = 2 + + /// Specifies the data point label style of the Funnel chart type. + type FunnelLabelStyle = + | Inside = 0 + | Outside = 1 + | OutsideInColumn = 2 + | Disabled = 3 + + /// Placement of the data point label in the Funnel chart + /// when FunnelLabelStyle is set to Outside or OutsideInColumn. + type FunnelOutsideLabelPlacement = + | Right = 0 + | Left = 1 + + /// Specifies the style of the Funnel chart type. + type FunnelStyle = + | YIsWidth = 0 + | YIsHeight = 1 + + /// Specifies the label position of the data point. + type LabelStyle = + | Auto = 0 + | Top = 1 + | Bottom = 2 + | Right = 3 + | Left = 4 + | TopLeft = 5 + | TopRight = 6 + | BottomLeft = 7 + | BottomRight = 8 + | Center = 9 + + /// Specifies the Y value to use as the data point + /// label. + type LabelValueType = + | High = 0 + | Low = 1 + | Open = 2 + | Close = 3 + + /// Specifies the marker style for open and close values. + type OpenCloseStyle = + | Triangle = 0 + | Line = 1 + | Candlestick = 2 + + /// Specifies the drawing style of the data points. + type PieDrawingStyle = + | Default = 0 + | SoftEdge = 1 + | Concave = 2 + + /// Specifies the label style of the data points. + type PieLabelStyle = + | Disabled = 0 + | Inside = 1 + | Outside = 2 + + /// Specifies the drawing style of the Polar chart type. + type PolarDrawingStyle = + | Line = 0 + | Marker = 1 + + /// Specifies the 3D drawing style of the Pyramid chart type. + type Pyramid3DDrawingStyle = + | CircularBase = 0 + | SquareBase = 1 + + /// Specifies the placement of the data point labels in the + /// Pyramid chart when they are placed inside the pyramid. + type PyramidInsideLabelAlignment = + | Center = 0 + | Top = 1 + | Bottom = 2 + + /// Specifies the style of data point labels in the Pyramid chart. + type PyramidLabelStyle = + | Inside = 0 + | Outside = 1 + | OutsideInColumn = 2 + | Disabled = 3 + + /// Specifies the placement of the data point labels in the + /// Pyramid chart when the labels are placed outside the pyramid. + type PyramidOutsideLabelPlacement = + | Right = 0 + | Left = 1 + + /// Specifies whether the data point value represents a linear height + /// or the surface of the segment. + type PyramidValueType = + | Linear = 0 + | Surface = 1 + + /// Specifies the drawing style of the Radar chart. + type RadarDrawingStyle = + | Area = 0 + | Line = 1 + | Marker = 2 + + /// Specifies whether markers for open and close prices are displayed. + type ShowOpenClose = + | Both = 0 + | Open = 1 + | Close = 2 + + // [/AUTOGENERATED] + // -------------------------------------------------------------------------------------- + + + // Background helpers + [] + type Background = + | EmptyColor + | Gradient of Color * Color * Charting.GradientStyle + | Solid of Color + + let inline applyBackground (obj:^T) back = + match back with + | Background.EmptyColor -> + (^T : (member set_BackColor : Color -> unit) (obj, Color.Empty)) + | Background.Solid color -> + (^T : (member set_BackColor : Color -> unit) (obj, color)) + | Background.Gradient(first, second, style) -> + (^T : (member set_BackColor : Color -> unit) (obj, first)) + (^T : (member set_BackSecondaryColor : Color -> unit) (obj, second)) + (^T : (member set_BackGradientStyle : Charting.GradientStyle -> unit) (obj, style)) + + // Default font used when creating styles, titles, and legends + let DefaultFont = + new Font("Calibri", 9.0f, FontStyle.Regular) + + // Type used for defining defaults + type internal ChartStyleDefault = + { ChartType:Charting.SeriesChartType option; ParentType:Type option; PropertyName:string; PropertyDefault:obj } + + // Definition of defaults for the chart + let internal PropertyDefaults = + [ // Define type specific defaults + { ChartStyleDefault.ChartType = None; ParentType = Some(typeof); PropertyName="Font"; PropertyDefault=(box (new Font("Arial Narrow", 10.0f, FontStyle.Regular))) } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Line); ParentType = Some(typeof); PropertyName="BorderWidth"; PropertyDefault=(box 2) } + // Define series ToolTip defaults + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Line); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Spline); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Bar); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Column); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Area); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.StackedBar); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.StackedColumn); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.StackedArea); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.StackedBar100); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.StackedColumn100); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.StackedArea100); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.SplineArea); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Range); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, High=#VALY1, Low=#VALY2") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.RangeBar); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "Y=#VALX, High=#VALY1, Low=#VALY2") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.RangeColumn); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, High=#VALY1, Low=#VALY2") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.SplineRange); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, High=#VALY1, Low=#VALY2") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Point); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.PointAndFigure); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, High=#VALY1, Low=#VALY2") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.ThreeLineBreak); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.StepLine); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Pie); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Doughnut); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.BoxPlot); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "Lower Whisker=#VALY1, Upper Whisker=#VALY2, Lower Box=#VALY3, Upper Box=#VALY4") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Candlestick); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "High=#VALY1, Low=#VALY2, Open=#VALY3, Close=#VALY4") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Stock); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "High=#VALY1, Low=#VALY2, Open=#VALY3, Close=#VALY4") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Renko); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Bubble); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VALY1, Size=#VALY2") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.ErrorBar); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VALY1, Lower=#VALY2, Upper=#VALY3") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Funnel); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Pyramid); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Kagi); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "X=#VALX, Y=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Polar); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "Angle=#VALX, Distance=#VAL") } + { ChartStyleDefault.ChartType = Some(Charting.SeriesChartType.Radar); ParentType = Some(typeof); PropertyName="ToolTip"; PropertyDefault=(box "Point=#VALX, Distance=#VAL") } + // Define global defaults + { ChartStyleDefault.ChartType = None; ParentType = None; PropertyName="Font"; PropertyDefault=(box DefaultFont) } ] + +// ----------------------------------- +// Charting.ChartData.fs +// ----------------------------------- +open ChartStyles + +module ChartData = + + module internal Internal = + [] + type internal ChartData = + // single value + | YValues of IEnumerable + | XYValues of IEnumerable * IEnumerable + | YValuesChanging of int * IObservable + | XYValuesChanging of int * IObservable + // multiple values + | MultiYValues of IEnumerable[] + | MultiYValuesChanging of int * IObservable + | XMultiYValues of IEnumerable * IEnumerable[] + | XMultiYValuesChanging of int * IObservable + + // This one is treated specially (for box plot, we need to add data as a separate series) + // TODO: This is a bit inconsistent - we should unify the next one with the last + // four and then handle boxplot chart type when adding data to the series + | BoxPlotYArrays of seq + | BoxPlotXYArrays of seq + // A version of BoxPlot arrays with X values is missing (could be useful) + // Observable version is not supported (probably nobody needs it) + // (Unifying would sovlve these though) + + + // ---------------------------------------------------------------------------------- + // Utilities for working with enumerable and tuples + + let map f (source:seq<_>) = + { new IEnumerable with + member x.GetEnumerator() = + let en = source.GetEnumerator() + { new IEnumerator with + member x.Current = box (f en.Current) + member x.MoveNext() = en.MoveNext() + member x.Reset() = en.Reset() } } + + // There are quite a few variations - let's have some write-only combinator fun + + let useq (e:seq<_>) = e :> IEnumerable + + let el1of3 (a, _, _) = a + let el2of3 (_, a, _) = a + let el3of3 (_, _, a) = a + + let el1of4 (a, _, _, _) = a + let el2of4 (_, a, _, _) = a + let el3of4 (_, _, a, _) = a + let el4of4 (_, _, _, a) = a + + let el1of5 (a, _, _, _, _) = a + let el2of5 (_, a, _, _, _) = a + let el3of5 (_, _, a, _, _) = a + let el4of5 (_, _, _, a, _) = a + let el5of5 (_, _, _, _, a) = a + + let el1of6 (a, _, _, _, _, _) = a + let el2of6 (_, a, _, _, _, _) = a + let el3of6 (_, _, a, _, _, _) = a + let el4of6 (_, _, _, a, _, _) = a + let el5of6 (_, _, _, _, a, _) = a + let el6of6 (_, _, _, _, _, a) = a + + let tuple2 f g (x, y) = f x, g y + let tuple3 f g h (x, y, z) = f x, g y, h z + let tuple4 f g h i (x, y, z, w) = f x, g y, h z, i w + + let arr2 (a, b) = [| a; b |] + let arr3 (a, b, c) = [| a; b; c |] + let arr4 (a, b, c, d) = [| a; b; c; d |] + + // Converts Y value of a chart (defines the type too) + let culture = System.Globalization.CultureInfo.InvariantCulture + let cval (v:System.IConvertible) = v.ToDouble culture + let cobj (v:System.IConvertible) = v + + // Alternative option: + // (uses op_Explicit -> float constraint for values and any 'obj' allowed for X values) + // let cval a = float a' + // let cobj (a:obj) = a + + // ---------------------------------------------------------------------------------- + // Single Y value + + // Y values only + let oneY (source:seq<_>) = + ChartData.YValues(map cval source) + // X and Y values as tuples + let oneXYSeq (source:seq<_ * _>) = + ChartData.XYValues(map (fst >> cobj) source, map (snd >> cval >> box) source) + // X and Y values as sequences + let oneXY (xsource:seq<_>) (ysource:seq<_>) = + ChartData.XYValues(map cobj xsource, map cval ysource) + + // Y values changing + let oneYObs maxPoints (source) = + ChartData.YValuesChanging(maxPoints, source |> Observable.map cval) + // X and Y values as tuples, changing + let oneXYObs maxPoints (source) = + ChartData.XYValuesChanging(maxPoints, source |> Observable.map (tuple2 cobj cval)) + + // ---------------------------------------------------------------------------------- + // Two Y values + + // Y values only + let twoY source = + ChartData.MultiYValues([| map (fst >> cval >> box) source; map (snd >> cval >> box) source |]) + // X and Y values as tuples + let twoXYSeq source = + ChartData.XMultiYValues(map (fst >> cobj) source, [| map (snd >> fst >> cval >> box) source; map (snd >> snd >> cval >> box) source |]) + // X and Y values as sequences + let twoXY xsource ysource1 ysource2 = + ChartData.XMultiYValues(map cobj xsource, [| map cval ysource1; map cval ysource2 |]) + + // Y values changing + let twoYObs maxPoints (source) = + ChartData.MultiYValuesChanging(maxPoints, source |> Observable.map (tuple2 cval cval >> arr2)) + // X and Y values as tuples, changing + let twoXYObs maxPoints (source) = + ChartData.XMultiYValuesChanging(maxPoints, source |> Observable.map (tuple2 cobj (tuple2 cval cval >> arr2))) + + // ---------------------------------------------------------------------------------- + // Three Y values + + // Y values only + let threeY source = + ChartData.MultiYValues([| map (el1of3 >> cval >> box) source; map (el2of3 >> cval >> box) source; map (el3of3 >> cval >> box) source |]) + // X and Y values as tuples + let threeXYSeq source = + ChartData.XMultiYValues(map (fst >> cobj) source, [| map (snd >> el1of3 >> cval >> box) source; map (snd >> el2of3 >> cval >> box) source; map (snd >> el3of3 >> cval >> box) source |]) + // X and Y values as sequences + let threeXY xsource ysource1 ysource2 ysource3 = + ChartData.XMultiYValues(map cobj xsource, [| map cval ysource1; map cval ysource2; map cval ysource3 |]) + + // Y values changing + let threeYObs maxPoints (source) = + ChartData.MultiYValuesChanging(maxPoints, source |> Observable.map (tuple3 cval cval cval >> arr3)) + // X and Y values as tuples, changing + let threeXYObs maxPoints (source) = + ChartData.XMultiYValuesChanging(maxPoints, source |> Observable.map (tuple2 cobj (tuple3 cval cval cval >> arr3))) + + // ---------------------------------------------------------------------------------- + // Four Y values + + // Y values only + let fourY source = + ChartData.MultiYValues([| map (el1of4 >> cval >> box) source; map (el2of4 >> cval >> box) source; map (el3of4 >> cval >> box) source; map (el4of4 >> cval >> box) source |]) + // X and Y values as tuples + let fourXYSeq source = + ChartData.XMultiYValues(map (fst >> cobj) source, [| map (snd >> el1of4 >> cval >> box) source; map (snd >> el2of4 >> cval >> box) source; map (snd >> el3of4 >> cval >> box) source; map (snd >> el4of4 >> cval >> box) source |]) + // X and Y values as sequences + let fourXY xsource ysource1 ysource2 ysource3 ysource4 = + ChartData.XMultiYValues(map cobj xsource, [| map cval ysource1; map cval ysource2; map cval ysource3; map cval ysource4 |]) + + // Y values changing + let fourYObs maxPoints (source) = + ChartData.MultiYValuesChanging(maxPoints, source |> Observable.map (tuple4 cval cval cval cval >> arr4)) + // X and Y values as tuples, changing + let fourXYObs maxPoints (source) = + ChartData.XMultiYValuesChanging(maxPoints, source |> Observable.map (tuple2 cobj (tuple4 cval cval cval cval >> arr4))) + + // ---------------------------------------------------------------------------------- + // Six or more values + + // Y values only + let sixY source = + ChartData.MultiYValues([| map (el1of6 >> cval >> box) source; map (el2of6 >> cval >> box) source; map (el3of6 >> cval >> box) source; map (el4of6 >> cval >> box) source; map (el5of6 >> cval >> box) source; map (el6of6 >> cval >> box) source |]) + // X and Y values as array + let sixXYArr source = + let length = source |> Seq.head |> snd |> Array.length + ChartData.XMultiYValues(map (fst >> cobj) source, [| for i in 0 .. length-1 -> seq { for (_, v) in source -> cval v.[i] } |> useq |]) + // Y values (for BoxPlot charts) + let sixYArrBox (source:seq<#IConvertible[]>) = + ChartData.BoxPlotYArrays (source |> Seq.map (map cval)) + // X and Y values as array (for BoxPlot charts) + let sixXYArrBox source = + let series = (source |> Seq.map (fun item -> cobj (fst item), map cval (snd item))) + ChartData.BoxPlotXYArrays(series) + + // -------------------------------------------------------------------------------------- + + let internal bindObservable (chart:Chart) (series:Series) maxPoints values adder = + series.Points.Clear() + let rec disp = + values |> Observable.subscribe (fun v -> + let op () = + try + adder series.Points v + if maxPoints <> -1 && series.Points.Count > maxPoints then + series.Points.RemoveAt(0) + with + | :? NullReferenceException -> + disp.Dispose() + if chart.InvokeRequired then + chart.Invoke(Action(op)) |> ignore + else + op()) + () + + + let internal setSeriesData resetSeries (series:Series) data (chart:Chart) setCustomProperty = + let bindBoxPlot values getSeries getLabel (displayLabel:bool) = + let labels = chart.ChartAreas.[0].AxisX.CustomLabels + if resetSeries then + labels.Clear() + let name = series.Name + let seriesNames = + values |> Seq.mapi (fun index series -> + let name = getLabel name index series + let dataSeries = new Series(name, Enabled = false) + dataSeries.Points.DataBindY [| getSeries series |] + if displayLabel then + labels.Add(float (index), float (index + 2), name) |> ignore + dataSeries.AxisLabel <- name + dataSeries.Label <- name + if resetSeries then + match chart.Series.IndexOf name with + | replaceIdx when replaceIdx >= 0 -> chart.Series.RemoveAt replaceIdx + | _ -> () + chart.Series.Add dataSeries + name ) + let boxPlotSeries = seriesNames |> String.concat ";" + setCustomProperty("BoxPlotSeries", boxPlotSeries) + + match data with + // Single Y value + | ChartData.YValues ys -> + series.Points.DataBindY [| ys |] + | ChartData.XYValues(xs, ys) -> + series.Points.DataBindXY(xs, [| ys |]) + | ChartData.XYValuesChanging(maxPoints, xys) -> + bindObservable chart series maxPoints xys (fun pts (x, y) -> pts.AddXY(x, y) |> ignore) + | ChartData.YValuesChanging(maxPoints, ys) -> + bindObservable chart series maxPoints ys (fun pts y -> pts.AddY(y) |> ignore) + + // Multiple Y values + // TODO: Won't work for BoxPlot chart when the array contains more than 6 values + // (but on the other hand, this will work for all 2/3/4 Y values charts) + | ChartData.XMultiYValues(xs, yss) -> + series.Points.DataBindXY(xs, yss) + | ChartData.MultiYValues yss -> + series.Points.DataBindY yss + | ChartData.MultiYValuesChanging(maxPoints, yss) -> + bindObservable chart series maxPoints yss (fun pts ys -> pts.AddY(Array.map box ys) |> ignore) + | ChartData.XMultiYValuesChanging(maxPoints, yss) -> + bindObservable chart series maxPoints yss (fun pts (x, ys) -> pts.AddXY(x, Array.map box ys) |> ignore) + + // Special case for BoxPlot + | ChartData.BoxPlotYArrays values -> + bindBoxPlot values (fun value -> value) (fun name index value -> sprintf "%s_%d" name index) false + | ChartData.BoxPlotXYArrays values -> + bindBoxPlot values (snd) (fun name index value -> string (fst value)) true + + // ---------------------------------------------------------------------------------- + // Types that represent data loaded on a chart (and can be used to + // modify the data after the chart is created (see also Chart.Create)) + + open Internal + + type ChartBinder<'T> = { + Chart:Chart + SetCustomProperty: string * 'T -> unit } + + [] + type DataSource() = + abstract BindSeries : seq -> unit + + [] + type DataSourceSingleSeries() = + inherit DataSource() + let mutable series = None + member internal x.SetDataInternal(data, ?chart:Chart, ?setCustomProperty) = + match series with + | None -> failwith "Error: Series has not been set for this data source." + | Some series -> + match (chart, setCustomProperty) with + | (Some ch, Some property) -> setSeriesData true series data ch property + | (_, _) -> setSeriesData true series data null ignore + override x.BindSeries(seriesSeq) = + match List.ofSeq seriesSeq with + | [single] -> series <- Some single + | _ -> failwith "Error: Binding multiple series to a data source object that supports only a single series" + + type OneValue() = + inherit DataSourceSingleSeries() + member x.SetData<'TY when 'TY :> IConvertible>(data:seq<'TY>) = + base.SetDataInternal(oneY data) + member x.SetData<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data: seq<'TX * ('TY)>) = + base.SetDataInternal(oneXYSeq data) + member x.SetData<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues:seq<'TY>) = + base.SetDataInternal(oneXY xvalues yvalues) + member x.SetData<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + base.SetDataInternal(oneYObs (defaultArg MaxPoints -1) data) + member x.SetData<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + base.SetDataInternal(oneXYObs (defaultArg MaxPoints -1) data) + + type TwoValue() = + inherit DataSourceSingleSeries() + member x.SetData<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:seq<'TY1 * 'TY2>) = + base.SetDataInternal(twoY data) + member x.SetData<'TX, 'TY1, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2)>) = + base.SetDataInternal(twoXYSeq data) + member x.SetData<'TX, 'TY1, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible>(xvalues:seq<'TX>, yvalues1:seq<'TY1>, yvalues2:seq<'TY2>) = + base.SetDataInternal(twoXY xvalues yvalues1 yvalues2) + member x.SetData<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:IObservable<'TY1 * 'TY2>, ?MaxPoints) = + base.SetDataInternal(twoYObs (defaultArg MaxPoints -1) data) + member x.SetData<'TX, 'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2)>, ?MaxPoints) = + base.SetDataInternal(twoXYObs (defaultArg MaxPoints -1) data) + + type ThreeValue() = + inherit DataSourceSingleSeries() + member x.SetData<'TY1, 'TY2, 'TY3 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible >(data:seq<'TY1 * 'TY2 * 'TY3>) = + base.SetDataInternal(threeY data) + member x.SetData<'TX, 'TY1, 'TY2, 'TY3 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2 * 'TY3)>) = + base.SetDataInternal(threeXYSeq data) + member x.SetData<'TX, 'TY1, 'TY2, 'TY3 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible>(xvalues:seq<'TX>, yvalues1:seq<'TY1>, yvalues2:seq<'TY2>, yvalues3:seq<'TY3>) = + base.SetDataInternal(threeXY xvalues yvalues1 yvalues2 yvalues3) + member x.SetData<'TY1, 'TY2, 'TY3 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible>(data:IObservable<'TY1 * 'TY2 * 'TY3>, ?MaxPoints) = + base.SetDataInternal(threeYObs (defaultArg MaxPoints -1) data) + member x.SetData<'TX, 'TY1, 'TY2, 'TY3 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2 * 'TY3)>, ?MaxPoints) = + base.SetDataInternal(threeXYObs (defaultArg MaxPoints -1) data) + + type FourValue() = + inherit DataSourceSingleSeries() + member x.SetData<'TY1, 'TY2, 'TY3, 'TY4 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible>(data:seq<'TY1 * 'TY2 * 'TY3 * 'TY4>) = + base.SetDataInternal(fourY data) + member x.SetData<'TX, 'TY1, 'TY2, 'TY3, 'TY4 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2 * 'TY3 * 'TY4)>) = + base.SetDataInternal(fourXYSeq data) + member x.SetData<'TXValues, 'TX, 'TY1, 'TY2, 'TY3, 'TY4 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible>(xvalues:seq<'TX>, yvalues1:seq<'TY1> , yvalues2:seq<'TY2>, yvalues3:seq<'TY3>, yvalues4:seq<'TY4>) = + base.SetDataInternal(fourXY xvalues yvalues1 yvalues2 yvalues3 yvalues4) + member x.SetData<'TY1, 'TY2, 'TY3, 'TY4 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible>(data:IObservable<'TY1 * 'TY2 * 'TY3 * 'TY4>, ?MaxPoints) = + base.SetDataInternal(fourYObs (defaultArg MaxPoints -1) data) + member x.SetData<'TX, 'TY1, 'TY2, 'TY3, 'TY4 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2 * 'TY3 * 'TY4)>, ?MaxPoints) = + base.SetDataInternal(fourXYObs (defaultArg MaxPoints -1) data) + + type MultiValue() = + inherit DataSourceSingleSeries() + member x.SetData(data:seq<'T1 * 'T2 * 'T3 * 'T4 * 'T5 * 'T6>, chartBinder:ChartBinder) = + base.SetDataInternal(sixY data, chartBinder.Chart, chartBinder.SetCustomProperty) + member x.SetData(data:seq<'TX * 'TYValue[]>, chartBinder:ChartBinder) = + base.SetDataInternal(sixXYArrBox data, chartBinder.Chart, chartBinder.SetCustomProperty) + member x.SetData(data:seq<'TYValue[]>, chartBinder:ChartBinder) = + base.SetDataInternal(sixYArrBox data, chartBinder.Chart, chartBinder.SetCustomProperty) + + + type DataSourceCombined() = + inherit DataSource() + let mutable seriesTable = dict [] + override x.BindSeries(seriesSeq) = + seriesTable <- dict [ for s in seriesSeq -> s.Name, s ] + member x.Find<'TData when 'TData :> DataSource and 'TData : (new : unit -> 'TData)>(name) = + match seriesTable.TryGetValue(name) with + | true, obj -> + // TODO: We do not check if the series has the right data type + let data = new 'TData() + data.BindSeries [obj] + data + | _ -> failwithf "Error: Series with the name %s not found" name + +// ----------------------------------- +// Charting.ChartFormUtilities.fs +// ----------------------------------- +open ChartStyles + +module internal ChartFormUtilities = + + let private typesToClone = + [ typeof; + typeof; + typeof; + typeof + typeof; + typeof; + typeof; ] + + let private typesToCopy = [ typeof; typeof ] + + let private applyDefaults (chartType:SeriesChartType) (target:'a) (targetType:Type) (property:PropertyInfo) = + let isMatch propDefault = + if String.Equals(propDefault.PropertyName, property.Name) then + match (propDefault.ChartType, propDefault.ParentType) with + | (Some seriesType, Some parentType) -> (targetType.IsAssignableFrom(parentType) || targetType.IsSubclassOf(parentType)) && chartType = seriesType + | (Some seriesType, None) -> chartType = seriesType + | (None, Some parentType) -> targetType.IsAssignableFrom(parentType) || targetType.IsSubclassOf(parentType) + | (_, _) -> true + else + false + match List.tryFind isMatch PropertyDefaults with + | Some item -> property.SetValue(target, item.PropertyDefault, [||]) + | _ -> () + + let applyPropertyDefaults (chartType:SeriesChartType) (target:'a) = + let visited = new System.Collections.Generic.Dictionary<_, _>() + let rec loop target = + if not (visited.ContainsKey target) then + visited.Add(target, true) + let targetType = target.GetType() + for property in targetType.GetProperties(BindingFlags.Public ||| BindingFlags.Instance) do + if property.CanRead then + if typesToClone |> Seq.exists ((=) property.PropertyType) then + loop (property.GetValue(target, [||])) + elif property.CanWrite then + if property.PropertyType.IsValueType || typesToCopy |> Seq.exists ((=) property.PropertyType) then + applyDefaults chartType target targetType property + loop target + + let applyProperties (target:'a) (source:'a) = + let visited = new System.Collections.Generic.Dictionary<_, _>() + let rec loop target source = + if not (visited.ContainsKey target) then + visited.Add(target, true) + let ty = target.GetType() + for p in ty.GetProperties(BindingFlags.Public ||| BindingFlags.Instance) do + if p.CanRead then + if typesToClone |> Seq.exists ((=) p.PropertyType) then + loop (p.GetValue(target, [||])) (p.GetValue(source, [||])) + elif p.CanWrite then + if p.PropertyType.IsValueType || typesToCopy |> Seq.exists ((=) p.PropertyType) then + if p.GetSetMethod().GetParameters().Length <= 1 then + p.SetValue(target, p.GetValue(source, [||]), [||]) +// else +// printfn "Indexed property %s.%s (type %s)" ty.Name p.Name p.PropertyType.Name +// else +// printfn "Not sure what to do with %s.%s (type %s)" ty.Name p.Name p.PropertyType.Name +// else +// printfn "Cannot write %s.%s" ty.Name p.Name + loop target source + + let createCounter() = + let count = ref 0 + (fun () -> incr count; !count) + +// ----------------------------------- +// Charting.ChartTypes.fs +// ----------------------------------- +open ChartFormUtilities +open ChartData.Internal +open ChartData +open ChartStyles + +module ChartTypes = + + [] + type GenericChart() as self = + + // Events + let propChangedMargin = Event() + let propChangedBackground = Event() + let propChangedName = Event() + let propChangedTitle = Event() + let propChangedLegend = Event<Legend>() + let propChangedCustom = Event<string * obj>() + + let customProperties = new Dictionary<_, _>() + + let mutable area = lazy ( + let area = new ChartArea() + applyPropertyDefaults (self.ChartType) area + area) + + let mutable series = lazy ( + let series = new Series() + applyPropertyDefaults (self.ChartType) series + series) + + let mutable chart = lazy ( + let ch = new Chart() + applyPropertyDefaults (self.ChartType) ch + ch) + + let mutable title = lazy ( + let title = new Title() + applyPropertyDefaults (self.ChartType) title + title) + + let mutable legend = lazy ( + let legend = new Legend() + applyPropertyDefaults (self.ChartType) legend + legend) + + let mutable name:string = "" + + let evalLazy v = + let l = lazy v + l.Force() |> ignore + l + + let mutable data = ChartData.YValues [] + let mutable margin = (0.0f, 0.0f, 0.0f, 0.0f) + let titles = new ResizeArray<Title>() + let legends = new ResizeArray<Legend>() + + abstract ChartType : SeriesChartType + + member internal x.Data with get() = data and set v = data <- v + member internal x.Chart with get() = chart.Value and set v = chart <- evalLazy v + + // deal with properties that raise events + member x.Margin with get() = margin + and set v = + margin <- v + propChangedMargin.Trigger(v) + + member x.Background with set v = + applyBackground chart.Value v + propChangedBackground.Trigger(v) + + member x.Name with get() = name + and set v = + name <- v + propChangedName.Trigger(v) + + member x.Title with get() = title.Value + and set v = + title <- evalLazy v + propChangedTitle.Trigger(v) + + member x.Legend with get() = legend.Value + and set v = + legend <- evalLazy v + propChangedLegend.Trigger(v) + + // other properties + member x.Area with get() = area.Value + and set v = + area <- evalLazy v + + member x.Series with get() = series.Value + and set v = + series <- evalLazy v + + // internal + member internal x.Titles = titles + member internal x.LazyTitle = title + member internal x.Legends = legends + member internal x.LazyLegend = legend + + member internal x.LazyChart = chart + member internal x.LazyArea = area + member internal x.LazySeries = series + + [<CLIEvent>] + member x.MarginChanged = propChangedMargin.Publish + [<CLIEvent>] + member x.BackgroundChanged = propChangedBackground.Publish + [<CLIEvent>] + member x.NameChanged = propChangedName.Publish + [<CLIEvent>] + member x.TitleChanged = propChangedTitle.Publish + [<CLIEvent>] + member x.LegendChanged = propChangedLegend.Publish + [<CLIEvent>] + member x.CustomPropertyChanged = propChangedCustom.Publish + + member x.CustomProperties = + customProperties :> seq<_> + + member x.GetCustomProperty<'T>(name, def) = + match customProperties.TryGetValue name with + | true, v -> (box v) :?> 'T + | _ -> def + + member x.SetCustomProperty<'T>(name, v:'T) = + customProperties.[name] <- box v + propChangedCustom.Trigger((name, box v)) + + static member internal Create<'T when 'T :> GenericChart and 'T : (new : unit -> 'T)>(data) : 'T = + let t = new 'T() + t.Data <- data + t + + member public x.CopyChartToClipboard() = + use ms = new IO.MemoryStream() + x.Chart.SaveImage(ms, ChartImageFormat.Png) + ms.Seek(0L, IO.SeekOrigin.Begin) |> ignore + Clipboard.SetImage(Bitmap.FromStream ms) + + member public x.CopyChartToClipboardEmf(control:Control) = + use ms = new IO.MemoryStream() + x.Chart.SaveImage(ms, ChartImageFormat.Emf) + ms.Seek(0L, IO.SeekOrigin.Begin) |> ignore + use emf = new System.Drawing.Imaging.Metafile(ms) + ClipboardMetafileHelper.PutEnhMetafileOnClipboard(control.Handle, emf) |> ignore + + member public x.SaveChartAs(filename : string, format : ChartImageFormat) = + x.Chart.SaveImage(filename, format) + + // property used for chart binding + member x.ChartBinder with get() = + let binder:ChartBinder<string> = { ChartBinder.Chart = x.Chart; ChartBinder.SetCustomProperty = x.SetCustomProperty} + binder + + [<AbstractClass>] + type GenericChart<'TData when 'TData :> DataSource and 'TData : (new : unit -> 'TData)>() = + inherit GenericChart() + + type private ColorWrapper(clr:Color) = + member x.Color = clr + override x.ToString() = + if clr.IsEmpty then "Empty" else + sprintf "%d" (clr.ToArgb()) // clr.R clr.G clr.B + + // ------------------------------------------------------------------------------------ + // [AUTOGENERATED]: Specific chart types for setting custom properties + + /// Displays multiple series of data as stacked areas. The cumulative proportion + /// of each stacked element is always 100% of the Y + /// axis. + type StackedArea100Chart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.StackedArea100 + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + + /// Displays multiple series of data as stacked bars. The cumulative + /// proportion of each stacked element is always 100% of the Y axis. + type StackedBar100Chart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.StackedBar100 + + /// Specifies the placement of the data point label. + member x.BarLabelStyle + with get() = x.GetCustomProperty<BarLabelStyle>("BarLabelStyle", BarLabelStyle.Outside) + and set(v) = x.SetCustomProperty<BarLabelStyle>("BarLabelStyle", v) + + /// Specifies the drawing style of data points. + member x.DrawingStyle + with get() = x.GetCustomProperty<DrawingStyle>("DrawingStyle", DrawingStyle.Default) + and set(v) = x.SetCustomProperty<DrawingStyle>("DrawingStyle", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + /// Specifies the name of the stacked group. + member x.StackedGroupName + with get() = x.GetCustomProperty<string>("StackedGroupName", "") + and set(v) = x.SetCustomProperty<string>("StackedGroupName", v) + + + /// Displays multiple series of data as stacked columns. The cumulative + /// proportion of each stacked element is always 100% of the + /// Y axis. + type StackedColumn100Chart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.StackedColumn100 + + /// Specifies the drawing style of data points. + member x.DrawingStyle + with get() = x.GetCustomProperty<DrawingStyle>("DrawingStyle", DrawingStyle.Default) + and set(v) = x.SetCustomProperty<DrawingStyle>("DrawingStyle", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + /// Specifies the name of the stacked group. + member x.StackedGroupName + with get() = x.GetCustomProperty<string>("StackedGroupName", "") + and set(v) = x.SetCustomProperty<string>("StackedGroupName", v) + + + /// Emphasizes the degree of change over time and shows the + /// relationship of the parts to a whole. + type AreaChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Area + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// Specifies whether marker lines are displayed when rendered in 3D. + member x.ShowMarkerLines + with get() = x.GetCustomProperty<bool>("ShowMarkerLines", false) + and set(v) = x.SetCustomProperty<bool>("ShowMarkerLines", v) + + + /// Illustrates comparisons among individual items. + type BarChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Bar + + /// Specifies the placement of the data point label. + member x.BarLabelStyle + with get() = x.GetCustomProperty<BarLabelStyle>("BarLabelStyle", BarLabelStyle.Outside) + and set(v) = x.SetCustomProperty<BarLabelStyle>("BarLabelStyle", v) + + /// Specifies the drawing style of data points. + member x.DrawingStyle + with get() = x.GetCustomProperty<DrawingStyle>("DrawingStyle", DrawingStyle.Default) + and set(v) = x.SetCustomProperty<DrawingStyle>("DrawingStyle", v) + + /// Specifies whether series of the same chart type are drawn + /// next to each other instead of overlapping each other. + member x.DrawSideBySide + with get() = x.GetCustomProperty<DrawSideBySide>("DrawSideBySide", DrawSideBySide.Auto) + and set(v) = x.SetCustomProperty<DrawSideBySide>("DrawSideBySide", v) + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + + /// Consists of one or more box symbols that summarize the + /// distribution of the data within one or more data sets. + type BoxPlotChart() = + inherit GenericChart<MultiValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.BoxPlot + + /// <summary> + /// Specifies the percentile value of the box of the Box + /// Plot chart. + /// </summary> + /// <remarks>Any integer from 0 to 50.</remarks> + member x.BoxPlotPercentile + with get() = x.GetCustomProperty<int>("BoxPlotPercentile", 25) + and set(v) = x.SetCustomProperty<int>("BoxPlotPercentile", v) + + /// Specifies the name of the series to be used as + /// the data source for the Box Plot chart. + member x.BoxPlotSeries + with get() = x.GetCustomProperty<string>("BoxPlotSeries", "") + and set(v) = x.SetCustomProperty<string>("BoxPlotSeries", v) + + /// Specifies whether to display the average value for the Box + /// Plot chart. + member x.BoxPlotShowAverage + with get() = x.GetCustomProperty<bool>("BoxPlotShowAverage", true) + and set(v) = x.SetCustomProperty<bool>("BoxPlotShowAverage", v) + + /// Specifies whether to display the median value for the Box + /// Plot chart. + member x.BoxPlotShowMedian + with get() = x.GetCustomProperty<bool>("BoxPlotShowMedian", true) + and set(v) = x.SetCustomProperty<bool>("BoxPlotShowMedian", v) + + /// Specifies whether the unusual values value for the Box Plot + /// chart will be shown. + member x.BoxPlotShowUnusualValues + with get() = x.GetCustomProperty<bool>("BoxPlotShowUnusualValues", true) + and set(v) = x.SetCustomProperty<bool>("BoxPlotShowUnusualValues", v) + + /// <summary> + /// Specifies the percentile value of the whiskers of the Box + /// Plot chart. + /// </summary> + /// <remarks>Any integer from 0 to 50.</remarks> + member x.BoxPlotWhiskerPercentile + with get() = x.GetCustomProperty<int>("BoxPlotWhiskerPercentile", 10) + and set(v) = x.SetCustomProperty<int>("BoxPlotWhiskerPercentile", v) + + /// Specifies whether series of the same chart type are drawn + /// next to each other instead of overlapping each other. + member x.DrawSideBySide + with get() = x.GetCustomProperty<DrawSideBySide>("DrawSideBySide", DrawSideBySide.Auto) + and set(v) = x.SetCustomProperty<DrawSideBySide>("DrawSideBySide", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + + /// A variation of the Point chart type, where the data + /// points are replaced by bubbles of different sizes. + type BubbleChart() = + inherit GenericChart<TwoValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Bubble + + /// <summary> + /// Specifies the maximum size of the bubble radius as a + /// percentage of the chart area size. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.BubbleMaxSize + with get() = x.GetCustomProperty<int>("BubbleMaxSize", 15) + and set(v) = x.SetCustomProperty<int>("BubbleMaxSize", v) + + /// <summary> + /// Specifies the minimum size of the bubble radius as a + /// percentage of the chart area size. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.BubbleMinSize + with get() = x.GetCustomProperty<int>("BubbleMinSize", 3) + and set(v) = x.SetCustomProperty<int>("BubbleMinSize", v) + + /// <summary> + /// Specifies the maximum bubble size, which is a percentage of + /// the chart area that is set by BubbleMaxSize. + /// </summary> + /// <remarks>Any double.</remarks> + member x.BubbleScaleMax + with get() = x.GetCustomProperty<float>("BubbleScaleMax", 15.0) + and set(v) = x.SetCustomProperty<float>("BubbleScaleMax", v) + + /// <summary> + /// Specifies the minimum bubble size, which is a percentage of + /// the chart area that is set by BubbleMinSize. + /// </summary> + /// <remarks>Any double.</remarks> + member x.BubbleScaleMin + with get() = x.GetCustomProperty<float>("BubbleScaleMin", 3.0) + and set(v) = x.SetCustomProperty<float>("BubbleScaleMin", v) + + /// Specifies whether to use the bubble size as the data + /// point label. + member x.BubbleUseSizeForLabel + with get() = x.GetCustomProperty<bool>("BubbleUseSizeForLabel", false) + and set(v) = x.SetCustomProperty<bool>("BubbleUseSizeForLabel", v) + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + + /// Used to display stock information using high, low, open and + /// close values. + type CandlestickChart() = + inherit GenericChart<FourValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Candlestick + + /// Specifies the Y value to use as the data point + /// label. + member x.LabelValueType + with get() = x.GetCustomProperty<LabelValueType>("LabelValueType", LabelValueType.Close) + and set(v) = x.SetCustomProperty<LabelValueType>("LabelValueType", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + /// Specifies the data point color to use to indicate a + /// decreasing trend. + member x.PriceDownColor + with get() = x.GetCustomProperty<ColorWrapper>("PriceDownColor", ColorWrapper(Color.Empty)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("PriceDownColor", ColorWrapper(v)) + + /// Specifies the data point color that indicates an increasing trend. + member x.PriceUpColor + with get() = x.GetCustomProperty<ColorWrapper>("PriceUpColor", ColorWrapper(Color.Empty)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("PriceUpColor", ColorWrapper(v)) + + + /// Uses a sequence of columns to compare values across categories. + type ColumnChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Column + + /// Specifies the drawing style of data points. + member x.DrawingStyle + with get() = x.GetCustomProperty<DrawingStyle>("DrawingStyle", DrawingStyle.Default) + and set(v) = x.SetCustomProperty<DrawingStyle>("DrawingStyle", v) + + /// Specifies whether series of the same chart type are drawn + /// next to each other instead of overlapping each other. + member x.DrawSideBySide + with get() = x.GetCustomProperty<DrawSideBySide>("DrawSideBySide", DrawSideBySide.Auto) + and set(v) = x.SetCustomProperty<DrawSideBySide>("DrawSideBySide", v) + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + + /// Similar to the Pie chart type, except that it has + /// a hole in the center. + type DoughnutChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Doughnut + + /// <summary> + /// Specifies the 3D label line size as a percentage of + /// the default size. + /// </summary> + /// <remarks>Any integer from 30 to 200.</remarks> + member x.LabelLineSize3D + with get() = x.GetCustomProperty<int>("3DLabelLineSize", 100) + and set(v) = x.SetCustomProperty<int>("3DLabelLineSize", v) + + /// Specifies the color of the collected pie or doughnut slice. + member x.CollectedColor + with get() = x.GetCustomProperty<ColorWrapper>("CollectedColor", ColorWrapper(Color.Empty)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("CollectedColor", ColorWrapper(v)) + + /// Specifies the label of the collected pie slice. + member x.CollectedLabel + with get() = x.GetCustomProperty<string>("CollectedLabel", "") + and set(v) = x.SetCustomProperty<string>("CollectedLabel", v) + + /// Specifies the legend text for the collected pie slice. + member x.CollectedLegendText + with get() = x.GetCustomProperty<string>("CollectedLegendText", "") + and set(v) = x.SetCustomProperty<string>("CollectedLegendText", v) + + /// Specifies whether the collected pie slice will be shown as + /// exploded. + member x.CollectedSliceExploded + with get() = x.GetCustomProperty<bool>("CollectedSliceExploded", true) + and set(v) = x.SetCustomProperty<bool>("CollectedSliceExploded", v) + + /// <summary> + /// Specifies the threshold value for collecting small pie slices. + /// </summary> + /// <remarks>Any double between 0 and 100 if CollectedThresholdUsePercent is true; otherwise, any double > 0.</remarks> + member x.CollectedThreshold + with get() = x.GetCustomProperty<float>("CollectedThreshold", 0.0) + and set(v) = x.SetCustomProperty<float>("CollectedThreshold", v) + + /// Specifies whether to use the collected threshold value as a + /// percentage. + member x.CollectedThresholdUsePercent + with get() = x.GetCustomProperty<bool>("CollectedThresholdUsePercent", true) + and set(v) = x.SetCustomProperty<bool>("CollectedThresholdUsePercent", v) + + /// Specifies the tooltip text of the collected pie slice. + member x.CollectedToolTip + with get() = x.GetCustomProperty<string>("CollectedToolTip", "") + and set(v) = x.SetCustomProperty<string>("CollectedToolTip", v) + + /// <summary> + /// Specifies the radius of the doughnut portion in the Doughnut + /// chart. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.DoughnutRadius + with get() = x.GetCustomProperty<int>("DoughnutRadius", 60) + and set(v) = x.SetCustomProperty<int>("DoughnutRadius", v) + + /// Specifies whether the Pie or Doughnut data point is exploded. + member x.Exploded + with get() = x.GetCustomProperty<bool>("Exploded", false) + and set(v) = x.SetCustomProperty<bool>("Exploded", v) + + /// <summary> + /// Specifies the size of the horizontal segment of the callout + /// line. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.LabelsHorizontalLineSize + with get() = x.GetCustomProperty<int>("LabelsHorizontalLineSize", 1) + and set(v) = x.SetCustomProperty<int>("LabelsHorizontalLineSize", v) + + /// <summary> + /// Specifies the size of the radial segment of the callout + /// line. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.LabelsRadialLineSize + with get() = x.GetCustomProperty<int>("LabelsRadialLineSize", 1) + and set(v) = x.SetCustomProperty<int>("LabelsRadialLineSize", v) + + /// <summary> + /// Specifies the minimum pie or doughnut size. + /// </summary> + /// <remarks>Any integer from 10 to 70.</remarks> + member x.MinimumRelativePieSize + with get() = x.GetCustomProperty<int>("MinimumRelativePieSize", 30) + and set(v) = x.SetCustomProperty<int>("MinimumRelativePieSize", v) + + /// Specifies the drawing style of the data points. + member x.PieDrawingStyle + with get() = x.GetCustomProperty<PieDrawingStyle>("PieDrawingStyle", PieDrawingStyle.Default) + and set(v) = x.SetCustomProperty<PieDrawingStyle>("PieDrawingStyle", v) + + /// Specifies the label style of the data points. + member x.PieLabelStyle + with get() = x.GetCustomProperty<PieLabelStyle>("PieLabelStyle", PieLabelStyle.Inside) + and set(v) = x.SetCustomProperty<PieLabelStyle>("PieLabelStyle", v) + + /// Specifies the color of the radial and horizontal segments of + /// the callout lines. + member x.PieLineColor + with get() = x.GetCustomProperty<ColorWrapper>("PieLineColor", ColorWrapper(Color.Black)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("PieLineColor", ColorWrapper(v)) + + /// <summary> + /// Specifies the angle of the data point in the Pie + /// or Doughnut chart. + /// </summary> + /// <remarks>Any integer from 0 to 360.</remarks> + member x.PieStartAngle + with get() = x.GetCustomProperty<int>("PieStartAngle", 90) + and set(v) = x.SetCustomProperty<int>("PieStartAngle", v) + + + /// Consists of lines with markers that are used to display + /// statistical information about the data displayed in a graph. + type ErrorBarChart() = + inherit GenericChart<ThreeValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.ErrorBar + + /// Specifies whether series of the same chart type are drawn + /// next to each other instead of overlapping each other. + member x.DrawSideBySide + with get() = x.GetCustomProperty<DrawSideBySide>("DrawSideBySide", DrawSideBySide.Auto) + and set(v) = x.SetCustomProperty<DrawSideBySide>("DrawSideBySide", v) + + /// Specifies the appearance of the marker at the center value + /// of the error bar. + member x.ErrorBarCenterMarkerStyle + with get() = x.GetCustomProperty<ErrorBarCenterMarkerStyle>("ErrorBarCenterMarkerStyle", ErrorBarCenterMarkerStyle.None) + and set(v) = x.SetCustomProperty<ErrorBarCenterMarkerStyle>("ErrorBarCenterMarkerStyle", v) + + /// Specifies the name of the series to be used as + /// the data source for the Error Bar chart calculations. + member x.ErrorBarSeries + with get() = x.GetCustomProperty<string>("ErrorBarSeries", "") + and set(v) = x.SetCustomProperty<string>("ErrorBarSeries", v) + + /// Specifies the visibility of the upper and lower error values. + member x.ErrorBarStyle + with get() = x.GetCustomProperty<ErrorBarStyle>("ErrorBarStyle", ErrorBarStyle.Both) + and set(v) = x.SetCustomProperty<ErrorBarStyle>("ErrorBarStyle", v) + + /// Specifies how the upper and lower error values are calculated + /// for the center values of the ErrorBarSeries. + member x.ErrorBarType + with get() = x.GetCustomProperty<ErrorBarType>("ErrorBarType", ErrorBarType.FixedValue) + and set(v) = x.SetCustomProperty<ErrorBarType>("ErrorBarType", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + + /// A variation of the Line chart that significantly reduces the + /// drawing time of a series that contains a very large + /// number of data points. + type FastLineChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.FastLine + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + + /// A variation of the Point chart type that significantly reduces + /// the drawing time of a series that contains a very + /// large number of data points. + type FastPointChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.FastPoint + + + /// Displays in a funnel shape data that equals 100% when + /// totaled. + type FunnelChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Funnel + + /// Specifies the line color of the callout for the data + /// point labels of Funnel or Pyramid charts. + member x.CalloutLineColor + with get() = x.GetCustomProperty<ColorWrapper>("CalloutLineColor", ColorWrapper(Color.Empty)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("CalloutLineColor", ColorWrapper(v)) + + /// Specifies the 3D drawing style of the Funnel chart type. + member x.Funnel3DDrawingStyle + with get() = x.GetCustomProperty<Funnel3DDrawingStyle>("Funnel3DDrawingStyle", Funnel3DDrawingStyle.SquareBase) + and set(v) = x.SetCustomProperty<Funnel3DDrawingStyle>("Funnel3DDrawingStyle", v) + + /// <summary> + /// Specifies the 3D rotation angle of the Funnel chart type. + /// </summary> + /// <remarks>Any integer from -10 to 10.</remarks> + member x.Funnel3DRotationAngle + with get() = x.GetCustomProperty<int>("Funnel3DRotationAngle", 5) + and set(v) = x.SetCustomProperty<int>("Funnel3DRotationAngle", v) + + /// Specifies the data point label placement of the Funnel chart + /// type when the FunnelLabelStyle is set to Inside. + member x.FunnelInsideLabelAlignment + with get() = x.GetCustomProperty<FunnelInsideLabelAlignment>("FunnelInsideLabelAlignment", FunnelInsideLabelAlignment.Center) + and set(v) = x.SetCustomProperty<FunnelInsideLabelAlignment>("FunnelInsideLabelAlignment", v) + + /// Specifies the data point label style of the Funnel chart + /// type. + member x.FunnelLabelStyle + with get() = x.GetCustomProperty<FunnelLabelStyle>("FunnelLabelStyle", FunnelLabelStyle.OutsideInColumn) + and set(v) = x.SetCustomProperty<FunnelLabelStyle>("FunnelLabelStyle", v) + + /// <summary> + /// Specifies the minimum height of a data point in the + /// Funnel chart, measured in relative coordinates. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.FunnelMinPointHeight + with get() = x.GetCustomProperty<int>("FunnelMinPointHeight", 0) + and set(v) = x.SetCustomProperty<int>("FunnelMinPointHeight", v) + + /// <summary> + /// Specifies the neck height of the Funnel chart type. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.FunnelNeckHeight + with get() = x.GetCustomProperty<int>("FunnelNeckHeight", 5) + and set(v) = x.SetCustomProperty<int>("FunnelNeckHeight", v) + + /// <summary> + /// Specifies the neck width of the Funnel chart type. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.FunnelNeckWidth + with get() = x.GetCustomProperty<int>("FunnelNeckWidth", 5) + and set(v) = x.SetCustomProperty<int>("FunnelNeckWidth", v) + + /// Placement of the data point label in the Funnel chart + /// when FunnelLabelStyle is set to Outside or OutsideInColumn. + member x.FunnelOutsideLabelPlacement + with get() = x.GetCustomProperty<FunnelOutsideLabelPlacement>("FunnelOutsideLabelPlacement", FunnelOutsideLabelPlacement.Right) + and set(v) = x.SetCustomProperty<FunnelOutsideLabelPlacement>("FunnelOutsideLabelPlacement", v) + + /// <summary> + /// Specifies the gap size between the points of a Funnel + /// chart, measured in relative coordinates. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.FunnelPointGap + with get() = x.GetCustomProperty<int>("FunnelPointGap", 0) + and set(v) = x.SetCustomProperty<int>("FunnelPointGap", v) + + /// Specifies the style of the Funnel chart type. + member x.FunnelStyle + with get() = x.GetCustomProperty<FunnelStyle>("FunnelStyle", FunnelStyle.YIsHeight) + and set(v) = x.SetCustomProperty<FunnelStyle>("FunnelStyle", v) + + + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + type KagiChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Kagi + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// Specifies the data point color that indicates an increasing trend. + member x.PriceUpColor + with get() = x.GetCustomProperty<ColorWrapper>("PriceUpColor", ColorWrapper(Color.Empty)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("PriceUpColor", ColorWrapper(v)) + + /// Specifies the reversal amount for the chart. + member x.ReversalAmount + with get() = x.GetCustomProperty<string>("ReversalAmount", "3%") + and set(v) = x.SetCustomProperty<string>("ReversalAmount", v) + + /// <summary> + /// Specifies the index of the Y value to use to + /// plot the Kagi, Renko, or Three Line Break chart, with + /// the first Y value at index 0. + /// </summary> + /// <remarks>Any positive integer 0.</remarks> + member x.UsedYValue + with get() = x.GetCustomProperty<int>("UsedYValue", 0) + and set(v) = x.SetCustomProperty<int>("UsedYValue", v) + + + /// Illustrates trends in data with the passing of time. + type LineChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Line + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// Specifies whether marker lines are displayed when rendered in 3D. + member x.ShowMarkerLines + with get() = x.GetCustomProperty<bool>("ShowMarkerLines", false) + and set(v) = x.SetCustomProperty<bool>("ShowMarkerLines", v) + + + /// Shows how proportions of data, shown as pie-shaped pieces, contribute to + /// the data as a whole. + type PieChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Pie + + /// <summary> + /// Specifies the 3D label line size as a percentage of + /// the default size. + /// </summary> + /// <remarks>Any integer from 30 to 200.</remarks> + member x.LabelLineSize3D + with get() = x.GetCustomProperty<int>("3DLabelLineSize", 100) + and set(v) = x.SetCustomProperty<int>("3DLabelLineSize", v) + + /// Specifies the color of the collected pie or doughnut slice. + member x.CollectedColor + with get() = x.GetCustomProperty<ColorWrapper>("CollectedColor", ColorWrapper(Color.Empty)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("CollectedColor", ColorWrapper(v)) + + /// Specifies the label of the collected pie slice. + member x.CollectedLabel + with get() = x.GetCustomProperty<string>("CollectedLabel", "") + and set(v) = x.SetCustomProperty<string>("CollectedLabel", v) + + /// Specifies the legend text for the collected pie slice. + member x.CollectedLegendText + with get() = x.GetCustomProperty<string>("CollectedLegendText", "") + and set(v) = x.SetCustomProperty<string>("CollectedLegendText", v) + + /// Specifies whether the collected pie slice will be shown as + /// exploded. + member x.CollectedSliceExploded + with get() = x.GetCustomProperty<bool>("CollectedSliceExploded", true) + and set(v) = x.SetCustomProperty<bool>("CollectedSliceExploded", v) + + /// <summary> + /// Specifies the threshold value for collecting small pie slices. + /// </summary> + /// <remarks>Any double between 0 and 100 if CollectedThresholdUsePercent is true; otherwise, any double > 0.</remarks> + member x.CollectedThreshold + with get() = x.GetCustomProperty<float>("CollectedThreshold", 0.0) + and set(v) = x.SetCustomProperty<float>("CollectedThreshold", v) + + /// Specifies whether to use the collected threshold value as a + /// percentage. + member x.CollectedThresholdUsePercent + with get() = x.GetCustomProperty<bool>("CollectedThresholdUsePercent", true) + and set(v) = x.SetCustomProperty<bool>("CollectedThresholdUsePercent", v) + + /// Specifies the tooltip text of the collected pie slice. + member x.CollectedToolTip + with get() = x.GetCustomProperty<string>("CollectedToolTip", "") + and set(v) = x.SetCustomProperty<string>("CollectedToolTip", v) + + /// Specifies whether the Pie or Doughnut data point is exploded. + member x.Exploded + with get() = x.GetCustomProperty<bool>("Exploded", false) + and set(v) = x.SetCustomProperty<bool>("Exploded", v) + + /// <summary> + /// Specifies the size of the horizontal segment of the callout + /// line. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.LabelsHorizontalLineSize + with get() = x.GetCustomProperty<int>("LabelsHorizontalLineSize", 1) + and set(v) = x.SetCustomProperty<int>("LabelsHorizontalLineSize", v) + + /// <summary> + /// Specifies the size of the radial segment of the callout + /// line. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.LabelsRadialLineSize + with get() = x.GetCustomProperty<int>("LabelsRadialLineSize", 1) + and set(v) = x.SetCustomProperty<int>("LabelsRadialLineSize", v) + + /// <summary> + /// Specifies the minimum pie or doughnut size. + /// </summary> + /// <remarks>Any integer from 10 to 70.</remarks> + member x.MinimumRelativePieSize + with get() = x.GetCustomProperty<int>("MinimumRelativePieSize", 30) + and set(v) = x.SetCustomProperty<int>("MinimumRelativePieSize", v) + + /// Specifies the drawing style of the data points. + member x.PieDrawingStyle + with get() = x.GetCustomProperty<PieDrawingStyle>("PieDrawingStyle", PieDrawingStyle.Default) + and set(v) = x.SetCustomProperty<PieDrawingStyle>("PieDrawingStyle", v) + + /// Specifies the label style of the data points. + member x.PieLabelStyle + with get() = x.GetCustomProperty<PieLabelStyle>("PieLabelStyle", PieLabelStyle.Inside) + and set(v) = x.SetCustomProperty<PieLabelStyle>("PieLabelStyle", v) + + /// Specifies the color of the radial and horizontal segments of + /// the callout lines. + member x.PieLineColor + with get() = x.GetCustomProperty<ColorWrapper>("PieLineColor", ColorWrapper(Color.Black)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("PieLineColor", ColorWrapper(v)) + + /// <summary> + /// Specifies the angle of the data point in the Pie + /// or Doughnut chart. + /// </summary> + /// <remarks>Any integer from 0 to 360.</remarks> + member x.PieStartAngle + with get() = x.GetCustomProperty<int>("PieStartAngle", 90) + and set(v) = x.SetCustomProperty<int>("PieStartAngle", v) + + + /// Uses points to represent data points. + type PointChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Point + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + + /// Disregards the passage of time and only displays changes in + /// prices. + type PointAndFigureChart() = + inherit GenericChart<TwoValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.PointAndFigure + + /// Specifies the box size in the Renko or Point and + /// Figure charts. + member x.BoxSize + with get() = x.GetCustomProperty<string>("BoxSize", "4%") + and set(v) = x.SetCustomProperty<string>("BoxSize", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// Specifies the data point color that indicates an increasing trend. + member x.PriceUpColor + with get() = x.GetCustomProperty<ColorWrapper>("PriceUpColor", ColorWrapper(Color.Empty)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("PriceUpColor", ColorWrapper(v)) + + /// Specifies whether the Point and Figure chart should draw the + /// X and O values proportionally. + member x.ProportionalSymbols + with get() = x.GetCustomProperty<bool>("ProportionalSymbols", true) + and set(v) = x.SetCustomProperty<bool>("ProportionalSymbols", v) + + /// Specifies the reversal amount for the chart. + member x.ReversalAmount + with get() = x.GetCustomProperty<string>("ReversalAmount", "3%") + and set(v) = x.SetCustomProperty<string>("ReversalAmount", v) + + /// <summary> + /// Specifies the index of the Y value to use for + /// the high price in the Point and Figure chart, with + /// the first Y value at index 0. + /// </summary> + /// <remarks>Any positive integer 0.</remarks> + member x.UsedYValueHigh + with get() = x.GetCustomProperty<int>("UsedYValueHigh", 0) + and set(v) = x.SetCustomProperty<int>("UsedYValueHigh", v) + + /// <summary> + /// Specifies the index of the Y value to use for + /// the low price in the Point and Figure chart, with + /// the first Y value at index 0. + /// </summary> + /// <remarks>Any positive integer 0.</remarks> + member x.UsedYValueLow + with get() = x.GetCustomProperty<int>("UsedYValueLow", 0) + and set(v) = x.SetCustomProperty<int>("UsedYValueLow", v) + + + /// A circular graph on which data points are displayed using + /// the angle, and the distance from the center point. + type PolarChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Polar + + /// Specifies the plot area shape in Radar and Polar charts. + member x.AreaDrawingStyle + with get() = x.GetCustomProperty<AreaDrawingStyle>("AreaDrawingStyle", AreaDrawingStyle.Circle) + and set(v) = x.SetCustomProperty<AreaDrawingStyle>("AreaDrawingStyle", v) + + /// Specifies the text orientation of the axis labels in Radar + /// and Polar charts. + member x.CircularLabelStyle + with get() = x.GetCustomProperty<CircularLabelStyle>("CircularLabelStyle", CircularLabelStyle.Horizontal) + and set(v) = x.SetCustomProperty<CircularLabelStyle>("CircularLabelStyle", v) + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// Specifies the drawing style of the Polar chart type. + member x.PolarDrawingStyle + with get() = x.GetCustomProperty<PolarDrawingStyle>("PolarDrawingStyle", PolarDrawingStyle.Line) + and set(v) = x.SetCustomProperty<PolarDrawingStyle>("PolarDrawingStyle", v) + + + /// Displays data that, when combined, equals 100%. + type PyramidChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Pyramid + + /// Specifies the line color of the callout for the data + /// point labels of Funnel or Pyramid charts. + member x.CalloutLineColor + with get() = x.GetCustomProperty<ColorWrapper>("CalloutLineColor", ColorWrapper(Color.Empty)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("CalloutLineColor", ColorWrapper(v)) + + /// Specifies the 3D drawing style of the Pyramid chart type. + member x.Pyramid3DDrawingStyle + with get() = x.GetCustomProperty<Pyramid3DDrawingStyle>("Pyramid3DDrawingStyle", Pyramid3DDrawingStyle.SquareBase) + and set(v) = x.SetCustomProperty<Pyramid3DDrawingStyle>("Pyramid3DDrawingStyle", v) + + /// <summary> + /// Specifies the 3D rotation angle of the Pyramid chart. + /// </summary> + /// <remarks>Any integer from -10 to 10.</remarks> + member x.Pyramid3DRotationAngle + with get() = x.GetCustomProperty<int>("Pyramid3DRotationAngle", 5) + and set(v) = x.SetCustomProperty<int>("Pyramid3DRotationAngle", v) + + /// Specifies the placement of the data point labels in the + /// Pyramid chart when they are placed inside the pyramid. + member x.PyramidInsideLabelAlignment + with get() = x.GetCustomProperty<PyramidInsideLabelAlignment>("PyramidInsideLabelAlignment", PyramidInsideLabelAlignment.Center) + and set(v) = x.SetCustomProperty<PyramidInsideLabelAlignment>("PyramidInsideLabelAlignment", v) + + /// Specifies the style of data point labels in the Pyramid + /// chart. + member x.PyramidLabelStyle + with get() = x.GetCustomProperty<PyramidLabelStyle>("PyramidLabelStyle", PyramidLabelStyle.OutsideInColumn) + and set(v) = x.SetCustomProperty<PyramidLabelStyle>("PyramidLabelStyle", v) + + /// <summary> + /// Specifies the minimum height of a data point measured in + /// relative coordinates. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.PyramidMinPointHeight + with get() = x.GetCustomProperty<int>("PyramidMinPointHeight", 0) + and set(v) = x.SetCustomProperty<int>("PyramidMinPointHeight", v) + + /// Specifies the placement of the data point labels in the + /// Pyramid chart when the labels are placed outside the pyramid. + member x.PyramidOutsideLabelPlacement + with get() = x.GetCustomProperty<PyramidOutsideLabelPlacement>("PyramidOutsideLabelPlacement", PyramidOutsideLabelPlacement.Right) + and set(v) = x.SetCustomProperty<PyramidOutsideLabelPlacement>("PyramidOutsideLabelPlacement", v) + + /// <summary> + /// Specifies the gap size between the data points, measured in + /// relative coordinates. + /// </summary> + /// <remarks>Any integer from 0 to 100.</remarks> + member x.PyramidPointGap + with get() = x.GetCustomProperty<int>("PyramidPointGap", 0) + and set(v) = x.SetCustomProperty<int>("PyramidPointGap", v) + + /// Specifies whether the data point value represents a linear height + /// or the surface of the segment. + member x.PyramidValueType + with get() = x.GetCustomProperty<PyramidValueType>("PyramidValueType", PyramidValueType.Linear) + and set(v) = x.SetCustomProperty<PyramidValueType>("PyramidValueType", v) + + + /// A circular chart that is used primarily as a data + /// comparison tool. + type RadarChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Radar + + /// Specifies the plot area shape in Radar and Polar charts. + member x.AreaDrawingStyle + with get() = x.GetCustomProperty<AreaDrawingStyle>("AreaDrawingStyle", AreaDrawingStyle.Circle) + and set(v) = x.SetCustomProperty<AreaDrawingStyle>("AreaDrawingStyle", v) + + /// Specifies the text orientation of the axis labels in Radar + /// and Polar charts. + member x.CircularLabelStyle + with get() = x.GetCustomProperty<CircularLabelStyle>("CircularLabelStyle", CircularLabelStyle.Horizontal) + and set(v) = x.SetCustomProperty<CircularLabelStyle>("CircularLabelStyle", v) + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// Specifies the drawing style of the Radar chart. + member x.RadarDrawingStyle + with get() = x.GetCustomProperty<RadarDrawingStyle>("RadarDrawingStyle", RadarDrawingStyle.Area) + and set(v) = x.SetCustomProperty<RadarDrawingStyle>("RadarDrawingStyle", v) + + + /// Displays a range of data by plotting two Y values per data + /// point, with each Y value being drawn as a line + /// chart. + type RangeChart() = + inherit GenericChart<TwoValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Range + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// Specifies whether marker lines are displayed when rendered in 3D. + member x.ShowMarkerLines + with get() = x.GetCustomProperty<bool>("ShowMarkerLines", false) + and set(v) = x.SetCustomProperty<bool>("ShowMarkerLines", v) + + + /// Displays separate events that have beginning and end values. + type RangeBarChart() = + inherit GenericChart<TwoValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.RangeBar + + /// Specifies the placement of the data point label. + member x.BarLabelStyle + with get() = x.GetCustomProperty<BarLabelStyle>("BarLabelStyle", BarLabelStyle.Outside) + and set(v) = x.SetCustomProperty<BarLabelStyle>("BarLabelStyle", v) + + /// Specifies the drawing style of data points. + member x.DrawingStyle + with get() = x.GetCustomProperty<DrawingStyle>("DrawingStyle", DrawingStyle.Default) + and set(v) = x.SetCustomProperty<DrawingStyle>("DrawingStyle", v) + + /// Specifies whether series of the same chart type are drawn + /// next to each other instead of overlapping each other. + member x.DrawSideBySide + with get() = x.GetCustomProperty<DrawSideBySide>("DrawSideBySide", DrawSideBySide.Auto) + and set(v) = x.SetCustomProperty<DrawSideBySide>("DrawSideBySide", v) + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + + /// Displays a range of data by plotting two Y values + /// per data point. + type RangeColumnChart() = + inherit GenericChart<TwoValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.RangeColumn + + /// Specifies the drawing style of data points. + member x.DrawingStyle + with get() = x.GetCustomProperty<DrawingStyle>("DrawingStyle", DrawingStyle.Default) + and set(v) = x.SetCustomProperty<DrawingStyle>("DrawingStyle", v) + + /// Specifies whether series of the same chart type are drawn + /// next to each other instead of overlapping each other. + member x.DrawSideBySide + with get() = x.GetCustomProperty<DrawSideBySide>("DrawSideBySide", DrawSideBySide.Auto) + and set(v) = x.SetCustomProperty<DrawSideBySide>("DrawSideBySide", v) + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + type RenkoChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Renko + + /// Specifies the box size in the Renko or Point and + /// Figure charts. + member x.BoxSize + with get() = x.GetCustomProperty<string>("BoxSize", "4%") + and set(v) = x.SetCustomProperty<string>("BoxSize", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// Specifies the data point color that indicates an increasing trend. + member x.PriceUpColor + with get() = x.GetCustomProperty<ColorWrapper>("PriceUpColor", ColorWrapper(Color.Empty)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("PriceUpColor", ColorWrapper(v)) + + /// <summary> + /// Specifies the index of the Y value to use to + /// plot the Kagi, Renko, or Three Line Break chart, with + /// the first Y value at index 0. + /// </summary> + /// <remarks>Any positive integer 0.</remarks> + member x.UsedYValue + with get() = x.GetCustomProperty<int>("UsedYValue", 0) + and set(v) = x.SetCustomProperty<int>("UsedYValue", v) + + + /// A Line chart that plots a fitted curve through each + /// data point in a series. + type SplineChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Spline + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// <summary> + /// Specifies the line tension for the drawing of curves between + /// data points. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.LineTension + with get() = x.GetCustomProperty<float>("LineTension", 0.8) + and set(v) = x.SetCustomProperty<float>("LineTension", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// Specifies whether marker lines are displayed when rendered in 3D. + member x.ShowMarkerLines + with get() = x.GetCustomProperty<bool>("ShowMarkerLines", false) + and set(v) = x.SetCustomProperty<bool>("ShowMarkerLines", v) + + + /// An Area chart that plots a fitted curve through each + /// data point in a series. + type SplineAreaChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.SplineArea + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// <summary> + /// Specifies the line tension for the drawing of curves between + /// data points. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.LineTension + with get() = x.GetCustomProperty<float>("LineTension", 0.8) + and set(v) = x.SetCustomProperty<float>("LineTension", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// Specifies whether marker lines are displayed when rendered in 3D. + member x.ShowMarkerLines + with get() = x.GetCustomProperty<bool>("ShowMarkerLines", false) + and set(v) = x.SetCustomProperty<bool>("ShowMarkerLines", v) + + + /// Displays a range of data by plotting two Y values per + /// data point, with each Y value drawn as a line + /// chart. + type SplineRangeChart() = + inherit GenericChart<TwoValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.SplineRange + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// <summary> + /// Specifies the line tension for the drawing of curves between + /// data points. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.LineTension + with get() = x.GetCustomProperty<float>("LineTension", 0.8) + and set(v) = x.SetCustomProperty<float>("LineTension", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// Specifies whether marker lines are displayed when rendered in 3D. + member x.ShowMarkerLines + with get() = x.GetCustomProperty<bool>("ShowMarkerLines", false) + and set(v) = x.SetCustomProperty<bool>("ShowMarkerLines", v) + + + /// An Area chart that stacks two or more data series + /// on top of one another. + type StackedAreaChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.StackedArea + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + + /// Displays series of the same chart type as stacked bars. + type StackedBarChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.StackedBar + + /// Specifies the placement of the data point label. + member x.BarLabelStyle + with get() = x.GetCustomProperty<BarLabelStyle>("BarLabelStyle", BarLabelStyle.Outside) + and set(v) = x.SetCustomProperty<BarLabelStyle>("BarLabelStyle", v) + + /// Specifies the drawing style of data points. + member x.DrawingStyle + with get() = x.GetCustomProperty<DrawingStyle>("DrawingStyle", DrawingStyle.Default) + and set(v) = x.SetCustomProperty<DrawingStyle>("DrawingStyle", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + /// Specifies the name of the stacked group. + member x.StackedGroupName + with get() = x.GetCustomProperty<string>("StackedGroupName", "") + and set(v) = x.SetCustomProperty<string>("StackedGroupName", v) + + + /// Used to compare the contribution of each value to a + /// total across categories. + type StackedColumnChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.StackedColumn + + /// Specifies the drawing style of data points. + member x.DrawingStyle + with get() = x.GetCustomProperty<DrawingStyle>("DrawingStyle", DrawingStyle.Default) + and set(v) = x.SetCustomProperty<DrawingStyle>("DrawingStyle", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + /// Specifies the name of the stacked group. + member x.StackedGroupName + with get() = x.GetCustomProperty<string>("StackedGroupName", "") + and set(v) = x.SetCustomProperty<string>("StackedGroupName", v) + + + /// Similar to the Line chart type, but uses vertical and + /// horizontal lines to connect the data points in a series + /// forming a step-like progression. + type StepLineChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.StepLine + + /// Specifies the value to be used for empty points. + member x.EmptyPointValue + with get() = x.GetCustomProperty<EmptyPointValue>("EmptyPointValue", EmptyPointValue.Average) + and set(v) = x.SetCustomProperty<EmptyPointValue>("EmptyPointValue", v) + + /// Specifies the label position of the data point. + member x.LabelStyle + with get() = x.GetCustomProperty<LabelStyle>("LabelStyle", LabelStyle.Auto) + and set(v) = x.SetCustomProperty<LabelStyle>("LabelStyle", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// Specifies whether marker lines are displayed when rendered in 3D. + member x.ShowMarkerLines + with get() = x.GetCustomProperty<bool>("ShowMarkerLines", false) + and set(v) = x.SetCustomProperty<bool>("ShowMarkerLines", v) + + + /// Displays significant stock price points including the open, close, high, + /// and low price points. + type StockChart() = + inherit GenericChart<FourValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.Stock + + /// Specifies the Y value to use as the data point + /// label. + member x.LabelValueType + with get() = x.GetCustomProperty<LabelValueType>("LabelValueType", LabelValueType.Close) + and set(v) = x.SetCustomProperty<LabelValueType>("LabelValueType", v) + + /// <summary> + /// Specifies the maximum width of the data point in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MaxPixelPointWidth + with get() = x.GetCustomProperty<int>("MaxPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MaxPixelPointWidth", v) + + /// <summary> + /// Specifies the minimum data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.MinPixelPointWidth + with get() = x.GetCustomProperty<int>("MinPixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("MinPixelPointWidth", v) + + /// Specifies the marker style for open and close values. + member x.OpenCloseStyle + with get() = x.GetCustomProperty<OpenCloseStyle>("OpenCloseStyle", OpenCloseStyle.Line) + and set(v) = x.SetCustomProperty<OpenCloseStyle>("OpenCloseStyle", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// <summary> + /// Specifies the data point width in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointWidth + with get() = x.GetCustomProperty<int>("PixelPointWidth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointWidth", v) + + /// <summary> + /// Specifies the relative data point width. + /// </summary> + /// <remarks>Any double from 0 to 2.</remarks> + member x.PointWidth + with get() = x.GetCustomProperty<float>("PointWidth", 0.8) + and set(v) = x.SetCustomProperty<float>("PointWidth", v) + + /// Specifies whether markers for open and close prices are displayed. + member x.ShowOpenClose + with get() = x.GetCustomProperty<ShowOpenClose>("ShowOpenClose", ShowOpenClose.Both) + and set(v) = x.SetCustomProperty<ShowOpenClose>("ShowOpenClose", v) + + + /// Displays a series of vertical boxes, or lines, that reflect + /// changes in price values. + type ThreeLineBreakChart() = + inherit GenericChart<OneValue>() + + /// Returns the type of the chart series + override x.ChartType = SeriesChartType.ThreeLineBreak + + /// <summary> + /// Specifies the number of lines to use in a Three + /// Line Break chart. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.NumberOfLinesInBreak + with get() = x.GetCustomProperty<int>("NumberOfLinesInBreak", 3) + and set(v) = x.SetCustomProperty<int>("NumberOfLinesInBreak", v) + + /// <summary> + /// Specifies the 3D series depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointDepth + with get() = x.GetCustomProperty<int>("PixelPointDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointDepth", v) + + /// <summary> + /// Specifies the 3D gap depth in pixels. + /// </summary> + /// <remarks>Any integer > 0</remarks> + member x.PixelPointGapDepth + with get() = x.GetCustomProperty<int>("PixelPointGapDepth", 0) + and set(v) = x.SetCustomProperty<int>("PixelPointGapDepth", v) + + /// Specifies the data point color that indicates an increasing trend. + member x.PriceUpColor + with get() = x.GetCustomProperty<ColorWrapper>("PriceUpColor", ColorWrapper(Color.Empty)).Color + and set(v) = x.SetCustomProperty<ColorWrapper>("PriceUpColor", ColorWrapper(v)) + + /// <summary> + /// Specifies the index of the Y value to use to + /// plot the Kagi, Renko, or Three Line Break chart, with + /// the first Y value at index 0. + /// </summary> + /// <remarks>Any positive integer 0.</remarks> + member x.UsedYValue + with get() = x.GetCustomProperty<int>("UsedYValue", 0) + and set(v) = x.SetCustomProperty<int>("UsedYValue", v) + + // [/AUTOGENERATED] + // ------------------------------------------------------------------------------------ + // Special types of charts - combine multiple series & create row/columns + + type CombinedChart(charts:seq<GenericChart>) = + inherit GenericChart<DataSourceCombined>() + + override x.ChartType = enum<SeriesChartType> -1 + member x.Charts = charts + + type SubplotChart(charts:seq<GenericChart>, orientation:Orientation) = + inherit GenericChart<DataSourceCombined>() + let r = 1.0 / (charts |> Seq.length |> float) + let mutable splitSizes = seq { for c in charts -> r } + + override x.ChartType = enum<SeriesChartType> -1 + member x.SplitSizes with get() = splitSizes and set v = splitSizes <- v + member x.Orientation = orientation + member x.Charts = charts + +// ----------------------------------- +// Charting.ChartControl.fs +// ----------------------------------- +open ChartFormUtilities +open ChartData.Internal +open ChartData +open ChartStyles +open ChartTypes + +type ChartControl(ch:GenericChart) as self = + inherit UserControl() + + let seriesCounter = createCounter() + let areaCounter = createCounter() + let legendCounter = createCounter() + + let createTitleChange (chart:Chart) (ch:GenericChart) = + ch.TitleChanged.Add(function + t -> + if (chart.Titles.Count > 0) then + chart.Titles.[0] <- t + else + chart.Titles.Add t) + + let createLegendChange (chart:Chart) (ch:GenericChart) (series:Series list) = + ch.LegendChanged.Add(function + l -> + if (chart.Legends.Count > 0) then + chart.Legends.[0] <- l + else + chart.Legends.Add l + if (chart.ChartAreas.Count > 0) then l.DockedToChartArea <- chart.ChartAreas.[0].Name + for s in series do (s:Series).Legend <- l.Name) + + let createArea (chart:Chart) (ch:GenericChart) ((left, top, right, bottom) as pos) = + + let setMargin (area:ChartArea) ((left, top, right, bottom) as pos) = + area.Position.X <- left + area.Position.Y <- top + area.Position.Width <- right - left + area.Position.Height <- bottom - top + + let area = new ChartArea() + applyPropertyDefaults (ch.ChartType) area + chart.ChartAreas.Add area + + if ch.LazyArea.IsValueCreated then + applyProperties area ch.Area + if (ch.Area.Area3DStyle.Enable3D) then + applyProperties area.Area3DStyle ch.Area.Area3DStyle + + area.Name <- + if ch.LazyArea.IsValueCreated && not (String.IsNullOrEmpty ch.Area.Name) + then ch.Area.Name else sprintf "Area_%d" (areaCounter()) + ch.NameChanged.Add(function + n -> + area.Name <- + if not (String.IsNullOrEmpty n) + then n else sprintf "Area_%d" (areaCounter())) + + setMargin area pos + ch.MarginChanged.Add(function + a -> + let (l, t, r, b) = (0.0f, 0.0f, 100.0f, 100.0f) + let (ml, mt, mr, mb) = a + let (l, t, r, b) = (l + ml, t + mt, r - mr, b - mb) + setMargin area (l, t, r, b)) + + + let processTitles (ch:GenericChart) = + for title in seq { if ch.LazyTitle.IsValueCreated then yield ch.Title + yield! ch.Titles } do + chart.Titles.Add title + createTitleChange chart ch + + let processSeries (ch:GenericChart) = + let name = + if not (String.IsNullOrEmpty ch.Name) then ch.Name + else sprintf "GenericChart_Series_%d" (seriesCounter()) + let series = new Series() + applyPropertyDefaults (ch.ChartType) series + if ch.LazySeries.IsValueCreated then + applyProperties series ch.Series + + series.Name <- name + series.ChartType <- ch.ChartType + series.ChartArea <- area.Name + chart.Series.Add series + + // Set data + setSeriesData false series ch.Data chart ch.SetCustomProperty + + let cult = System.Threading.Thread.CurrentThread.CurrentCulture + System.Threading.Thread.CurrentThread.CurrentCulture <- System.Globalization.CultureInfo.InvariantCulture + let props = + [ for (KeyValue(k, v)) in ch.CustomProperties -> + sprintf "%s=%s" k (v.ToString()) ] + |> String.concat ", " + System.Threading.Thread.CurrentThread.CurrentCulture <- cult + series.CustomProperties <- props + + ch.CustomPropertyChanged.Add(function + (name, value) -> series.SetCustomProperty(name, System.String.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}", value))) + + for leg in ch.Legends do + let legend = new Legend() + applyProperties legend leg + legend.Name <- sprintf "Legend_%d" (legendCounter()) + legend.DockedToChartArea <- area.Name + chart.Legends.Add legend + series.Legend <- legend.Name + createLegendChange chart ch [series] + + series + + match ch with + | :? CombinedChart as cch -> + let series = + [ for c in cch.Charts do + let s = processSeries c + processTitles c + yield s ] + + for leg in ch.Legends do + let legend = new Legend() + applyProperties legend leg + legend.Name <- sprintf "Legend_%d" (legendCounter()) + legend.DockedToChartArea <- area.Name + chart.Legends.Add legend + for s in series do s.Legend <- legend.Name + createLegendChange chart ch series + + processTitles cch + series + | c -> + let series = processSeries c + + processTitles c + [ series ] + + let createChart (ch:GenericChart) = + let chart = new Chart() + applyPropertyDefaults (ch.ChartType) chart + self.Controls.Add chart + + let rec loop (ch:GenericChart) (l, t, r, b) = + let (ml, mt, mr, mb) = ch.Margin + let (l, t, r, b) = (l + ml, t + mt, r - mr, b - mb) + match ch with + | :? SubplotChart as subplot -> + for title in ch.Titles do + chart.Titles.Add title + createTitleChange chart ch + + let total = subplot.SplitSizes |> Seq.sum + let available = if subplot.Orientation = Orientation.Vertical then b - t else r - l + let k = float available / total + + let offs = ref 0.0f + let series = + [ for ch, siz in Seq.zip subplot.Charts subplot.SplitSizes do + if subplot.Orientation = Orientation.Vertical then + yield! loop ch (l, t + !offs, r, t + !offs + float32 (siz * k)) + else + yield! loop ch (l + !offs, t, l + !offs + float32 (siz * k), b) + offs := !offs + float32 (siz * k) ] + + for leg in ch.Chart.Legends do + let legend = new Legend() + applyProperties legend leg + legend.Name <- sprintf "Legend_%d" (legendCounter()) + //legend.DockedToChartArea <- area.Name + chart.Legends.Add legend + for s in series do (s:Series).Legend <- legend.Name + createLegendChange chart ch series + + series + | _ -> + createArea chart ch (l, t, r, b) + + let series = loop ch (0.0f, 0.0f, 100.0f, 100.0f) + if ch.LazyChart.IsValueCreated then + applyProperties chart ch.Chart + chart.Dock <- DockStyle.Fill + ch.Chart <- chart + + chart, series + + let chart, series = createChart ch + let props = new PropertyGrid(Width = 250, Dock = DockStyle.Right, SelectedObject = chart, Visible = false) + + do + self.Controls.Add chart + self.Controls.Add props + + let menu = new ContextMenu() + let dlg = new SaveFileDialog(Filter = "PNG (*.png)|*.png|Bitmap (*.bmp;*.dib)|*.bmp;*.dib|GIF (*.gif)|*.gif|TIFF (*.tiff;*.tif)|*.tiff;*.tif|EMF (*.emf)|*.emf|JPEG (*.jpeg;*.jpg;*.jpe)|*.jpeg;*.jpg;*.jpe|EMF+ (*.emf)|*.emf|EMF+Dual (*.emf)|*.emf") + let miCopy = new MenuItem("&Copy Image to Clipboard", Shortcut = Shortcut.CtrlC) + let miCopyEmf = new MenuItem("Copy Image to Clipboard as &EMF", Shortcut = Shortcut.CtrlShiftC) + let miSave = new MenuItem("&Save Image As..", Shortcut = Shortcut.CtrlS) + let miEdit = new MenuItem("Show Property &Grid", Shortcut = Shortcut.CtrlG) + + miEdit.Click.Add(fun _ -> + miEdit.Checked <- not miEdit.Checked + props.Visible <- miEdit.Checked) + + miCopy.Click.Add(fun _ -> + ch.CopyChartToClipboard()) + + miCopyEmf.Click.Add(fun _ -> + ch.CopyChartToClipboardEmf(self)) + + miSave.Click.Add(fun _ -> + if dlg.ShowDialog() = DialogResult.OK then + let fmt = + match dlg.FilterIndex with + | 1 -> ChartImageFormat.Png + | 2 -> ChartImageFormat.Bmp + | 3 -> ChartImageFormat.Gif + | 4 -> ChartImageFormat.Tiff + | 5 -> ChartImageFormat.Emf + | 6 -> ChartImageFormat.Jpeg + | 7 -> ChartImageFormat.EmfPlus + | 8 -> ChartImageFormat.EmfDual + | _ -> ChartImageFormat.Png + chart.SaveImage(dlg.FileName, fmt) ) + + menu.MenuItems.AddRange [| miCopy; miCopyEmf; miSave; miEdit |] + self.ContextMenu <- menu + + member x.ChartSeries = seq { for s in series -> s } + +// ----------------------------------- +// Charting.FSharpChart.fs +// ----------------------------------- +open ChartData.Internal +open ChartData +open ChartTypes +open ChartStyles + +type FSharpChart = + + /// Displays multiple seriesÿof data as stacked areas. The cumulative proportion + /// of each stacked element is always 100% of the Y axis. + static member StackedArea100<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<StackedArea100Chart>(oneY data) + /// Displays multiple seriesÿof data as stacked areas. The cumulative proportion + /// of each stacked element is always 100% of the Y axis. + static member StackedArea100<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<StackedArea100Chart>(oneXYSeq data) + /// Displays multiple seriesÿof data as stacked areas. The cumulative proportion + /// of each stacked element is always 100% of the Y axis. + static member StackedArea100<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<StackedArea100Chart>(oneXY xvalues yvalues) + /// Displays multiple seriesÿof data as stacked areas. The cumulative proportion + /// of each stacked element is always 100% of the Y axis. + static member StackedArea100<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<StackedArea100Chart>(oneYObs (defaultArg MaxPoints -1) data) + /// Displays multiple seriesÿof data as stacked areas. The cumulative proportion + /// of each stacked element is always 100% of the Y axis. + static member StackedArea100<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<StackedArea100Chart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Displays multiple series of data as stacked bars. The cumulative + /// proportion of each stacked element is always 100% of the Y axis. + static member StackedBar100<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<StackedBar100Chart>(oneY data) + /// Displays multiple series of data as stacked bars. The cumulative + /// proportion of each stacked element is always 100% of the Y axis. + static member StackedBar100<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<StackedBar100Chart>(oneXYSeq data) + /// Displays multiple series of data as stacked bars. The cumulative + /// proportion of each stacked element is always 100% of the Y axis. + static member StackedBar100<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<StackedBar100Chart>(oneXY xvalues yvalues) + /// Displays multiple series of data as stacked bars. The cumulative + /// proportion of each stacked element is always 100% of the Y axis. + static member StackedBar100<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<StackedBar100Chart>(oneYObs (defaultArg MaxPoints -1) data) + /// Displays multiple series of data as stacked bars. The cumulative + /// proportion of each stacked element is always 100% of the Y axis. + static member StackedBar100<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<StackedBar100Chart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Displays multiple series of data as stacked columns. The cumulative + /// proportion of each stacked element is always 100% of the Y axis. + static member StackedColumn100<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<StackedColumn100Chart>(oneY data) + /// Displays multiple series of data as stacked columns. The cumulative + /// proportion of each stacked element is always 100% of the Y axis. + static member StackedColumn100<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<StackedColumn100Chart>(oneXYSeq data) + /// Displays multiple series of data as stacked columns. The cumulative + /// proportion of each stacked element is always 100% of the Y axis. + static member StackedColumn100<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<StackedColumn100Chart>(oneXY xvalues yvalues) + /// Displays multiple series of data as stacked columns. The cumulative + /// proportion of each stacked element is always 100% of the Y axis. + static member StackedColumn100<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<StackedColumn100Chart>(oneYObs (defaultArg MaxPoints -1) data) + /// Displays multiple series of data as stacked columns. The cumulative + /// proportion of each stacked element is always 100% of the Y axis. + static member StackedColumn100<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<StackedColumn100Chart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Emphasizes the degree of change over time and shows the + /// relationship of the parts to a whole. + static member Area<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<AreaChart>(oneY data) + /// Emphasizes the degree of change over time and shows the + /// relationship of the parts to a whole. + static member Area<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<AreaChart>(oneXYSeq data) + /// Emphasizes the degree of change over time and shows the + /// relationship of the parts to a whole. + static member Area<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<AreaChart>(oneXY xvalues yvalues) + /// Emphasizes the degree of change over time and shows the + /// relationship of the parts to a whole. + static member Area<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<AreaChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Emphasizes the degree of change over time and shows the + /// relationship of the parts to a whole. + static member Area<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<AreaChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Illustrates comparisons among individual items. + static member Bar<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<BarChart>(oneY data) + /// Illustrates comparisons among individual items. + static member Bar<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<BarChart>(oneXYSeq data) + /// Illustrates comparisons among individual items. + static member Bar<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<BarChart>(oneXY xvalues yvalues) + /// Illustrates comparisons among individual items. + static member Bar<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<BarChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Illustrates comparisons among individual items. + static member Bar<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<BarChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Consists of one or more box symbols that summarize the + /// distribution of the data withinÿone or moreÿdata sets. + static member BoxPlot(data:seq<'T1 * 'T2 * 'T3 * 'T4 * 'T5 * 'T6>) = + GenericChart<_>.Create<BoxPlotChart>(sixY data) + /// Consists of one or more box symbols that summarize the + /// distribution of the data withinÿone or moreÿdata sets. + static member BoxPlot(data:seq<'TX * 'TYValue[]>) = + GenericChart<_>.Create<BoxPlotChart>(sixXYArrBox data) + /// Consists of one or more box symbols that summarize the + /// distribution of the data withinÿone or moreÿdata sets. + static member BoxPlot(data:seq<'TYValue[]>) = + GenericChart<_>.Create<BoxPlotChart>(sixYArrBox data) + + /// A variation of the Point chart type, where the data + /// points are replaced by bubbles of different sizes. + static member Bubble<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data: seq<'TY1 * 'TY2>) = + GenericChart<_>.Create<BubbleChart>(twoY data) + /// A variation of the Point chart type, where the data + /// points are replaced by bubbles of different sizes. + static member Bubble<'TX, 'TY1, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2)>) = + GenericChart<_>.Create<BubbleChart>(twoXYSeq data) + /// A variation of the Point chart type, where the data + /// points are replaced by bubbles of different sizes. + static member Bubble<'TX, 'TY1Values, 'TY1, 'TY2Values, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY1Values :> seq<'TY1> and 'TY2 :> IConvertible and 'TY2Values :> seq<'TY2>>(xvalues:seq<'TX>, yvalues1:'TY1Values, yvalues2:'TY2Values) = + GenericChart<_>.Create<BubbleChart>(twoXY xvalues yvalues1 yvalues2) + /// A variation of the Point chart type, where the data + /// points are replaced by bubbles of different sizes. + static member Bubble<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:IObservable<'TY1 * 'TY2>, ?MaxPoints) = + GenericChart<_>.Create<BubbleChart>(twoYObs (defaultArg MaxPoints -1) data) + /// A variation of the Point chart type, where the data + /// points are replaced by bubbles of different sizes. + static member Bubble<'TX, 'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2)>, ?MaxPoints) = + GenericChart<_>.Create<BubbleChart>(twoXYObs (defaultArg MaxPoints -1) data) + + /// Used to display stock information using high, low, open and + /// close values. + static member Candlestick<'TY1, 'TY2, 'TY3, 'TY4 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible>(data: seq<'TY1 * 'TY2 * 'TY3 * 'TY4>) = + GenericChart<_>.Create<CandlestickChart>(fourY data) + /// Used to display stock information using high, low, open and + /// close values. + static member Candlestick<'TX, 'TY1, 'TY2, 'TY3, 'TY4 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2 * 'TY3 * 'TY4)>) = + GenericChart<_>.Create<CandlestickChart>(fourXYSeq data) + /// Used to display stock information using high, low, open and + /// close values. + static member Candlestick<'TX, 'TY1Values, 'TY1, 'TY2Values, 'TY2, 'TY3Values, 'TY3, 'TY4Values, 'TY4 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY1Values :> seq<'TY1> and 'TY2 :> IConvertible and 'TY2Values :> seq<'TY2> and 'TY3 :> IConvertible and 'TY3Values :> seq<'TY3> and 'TY4 :> IConvertible and 'TY4Values :> seq<'TY4>>(xvalues:seq<'TX>, yvalues1:'TY1Values, yvalues2:'TY2Values, yvalues3:'TY3Values, yvalues4:'TY4Values) = + GenericChart<_>.Create<CandlestickChart>(fourXY xvalues yvalues1 yvalues2 yvalues3 yvalues4) + /// Used to display stock information using high, low, open and + /// close values. + static member Candlestick<'TY1, 'TY2, 'TY3, 'TY4 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible>(data:IObservable<'TY1 * 'TY2 * 'TY3 * 'TY4>, ?MaxPoints) = + GenericChart<_>.Create<CandlestickChart>(fourYObs (defaultArg MaxPoints -1) data) + /// Used to display stock information using high, low, open and + /// close values. + static member Candlestick<'TX, 'TY1, 'TY2, 'TY3, 'TY4 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2 * 'TY3 * 'TY4)>, ?MaxPoints) = + GenericChart<_>.Create<CandlestickChart>(fourXYObs (defaultArg MaxPoints -1) data) + + /// Uses a sequence of columns to compare values across categories. + static member Column<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<ColumnChart>(oneY data) + /// Uses a sequence of columns to compare values across categories. + static member Column<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<ColumnChart>(oneXYSeq data) + /// Uses a sequence of columns to compare values across categories. + static member Column<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<ColumnChart>(oneXY xvalues yvalues) + /// Uses a sequence of columns to compare values across categories. + static member Column<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<ColumnChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Uses a sequence of columns to compare values across categories. + static member Column<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<ColumnChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Similar to the Pie chart type, except that it has + /// a hole in the center. + static member Doughnut<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<DoughnutChart>(oneY data) + /// Similar to the Pie chart type, except that it has + /// a hole in the center. + static member Doughnut<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<DoughnutChart>(oneXYSeq data) + /// Similar to the Pie chart type, except that it has + /// a hole in the center. + static member Doughnut<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<DoughnutChart>(oneXY xvalues yvalues) + /// Similar to the Pie chart type, except that it has + /// a hole in the center. + static member Doughnut<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<DoughnutChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Similar to the Pie chart type, except that it has + /// a hole in the center. + static member Doughnut<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<DoughnutChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Consists of lines with markers that are used to display + /// statistical information about the data displayed inÿa graph. + static member ErrorBar<'TY1, 'TY2, 'TY3 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible>(data: seq<'TY1 * 'TY2 * 'TY3>) = + GenericChart<_>.Create<ErrorBarChart>(threeY data) + /// Consists of lines with markers that are used to display + /// statistical information about the data displayed inÿa graph. + static member ErrorBar<'TX, 'TY1, 'TY2, 'TY3 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2 * 'TY3)>) = + GenericChart<_>.Create<ErrorBarChart>(threeXYSeq data) + /// Consists of lines with markers that are used to display + /// statistical information about the data displayed inÿa graph. + static member ErrorBar<'TX, 'TY1Values, 'TY1, 'TY2Values, 'TY2, 'TY3Values, 'TY3 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY1Values :> seq<'TY1> and 'TY2 :> IConvertible and 'TY2Values :> seq<'TY2> and 'TY3 :> IConvertible and 'TY3Values :> seq<'TY3>>(xvalues:seq<'TX>, yvalues1:'TY1Values, yvalues2:'TY2Values, yvalues3:'TY3Values) = + GenericChart<_>.Create<ErrorBarChart>(threeXY xvalues yvalues1 yvalues2 yvalues3) + /// Consists of lines with markers that are used to display + /// statistical information about the data displayed inÿa graph. + static member ErrorBar<'TY1, 'TY2, 'TY3 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible>(data:IObservable<'TY1 * 'TY2 * 'TY3>, ?MaxPoints) = + GenericChart<_>.Create<ErrorBarChart>(threeYObs (defaultArg MaxPoints -1) data) + /// Consists of lines with markers that are used to display + /// statistical information about the data displayed inÿa graph. + static member ErrorBar<'TX, 'TY1, 'TY2, 'TY3 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2 * 'TY3)>, ?MaxPoints) = + GenericChart<_>.Create<ErrorBarChart>(threeXYObs (defaultArg MaxPoints -1) data) + + /// A variation of the Line chart that significantly reduces the + /// drawing time of a series that contains a very large + /// number of data points. + static member FastLine<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<FastLineChart>(oneY data) + /// A variation of the Line chart that significantly reduces the + /// drawing time of a series that contains a very large + /// number of data points. + static member FastLine<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<FastLineChart>(oneXYSeq data) + /// A variation of the Line chart that significantly reduces the + /// drawing time of a series that contains a very large + /// number of data points. + static member FastLine<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<FastLineChart>(oneXY xvalues yvalues) + /// A variation of the Line chart that significantly reduces the + /// drawing time of a series that contains a very large + /// number of data points. + static member FastLine<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<FastLineChart>(oneYObs (defaultArg MaxPoints -1) data) + /// A variation of the Line chart that significantly reduces the + /// drawing time of a series that contains a very large + /// number of data points. + static member FastLine<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<FastLineChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// A variation of the Point chart type that significantly reduces + /// the drawing time of a series that contains a very + /// large number of data points. + static member FastPoint<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<FastPointChart>(oneY data) + /// A variation of the Point chart type that significantly reduces + /// the drawing time of a series that contains a very + /// large number of data points. + static member FastPoint<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<FastPointChart>(oneXYSeq data) + /// A variation of the Point chart type that significantly reduces + /// the drawing time of a series that contains a very + /// large number of data points. + static member FastPoint<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<FastPointChart>(oneXY xvalues yvalues) + /// A variation of the Point chart type that significantly reduces + /// the drawing time of a series that contains a very + /// large number of data points. + static member FastPoint<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<FastPointChart>(oneYObs (defaultArg MaxPoints -1) data) + /// A variation of the Point chart type that significantly reduces + /// the drawing time of a series that contains a very + /// large number of data points. + static member FastPoint<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<FastPointChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Displays in a funnel shape data that equals 100% when + /// totaled. + static member Funnel<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<FunnelChart>(oneY data) + /// Displays in a funnel shape data that equals 100% when + /// totaled. + static member Funnel<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<FunnelChart>(oneXYSeq data) + /// Displays in a funnel shape data that equals 100% when + /// totaled. + static member Funnel<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<FunnelChart>(oneXY xvalues yvalues) + /// Displays in a funnel shape data that equals 100% when + /// totaled. + static member Funnel<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<FunnelChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Displays in a funnel shape data that equals 100% when + /// totaled. + static member Funnel<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<FunnelChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + static member Kagi<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<KagiChart>(oneY data) + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + static member Kagi<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<KagiChart>(oneXYSeq data) + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + static member Kagi<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<KagiChart>(oneXY xvalues yvalues) + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + static member Kagi<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<KagiChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + static member Kagi<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<KagiChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Illustrates trends in data with the passing of time. + static member Line<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<LineChart>(oneY data) + /// Illustrates trends in data with the passing of time. + static member Line<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<LineChart>(oneXYSeq data) + /// Illustrates trends in data with the passing of time. + static member Line<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<LineChart>(oneXY xvalues yvalues) + /// Illustrates trends in data with the passing of time. + static member Line<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<LineChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Illustrates trends in data with the passing of time. + static member Line<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<LineChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Shows how proportions of data, shown as pie-shaped pieces,ÿcontribute to + /// the data as aÿwhole. + static member Pie<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<PieChart>(oneY data) + /// Shows how proportions of data, shown as pie-shaped pieces,ÿcontribute to + /// the data as aÿwhole. + static member Pie<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<PieChart>(oneXYSeq data) + /// Shows how proportions of data, shown as pie-shaped pieces,ÿcontribute to + /// the data as aÿwhole. + static member Pie<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<PieChart>(oneXY xvalues yvalues) + /// Shows how proportions of data, shown as pie-shaped pieces,ÿcontribute to + /// the data as aÿwhole. + static member Pie<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<PieChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Shows how proportions of data, shown as pie-shaped pieces,ÿcontribute to + /// the data as aÿwhole. + static member Pie<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<PieChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Uses points to represent data points. + static member Point<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<PointChart>(oneY data) + /// Uses points to represent data points. + static member Point<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<PointChart>(oneXYSeq data) + /// Uses points to represent data points. + static member Point<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<PointChart>(oneXY xvalues yvalues) + /// Uses points to represent data points. + static member Point<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<PointChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Uses points to represent data points. + static member Point<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<PointChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Disregards the passage of time and only displays changes in + /// prices. + static member PointAndFigure<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data: seq<'TY1 * 'TY2>) = + GenericChart<_>.Create<PointAndFigureChart>(twoY data) + /// Disregards the passage of time and only displays changes in + /// prices. + static member PointAndFigure<'TX, 'TY1, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2)>) = + GenericChart<_>.Create<PointAndFigureChart>(twoXYSeq data) + /// Disregards the passage of time and only displays changes in + /// prices. + static member PointAndFigure<'TX, 'TY1Values, 'TY1, 'TY2Values, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY1Values :> seq<'TY1> and 'TY2 :> IConvertible and 'TY2Values :> seq<'TY2>>(xvalues:seq<'TX>, yvalues1:'TY1Values, yvalues2:'TY2Values) = + GenericChart<_>.Create<PointAndFigureChart>(twoXY xvalues yvalues1 yvalues2) + /// Disregards the passage of time and only displays changes in + /// prices. + static member PointAndFigure<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:IObservable<'TY1 * 'TY2>, ?MaxPoints) = + GenericChart<_>.Create<PointAndFigureChart>(twoYObs (defaultArg MaxPoints -1) data) + /// Disregards the passage of time and only displays changes in + /// prices. + static member PointAndFigure<'TX, 'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2)>, ?MaxPoints) = + GenericChart<_>.Create<PointAndFigureChart>(twoXYObs (defaultArg MaxPoints -1) data) + + /// A circular graph on which data points are displayed using + /// the angle, and the distance from the center point. + static member Polar<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<PolarChart>(oneY data) + /// A circular graph on which data points are displayed using + /// the angle, and the distance from the center point. + static member Polar<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<PolarChart>(oneXYSeq data) + /// A circular graph on which data points are displayed using + /// the angle, and the distance from the center point. + static member Polar<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<PolarChart>(oneXY xvalues yvalues) + /// A circular graph on which data points are displayed using + /// the angle, and the distance from the center point. + static member Polar<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<PolarChart>(oneYObs (defaultArg MaxPoints -1) data) + /// A circular graph on which data points are displayed using + /// the angle, and the distance from the center point. + static member Polar<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<PolarChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Displays data that, when combined, equals 100%. + static member Pyramid<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<PyramidChart>(oneY data) + /// Displays data that, when combined, equals 100%. + static member Pyramid<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<PyramidChart>(oneXYSeq data) + /// Displays data that, when combined, equals 100%. + static member Pyramid<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<PyramidChart>(oneXY xvalues yvalues) + /// Displays data that, when combined, equals 100%. + static member Pyramid<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<PyramidChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Displays data that, when combined, equals 100%. + static member Pyramid<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<PyramidChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// A circular chart that is used primarily as a data + /// comparison tool. + static member Radar<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<RadarChart>(oneY data) + /// A circular chart that is used primarily as a data + /// comparison tool. + static member Radar<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<RadarChart>(oneXYSeq data) + /// A circular chart that is used primarily as a data + /// comparison tool. + static member Radar<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<RadarChart>(oneXY xvalues yvalues) + /// A circular chart that is used primarily as a data + /// comparison tool. + static member Radar<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<RadarChart>(oneYObs (defaultArg MaxPoints -1) data) + /// A circular chart that is used primarily as a data + /// comparison tool. + static member Radar<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<RadarChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Displays a range of data by plottingÿtwoÿY values per data + /// point, with each Y value being drawn as a line + /// chart. + static member Range<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data: seq<'TY1 * 'TY2>) = + GenericChart<_>.Create<RangeChart>(twoY data) + /// Displays a range of data by plottingÿtwoÿY values per data + /// point, with each Y value being drawn as a line + /// chart. + static member Range<'TX, 'TY1, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2)>) = + GenericChart<_>.Create<RangeChart>(twoXYSeq data) + /// Displays a range of data by plottingÿtwoÿY values per data + /// point, with each Y value being drawn as a line + /// chart. + static member Range<'TX, 'TY1Values, 'TY1, 'TY2Values, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY1Values :> seq<'TY1> and 'TY2 :> IConvertible and 'TY2Values :> seq<'TY2>>(xvalues:seq<'TX>, yvalues1:'TY1Values, yvalues2:'TY2Values) = + GenericChart<_>.Create<RangeChart>(twoXY xvalues yvalues1 yvalues2) + /// Displays a range of data by plottingÿtwoÿY values per data + /// point, with each Y value being drawn as a line + /// chart. + static member Range<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:IObservable<'TY1 * 'TY2>, ?MaxPoints) = + GenericChart<_>.Create<RangeChart>(twoYObs (defaultArg MaxPoints -1) data) + /// Displays a range of data by plottingÿtwoÿY values per data + /// point, with each Y value being drawn as a line + /// chart. + static member Range<'TX, 'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2)>, ?MaxPoints) = + GenericChart<_>.Create<RangeChart>(twoXYObs (defaultArg MaxPoints -1) data) + + /// Displays separate events that have beginning and end values. + static member RangeBar<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data: seq<'TY1 * 'TY2>) = + GenericChart<_>.Create<RangeBarChart>(twoY data) + /// Displays separate events that have beginning and end values. + static member RangeBar<'TX, 'TY1, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2)>) = + GenericChart<_>.Create<RangeBarChart>(twoXYSeq data) + /// Displays separate events that have beginning and end values. + static member RangeBar<'TX, 'TY1Values, 'TY1, 'TY2Values, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY1Values :> seq<'TY1> and 'TY2 :> IConvertible and 'TY2Values :> seq<'TY2>>(xvalues:seq<'TX>, yvalues1:'TY1Values, yvalues2:'TY2Values) = + GenericChart<_>.Create<RangeBarChart>(twoXY xvalues yvalues1 yvalues2) + /// Displays separate events that have beginning and end values. + static member RangeBar<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:IObservable<'TY1 * 'TY2>, ?MaxPoints) = + GenericChart<_>.Create<RangeBarChart>(twoYObs (defaultArg MaxPoints -1) data) + /// Displays separate events that have beginning and end values. + static member RangeBar<'TX, 'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2)>, ?MaxPoints) = + GenericChart<_>.Create<RangeBarChart>(twoXYObs (defaultArg MaxPoints -1) data) + + /// Displays a range of data by plotting two Y values + /// per data point. + static member RangeColumn<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data: seq<'TY1 * 'TY2>) = + GenericChart<_>.Create<RangeColumnChart>(twoY data) + /// Displays a range of data by plotting two Y values + /// per data point. + static member RangeColumn<'TX, 'TY1, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2)>) = + GenericChart<_>.Create<RangeColumnChart>(twoXYSeq data) + /// Displays a range of data by plotting two Y values + /// per data point. + static member RangeColumn<'TX, 'TY1Values, 'TY1, 'TY2Values, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY1Values :> seq<'TY1> and 'TY2 :> IConvertible and 'TY2Values :> seq<'TY2>>(xvalues:seq<'TX>, yvalues1:'TY1Values, yvalues2:'TY2Values) = + GenericChart<_>.Create<RangeColumnChart>(twoXY xvalues yvalues1 yvalues2) + /// Displays a range of data by plotting two Y values + /// per data point. + static member RangeColumn<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:IObservable<'TY1 * 'TY2>, ?MaxPoints) = + GenericChart<_>.Create<RangeColumnChart>(twoYObs (defaultArg MaxPoints -1) data) + /// Displays a range of data by plotting two Y values + /// per data point. + static member RangeColumn<'TX, 'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2)>, ?MaxPoints) = + GenericChart<_>.Create<RangeColumnChart>(twoXYObs (defaultArg MaxPoints -1) data) + + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + static member Renko<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<RenkoChart>(oneY data) + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + static member Renko<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<RenkoChart>(oneXYSeq data) + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + static member Renko<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<RenkoChart>(oneXY xvalues yvalues) + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + static member Renko<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<RenkoChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Displays a series of connecting vertical lines where the thickness + /// and direction of the lines are dependent on the action + /// of the price value. + static member Renko<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<RenkoChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// A Line chart that plots a fitted curve through each + /// data point in a series. + static member Spline<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<SplineChart>(oneY data) + /// A Line chart that plots a fitted curve through each + /// data point in a series. + static member Spline<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<SplineChart>(oneXYSeq data) + /// A Line chart that plots a fitted curve through each + /// data point in a series. + static member Spline<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<SplineChart>(oneXY xvalues yvalues) + /// A Line chart that plots a fitted curve through each + /// data point in a series. + static member Spline<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<SplineChart>(oneYObs (defaultArg MaxPoints -1) data) + /// A Line chart that plots a fitted curve through each + /// data point in a series. + static member Spline<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<SplineChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// An Area chart that plots a fitted curve through each + /// data point in a series. + static member SplineArea<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<SplineAreaChart>(oneY data) + /// An Area chart that plots a fitted curve through each + /// data point in a series. + static member SplineArea<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<SplineAreaChart>(oneXYSeq data) + /// An Area chart that plots a fitted curve through each + /// data point in a series. + static member SplineArea<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<SplineAreaChart>(oneXY xvalues yvalues) + /// An Area chart that plots a fitted curve through each + /// data point in a series. + static member SplineArea<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<SplineAreaChart>(oneYObs (defaultArg MaxPoints -1) data) + /// An Area chart that plots a fitted curve through each + /// data point in a series. + static member SplineArea<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<SplineAreaChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Displays a range of data by plotting twoÿY values per + /// data point, with each Y value drawn as a line + /// chart. + static member SplineRange<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data: seq<'TY1 * 'TY2>) = + GenericChart<_>.Create<SplineRangeChart>(twoY data) + /// Displays a range of data by plotting twoÿY values per + /// data point, with each Y value drawn as a line + /// chart. + static member SplineRange<'TX, 'TY1, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2)>) = + GenericChart<_>.Create<SplineRangeChart>(twoXYSeq data) + /// Displays a range of data by plotting twoÿY values per + /// data point, with each Y value drawn as a line + /// chart. + static member SplineRange<'TX, 'TY1Values, 'TY1, 'TY2Values, 'TY2 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY1Values :> seq<'TY1> and 'TY2 :> IConvertible and 'TY2Values :> seq<'TY2>>(xvalues:seq<'TX>, yvalues1:'TY1Values, yvalues2:'TY2Values) = + GenericChart<_>.Create<SplineRangeChart>(twoXY xvalues yvalues1 yvalues2) + /// Displays a range of data by plotting twoÿY values per + /// data point, with each Y value drawn as a line + /// chart. + static member SplineRange<'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible>(data:IObservable<'TY1 * 'TY2>, ?MaxPoints) = + GenericChart<_>.Create<SplineRangeChart>(twoYObs (defaultArg MaxPoints -1) data) + /// Displays a range of data by plotting twoÿY values per + /// data point, with each Y value drawn as a line + /// chart. + static member SplineRange<'TX, 'TY1, 'TY2 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2)>, ?MaxPoints) = + GenericChart<_>.Create<SplineRangeChart>(twoXYObs (defaultArg MaxPoints -1) data) + + /// An Area chart that stacks two or more data series + /// on top of one another. + static member StackedArea<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<StackedAreaChart>(oneY data) + /// An Area chart that stacks two or more data series + /// on top of one another. + static member StackedArea<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<StackedAreaChart>(oneXYSeq data) + /// An Area chart that stacks two or more data series + /// on top of one another. + static member StackedArea<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<StackedAreaChart>(oneXY xvalues yvalues) + /// An Area chart that stacks two or more data series + /// on top of one another. + static member StackedArea<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<StackedAreaChart>(oneYObs (defaultArg MaxPoints -1) data) + /// An Area chart that stacks two or more data series + /// on top of one another. + static member StackedArea<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<StackedAreaChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Displays series of the same chart type as stacked bars. + static member StackedBar<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<StackedBarChart>(oneY data) + /// Displays series of the same chart type as stacked bars. + static member StackedBar<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<StackedBarChart>(oneXYSeq data) + /// Displays series of the same chart type as stacked bars. + static member StackedBar<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<StackedBarChart>(oneXY xvalues yvalues) + /// Displays series of the same chart type as stacked bars. + static member StackedBar<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<StackedBarChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Displays series of the same chart type as stacked bars. + static member StackedBar<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<StackedBarChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Used to compare the contribution of each value to a + /// total across categories. + static member StackedColumn<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<StackedColumnChart>(oneY data) + /// Used to compare the contribution of each value to a + /// total across categories. + static member StackedColumn<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<StackedColumnChart>(oneXYSeq data) + /// Used to compare the contribution of each value to a + /// total across categories. + static member StackedColumn<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<StackedColumnChart>(oneXY xvalues yvalues) + /// Used to compare the contribution of each value to a + /// total across categories. + static member StackedColumn<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<StackedColumnChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Used to compare the contribution of each value to a + /// total across categories. + static member StackedColumn<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<StackedColumnChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Similar to the Line chart type, but uses vertical and + /// horizontal lines to connect the data points in a series + /// forming a step-like progression. + static member StepLine<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<StepLineChart>(oneY data) + /// Similar to the Line chart type, but uses vertical and + /// horizontal lines to connect the data points in a series + /// forming a step-like progression. + static member StepLine<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<StepLineChart>(oneXYSeq data) + /// Similar to the Line chart type, but uses vertical and + /// horizontal lines to connect the data points in a series + /// forming a step-like progression. + static member StepLine<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<StepLineChart>(oneXY xvalues yvalues) + /// Similar to the Line chart type, but uses vertical and + /// horizontal lines to connect the data points in a series + /// forming a step-like progression. + static member StepLine<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<StepLineChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Similar to the Line chart type, but uses vertical and + /// horizontal lines to connect the data points in a series + /// forming a step-like progression. + static member StepLine<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<StepLineChart>(oneXYObs (defaultArg MaxPoints -1) data) + + /// Displays significant stock price points including the open, close, high, + /// and low price points. + static member Stock<'TY1, 'TY2, 'TY3, 'TY4 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible>(data: seq<'TY1 * 'TY2 * 'TY3 * 'TY4>) = + GenericChart<_>.Create<StockChart>(fourY data) + /// Displays significant stock price points including the open, close, high, + /// and low price points. + static member Stock<'TX, 'TY1, 'TY2, 'TY3, 'TY4 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible>(data:seq<'TX * ('TY1 * 'TY2 * 'TY3 * 'TY4)>) = + GenericChart<_>.Create<StockChart>(fourXYSeq data) + /// Displays significant stock price points including the open, close, high, + /// and low price points. + static member Stock<'TX, 'TY1Values, 'TY1, 'TY2Values, 'TY2, 'TY3Values, 'TY3, 'TY4Values, 'TY4 when 'TX :> IConvertible and 'TY1 :> IConvertible and 'TY1Values :> seq<'TY1> and 'TY2 :> IConvertible and 'TY2Values :> seq<'TY2> and 'TY3 :> IConvertible and 'TY3Values :> seq<'TY3> and 'TY4 :> IConvertible and 'TY4Values :> seq<'TY4>>(xvalues:seq<'TX>, yvalues1:'TY1Values, yvalues2:'TY2Values, yvalues3:'TY3Values, yvalues4:'TY4Values) = + GenericChart<_>.Create<StockChart>(fourXY xvalues yvalues1 yvalues2 yvalues3 yvalues4) + /// Displays significant stock price points including the open, close, high, + /// and low price points. + static member Stock<'TY1, 'TY2, 'TY3, 'TY4 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible>(data:IObservable<'TY1 * 'TY2 * 'TY3 * 'TY4>, ?MaxPoints) = + GenericChart<_>.Create<StockChart>(fourYObs (defaultArg MaxPoints -1) data) + /// Displays significant stock price points including the open, close, high, + /// and low price points. + static member Stock<'TX, 'TY1, 'TY2, 'TY3, 'TY4 when 'TY1 :> IConvertible and 'TY2 :> IConvertible and 'TY3 :> IConvertible and 'TY4 :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY1 * 'TY2 * 'TY3 * 'TY4)>, ?MaxPoints) = + GenericChart<_>.Create<StockChart>(fourXYObs (defaultArg MaxPoints -1) data) + + /// Displays a series of vertical boxes, or lines, that reflect + /// changes in price values. + static member ThreeLineBreak<'TY when 'TY :> IConvertible>(data: seq<'TY>) = + GenericChart<_>.Create<ThreeLineBreakChart>(oneY data) + /// Displays a series of vertical boxes, or lines, that reflect + /// changes in price values. + static member ThreeLineBreak<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(data:seq<'TX * ('TY)>) = + GenericChart<_>.Create<ThreeLineBreakChart>(oneXYSeq data) + /// Displays a series of vertical boxes, or lines, that reflect + /// changes in price values. + static member ThreeLineBreak<'TX, 'TY when 'TX :> IConvertible and 'TY :> IConvertible>(xvalues:seq<'TX>, yvalues: seq<'TY>) = + GenericChart<_>.Create<ThreeLineBreakChart>(oneXY xvalues yvalues) + /// Displays a series of vertical boxes, or lines, that reflect + /// changes in price values. + static member ThreeLineBreak<'TY when 'TY :> IConvertible>(data:IObservable<'TY>, ?MaxPoints) = + GenericChart<_>.Create<ThreeLineBreakChart>(oneYObs (defaultArg MaxPoints -1) data) + /// Displays a series of vertical boxes, or lines, that reflect + /// changes in price values. + static member ThreeLineBreak<'TX, 'TY when 'TY :> IConvertible and 'TX :> IConvertible>(data:IObservable<'TX * ('TY)>, ?MaxPoints) = + GenericChart<_>.Create<ThreeLineBreakChart>(oneXYObs (defaultArg MaxPoints -1) data) + + +// [/AUTOGENERATED] +// -------------------------------------------------------------------------------------- + + static member Rows charts = + SubplotChart(charts, Orientation.Vertical) + + static member Columns charts = + SubplotChart(charts, Orientation.Horizontal) + + static member Combine charts = + CombinedChart charts + +// ----------------------------------- +// Charting.ChartExtensions.fs +// ----------------------------------- +open ChartData +open ChartTypes + +[<AutoOpen>] +module ChartExtensions = + + type ChartForm<'TData when 'TData :> DataSource and 'TData : (new : unit -> 'TData)>(ch:GenericChart<'TData>) = + inherit Form() + + let ctrl = new ChartControl(ch, Dock = DockStyle.Fill) + do base.Controls.Add(ctrl) + + member x.ChartControl = ctrl + + type ChartFormUtilities() = + + static let createCounter() = + let count = ref 0 + (fun () -> incr count; !count) + + static let dict = new Dictionary<string, unit -> int>() + + static member ProvideTitle (chart:GenericChart) = + let defaultName = + match String.IsNullOrEmpty(chart.Name) with + | true -> + let chartType = + match int chart.ChartType with + | -1 -> "Combined" + | _ -> chart.ChartType.ToString() + chartType + " Chart" + | false -> chart.Name + + match dict.ContainsKey(defaultName) with + | true -> + sprintf "%s (%i)" defaultName (dict.[defaultName]()) + | false -> + dict.Add(defaultName, createCounter()) + defaultName + + type FSharpChart with + + static member Create<'TData when 'TData :> DataSource and 'TData : (new : unit -> 'TData)>(ch:GenericChart<'TData>) = + let ds = new 'TData() + let frm = new ChartForm<'TData>(ch, Visible = true, TopMost = true, Width = 700, Height = 500) + frm.Text <- ChartFormUtilities.ProvideTitle ch + ds.BindSeries(frm.ChartControl.ChartSeries) + ds + + static member WithCreate<'TData when 'TData :> DataSource and 'TData : (new : unit -> 'TData)>(ch:GenericChart<'TData>) = + FSharpChart.Create ch |> ignore + ch + + static member CopyToClipboard (chart:GenericChart) = + chart.CopyChartToClipboard() + + static member CopyToClipboardEmf (chart:GenericChart) = + chart.CopyChartToClipboardEmf(chart.Chart) + + static member SaveAs (filename : string) (format : ChartImageFormat) (chart : GenericChart) = + chart.SaveChartAs(filename, format) + +// ----------------------------------- +// Charting.ChartStyleExtensions.fs +// ----------------------------------- +open ChartFormUtilities +open ChartStyles +open ChartTypes + +[<AutoOpen>] +module ChartStyleExtensions = + + type AreaProperties() = + member area.AxisX<'T when 'T :> GenericChart>(?Enabled, ?LabelStyle, ?IsMarginVisible, ?Maximum, ?Minimum, ?MajorGrid, ?MinorGrid, ?MajorTickMark, ?MinorTickMark, ?Name) = + fun (ch:'T) -> + //ch.Area.AxisX <- new Axis(null, AxisName.X) + Enabled |> Option.iter ch.Area.AxisX.set_Enabled + LabelStyle |> Option.iter ch.Area.AxisX.set_LabelStyle + IsMarginVisible |> Option.iter ch.Area.AxisX.set_IsMarginVisible + Maximum |> Option.iter ch.Area.AxisX.set_Maximum + Minimum |> Option.iter ch.Area.AxisX.set_Minimum + MajorGrid |> Option.iter ch.Area.AxisX.set_MajorGrid + MinorGrid |> Option.iter ch.Area.AxisX.set_MinorGrid + MajorTickMark |> Option.iter ch.Area.AxisX.set_MajorTickMark + MinorTickMark |> Option.iter ch.Area.AxisX.set_MinorTickMark + Name |> Option.iter ch.Area.AxisX.set_Name + ch + + member area.AxisY<'T when 'T :> GenericChart>(?Enabled, ?LabelStyle, ?IsMarginVisible, ?Maximum, ?Minimum, ?MajorGrid, ?MinorGrid, ?MajorTickMark, ?MinorTickMark, ?Name) = + fun (ch:'T) -> + //ch.Area.AxisY <- new Axis(null, AxisName.Y) + Enabled |> Option.iter ch.Area.AxisY.set_Enabled + LabelStyle |> Option.iter ch.Area.AxisY.set_LabelStyle + IsMarginVisible |> Option.iter ch.Area.AxisY.set_IsMarginVisible + Maximum |> Option.iter ch.Area.AxisY.set_Maximum + Minimum |> Option.iter ch.Area.AxisY.set_Minimum + MajorGrid |> Option.iter ch.Area.AxisY.set_MajorGrid + MinorGrid |> Option.iter ch.Area.AxisY.set_MinorGrid + MajorTickMark |> Option.iter ch.Area.AxisY.set_MajorTickMark + MinorTickMark |> Option.iter ch.Area.AxisY.set_MinorTickMark + Name |> Option.iter ch.Area.AxisY.set_Name + ch + + member area.AxisX2<'T when 'T :> GenericChart>(?Enabled, ?LabelStyle, ?IsMarginVisible, ?Maximum, ?Minimum, ?MajorGrid, ?MinorGrid, ?MajorTickMark, ?MinorTickMark, ?Name) = + fun (ch:'T) -> + //ch.Area.AxisX <- new Axis(null, AxisName.X) + Enabled |> Option.iter ch.Area.AxisX2.set_Enabled + LabelStyle |> Option.iter ch.Area.AxisX2.set_LabelStyle + IsMarginVisible |> Option.iter ch.Area.AxisX2.set_IsMarginVisible + Maximum |> Option.iter ch.Area.AxisX2.set_Maximum + Minimum |> Option.iter ch.Area.AxisX2.set_Minimum + MajorGrid |> Option.iter ch.Area.AxisX2.set_MajorGrid + MinorGrid |> Option.iter ch.Area.AxisX2.set_MinorGrid + MajorTickMark |> Option.iter ch.Area.AxisX2.set_MajorTickMark + MinorTickMark |> Option.iter ch.Area.AxisX2.set_MinorTickMark + Name |> Option.iter ch.Area.AxisX2.set_Name + ch + + member area.AxisY2<'T when 'T :> GenericChart>(?Enabled, ?LabelStyle, ?IsMarginVisible, ?Maximum, ?Minimum, ?MajorGrid, ?MinorGrid, ?MajorTickMark, ?MinorTickMark, ?Name) = + fun (ch:'T) -> + //ch.Area.AxisY <- new Axis(null, AxisName.Y) + Enabled |> Option.iter ch.Area.AxisY2.set_Enabled + LabelStyle |> Option.iter ch.Area.AxisY2.set_LabelStyle + IsMarginVisible |> Option.iter ch.Area.AxisY2.set_IsMarginVisible + Maximum |> Option.iter ch.Area.AxisY2.set_Maximum + Minimum |> Option.iter ch.Area.AxisY2.set_Minimum + MajorGrid |> Option.iter ch.Area.AxisY2.set_MajorGrid + MinorGrid |> Option.iter ch.Area.AxisY2.set_MinorGrid + MajorTickMark |> Option.iter ch.Area.AxisY2.set_MajorTickMark + MinorTickMark |> Option.iter ch.Area.AxisY2.set_MinorTickMark + Name |> Option.iter ch.Area.AxisY2.set_Name + ch + + member area.Style<'T when 'T :> GenericChart> (?Background) = + fun (ch:'T) -> + Background |> Option.iter (applyBackground ch.Area) + ch + + member area.Name<'T when 'T :> GenericChart> (?Name) = + fun (ch:'T) -> + Name |> Option.iter ch.Area.set_Name + ch + + member area.Align<'T when 'T :> GenericChart> (?Area, ?Orientation, ?Style) = + fun (ch:'T) -> + Area |> Option.iter ch.Area.set_AlignWithChartArea + Style |> Option.iter ch.Area.set_AlignmentStyle + Orientation |> Option.iter ch.Area.set_AlignmentOrientation + ch + + member area.Area3DStyle<'T when 'T :> GenericChart> (?Enable3D, ?Inclination, ?IsClustered, ?IsRightAngleAxes, ?LightStyle, ?Perspective, ?PointDepth, ?PointGapDepth, ?Rotation, ?WallWidth) = + fun (ch:'T) -> + Enable3D |> Option.iter ch.Area.Area3DStyle.set_Enable3D + Inclination |> Option.iter ch.Area.Area3DStyle.set_Inclination + IsClustered |> Option.iter ch.Area.Area3DStyle.set_IsClustered + IsRightAngleAxes |> Option.iter ch.Area.Area3DStyle.set_IsRightAngleAxes + LightStyle |> Option.iter ch.Area.Area3DStyle.set_LightStyle + Perspective |> Option.iter ch.Area.Area3DStyle.set_Perspective + PointDepth |> Option.iter ch.Area.Area3DStyle.set_PointDepth + PointGapDepth |> Option.iter ch.Area.Area3DStyle.set_PointGapDepth + Rotation |> Option.iter ch.Area.Area3DStyle.set_Rotation + WallWidth |> Option.iter ch.Area.Area3DStyle.set_WallWidth + ch + + + type SeriesProperties() = + + member series.AxisType<'T when 'T :> GenericChart> (?YAxisType, ?XAxisType) = + fun (ch:'T) -> + YAxisType |> Option.iter ch.Series.set_YAxisType + XAxisType |> Option.iter ch.Series.set_XAxisType + ch + + member series.Style<'T when 'T :> GenericChart> (?Color, ?BorderColor, ?BorderWidth) = + fun (ch:'T) -> + Color |> Option.iter ch.Series.set_Color + BorderColor |> Option.iter ch.Series.set_BorderColor + BorderWidth |> Option.iter ch.Series.set_BorderWidth + ch + + member series.DataPoint<'T when 'T :> GenericChart> (?Label, ?LabelToolTip, ?ToolTip) = + fun (ch:'T) -> + Label |> Option.iter ch.Series.set_Label + LabelToolTip |> Option.iter ch.Series.set_LabelToolTip + ToolTip |> Option.iter ch.Series.set_ToolTip + ch + + + type FSharpChart with + static member WithArea = AreaProperties() + static member WithSeries = SeriesProperties() + + static member WithLegend<'T when 'T :> GenericChart>(?Title, ?Background, ?Font, ?Alignment, ?Docking, ?InsideArea) = + fun (ch:'T) -> + let legend = new Legend() + applyPropertyDefaults (ch.ChartType) legend + InsideArea |> Option.iter legend.set_IsDockedInsideChartArea + Background |> Option.iter (applyBackground legend) + Font |> Option.iter legend.set_Font + Alignment |> Option.iter legend.set_Alignment + Docking |> Option.iter legend.set_Docking + Title |> Option.iter legend.set_Title + ch.Legends.Add legend + ch + + static member WithMargin<'T when 'T :> GenericChart> (left, top, right, bottom) = + fun (ch:'T) -> + ch.Margin <- (left, top, right, bottom) + ch + + static member WithStyle<'T when 'T :> GenericChart> (?Background) = + fun (ch:'T) -> + Background |> Option.iter (applyBackground ch.Chart) + ch + + static member WithTitle<'T when 'T :> GenericChart> + ( ?Text, ?TextStyle, ?Font, ?Background, ?Color, + ?BorderColor, ?BorderWidth, ?BorderDashStyle, + ?TextOrientation, ?Alignment, ?Docking, ?InsideArea) = + fun (ch:'T) -> + let title = new Title() + applyPropertyDefaults (ch.ChartType) title + Text |> Option.iter title.set_Text + Color |> Option.iter title.set_ForeColor + BorderColor |> Option.iter title.set_BorderColor + BorderDashStyle |> Option.iter title.set_BorderDashStyle + BorderWidth |> Option.iter title.set_BorderWidth + TextStyle |> Option.iter title.set_TextStyle + TextOrientation |> Option.iter title.set_TextOrientation + InsideArea |> Option.iter title.set_IsDockedInsideChartArea + Background |> Option.iter (applyBackground title) + Font |> Option.iter title.set_Font + Alignment |> Option.iter title.set_Alignment + Docking |> Option.iter title.set_Docking + ch.Titles.Add title + ch + + type StyleHelper = + + static member private FontCreate(fName:string option, fFamily:FontFamily option, fStyle:FontStyle option, fSize:float32 option) = + let fontSize = + match fSize with + | Some(size) -> size + | None -> DefaultFont.Size + let fontStyle = + match fStyle with + | Some(style) -> style + | None -> DefaultFont.Style + let font = + match (fFamily, fName) with + | (Some(family), _) -> new Font(family, fontSize, fontStyle) + | (_, Some(name)) -> new Font(name, fontSize, fontStyle) + | (None, None) -> new Font(DefaultFont.FontFamily, fontSize, fontStyle) + font + + static member LabelStyle + ( ?Angle, ?Color, ?Format, ?Interval, ?IntervalOffset, ?IntervalOffsetType, ?IntervalType, ?IsEndLabelVisible, ?IsStaggered, ?TruncatedLabels, + ?FontName:string, ?FontFamily:FontFamily, ?FontStyle:FontStyle, ?FontSize:float32) = + let labelStyle = new System.Windows.Forms.DataVisualization.Charting.LabelStyle() + Angle |> Option.iter labelStyle.set_Angle + Color |> Option.iter labelStyle.set_ForeColor + Format |> Option.iter labelStyle.set_Format + Interval |> Option.iter labelStyle.set_Interval + IntervalOffset |> Option.iter labelStyle.set_IntervalOffset + IntervalOffsetType |> Option.iter labelStyle.set_IntervalOffsetType + IntervalType |> Option.iter labelStyle.set_IntervalType + IsStaggered |> Option.iter labelStyle.set_IsStaggered + TruncatedLabels |> Option.iter labelStyle.set_TruncatedLabels + if FontName.IsSome || FontFamily.IsSome || FontStyle.IsSome || FontSize.IsSome then + labelStyle.set_Font (StyleHelper.FontCreate(FontName, FontFamily, FontStyle, FontSize)) + labelStyle + + static member Legend + ( ?Title, ?Background, ?Alignment, ?Docking, ?InsideArea, + ?FontName:string, ?FontFamily:FontFamily, ?FontStyle:FontStyle, ?FontSize:float32) = + let legend = new Legend() + InsideArea |> Option.iter legend.set_IsDockedInsideChartArea + Background |> Option.iter (applyBackground legend) + Alignment |> Option.iter legend.set_Alignment + Docking |> Option.iter legend.set_Docking + Title |> Option.iter legend.set_Title + if FontName.IsSome || FontFamily.IsSome || FontStyle.IsSome || FontSize.IsSome then + legend.set_Font (StyleHelper.FontCreate(FontName, FontFamily, FontStyle, FontSize)) + legend + + static member Title + ( ?Text, ?TextStyle, ?Background, ?Color, ?BorderColor, ?BorderWidth, ?BorderDashStyle, + ?TextOrientation, ?Alignment, ?Docking, ?InsideArea, + ?FontName:string, ?FontFamily:FontFamily, ?FontStyle:FontStyle, ?FontSize:float32) = + let title = new Title() + Text |> Option.iter title.set_Text + Color |> Option.iter title.set_ForeColor + BorderColor |> Option.iter title.set_BorderColor + BorderDashStyle |> Option.iter title.set_BorderDashStyle + BorderWidth |> Option.iter title.set_BorderWidth + TextStyle |> Option.iter title.set_TextStyle + TextOrientation |> Option.iter title.set_TextOrientation + InsideArea |> Option.iter title.set_IsDockedInsideChartArea + Background |> Option.iter (applyBackground title) + Alignment |> Option.iter title.set_Alignment + Docking |> Option.iter title.set_Docking + if FontName.IsSome || FontFamily.IsSome || FontStyle.IsSome || FontSize.IsSome then + title.set_Font (StyleHelper.FontCreate(FontName, FontFamily, FontStyle, FontSize)) + title + + static member Font(?FamilyName:string, ?FontFamily:FontFamily, ?FontStyle:FontStyle, ?FontSize:float32) = + StyleHelper.FontCreate(FamilyName, FontFamily, FontStyle, FontSize) + + + +#if INTERACTIVE +module InstallFsiAutoDisplay = + fsi.AddPrinter(fun (ch:GenericChart) -> + let frm = new Form(Visible = true, TopMost = true, Width = 700, Height = 500) + let ctl = new ChartControl(ch, Dock = DockStyle.Fill) + frm.Text <- ChartFormUtilities.ProvideTitle ch + frm.Controls.Add(ctl) + frm.Show() + ctl.Focus() |> ignore + "(Chart)") +#endif diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/1 Samples.fsx b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/1 Samples.fsx new file mode 100755 index 0000000..e291bd9 --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/1 Samples.fsx @@ -0,0 +1,162 @@ +#r "references/OpenTK.dll" +#r "references/OpenTK.GLControl.dll" +#load "functional3d.fs" + +open Functional3D +open System.Drawing + +// ------------------------------------------------------------------ + +( Fun.color Color.Yellow Fun.cylinder ) $ +( Fun.cone + |> Fun.color Color.Red + |> Fun.translate (0.0, 0.0, -1.0) ) + +// ------------------------------------------------------------------ + +let tower x z = + (Fun.cylinder + |> Fun.scale (1.0, 1.0, 3.0) + |> Fun.translate (0.0, 0.0, 1.0) + |> Fun.color Color.DarkGoldenrod ) $ + (Fun.cone + |> Fun.scale (1.3, 1.3, 1.3) + |> Fun.translate (0.0, 0.0, -1.0) + |> Fun.color Color.Red ) + |> Fun.rotate (90.0, 0.0, 0.0) + |> Fun.translate (x, 0.5, z) + +// Create one tower +tower 0.0 0.0 + +// Now we can easily compose towers! +tower -2.0 0.0 $ tower 2.0 0.0 + +// ------------------------------------------------------------------ + +let sizedCube height = + Fun.cube + |> Fun.scale (0.5, height, 1.0) + |> Fun.translate (-0.5, height/2.0 - 1.0, 0.0) + +let twoCubes = + sizedCube 0.8 $ (sizedCube 1.0 |> Fun.translate (0.5, 0.0, 0.0)) + +let block = + [ for offset in -4.0 .. +4.0 -> + twoCubes |> Fun.translate (offset, 0.0, 0.0) ] + |> Seq.reduce ($) + |> Fun.scale (0.5, 2.0, 0.3) + |> Fun.color Color.DarkGray + +// ------------------------------------------------------------------ + +let wall offs rotate = + let rotationArg = if rotate then (0.0, 90.0, 0.0) else (0.0, 0.0, 0.0) + let translationArg = if rotate then (offs, 0.0, 0.0) else (0.0, 0.0, offs) + block |> Fun.rotate rotationArg |> Fun.translate translationArg + +tower -2.0 -2.0 $ tower 2.0 -2.0 $ + tower -2.0 2.0 $ tower 2.0 2.0 $ + wall -2.0 true $ wall 2.0 true $ + wall -2.0 false $ wall 2.0 false + + + + + + + + + + + + + + + + +// ------------------------------------------------------------------ +// Recursion +// ------------------------------------------------------------------ + +let pattern = + [| [| [| 1; 1; 1; |]; [| 1; 0; 1 |]; [| 1; 1; 1 |] |] + [| [| 1; 0; 1; |]; [| 0; 0; 0 |]; [| 1; 0; 1 |] |] + [| [| 1; 1; 1; |]; [| 1; 0; 1 |]; [| 1; 1; 1 |] |] |] + |> Array3D.fromCube + +let rec generate depth = + [ for x in -1 .. 1 do + for y in -1 .. 1 do + for z in -1 .. 1 do + if pattern.[x, y, z] = 1 then + let size = 3.0 ** float depth + let ofs = float x * size, float y * size, float z * size + let sub = if depth = 0 then Fun.cube + else generate (depth - 1) + yield Fun.translate ofs sub ] + |> List.reduce ($) + |> Fun.color Color.ForestGreen + +// Generate fractal with various level of detail + +Fun.setDistance(-20.0) + +generate 0 +generate 1 + +Fun.setDistance(-60.0) +generate 2 + +// ------------------------------------------------------------------ +// Trees are an example of recursive structure +// ------------------------------------------------------------------ + +let random = System.Random() + +let noise k x = + x + (k * x * (random.NextDouble() - 0.5)) + +let color() = + [| Color.Red; Color.Orange; + Color.Yellow |].[random.Next 3] + +let trunk (width,length) = + Fun.cylinder + |> Fun.translate (0.0,0.0,0.5) |> Fun.scale (width,width,length) + +let fruit (size) = + Fun.sphere + |> Fun.color (color()) |> Fun.scale (size,size,size) + +let example = trunk (1.0,5.0) $ fruit 2.0 + + +// Recursive tree +let rec tree trunkLength trunkWidth w n = + let moveToEndOfTrunk = Fun.translate (0.0,0.0,trunkLength) + if n <= 1 then + trunk (trunkWidth,trunkLength) $ // branch and end with + (fruit (3.0 * trunkWidth) |> moveToEndOfTrunk) // fruit + else + // generate branch + let branch angleX angleY = + let branchLength = trunkLength * 0.92 |> noise 0.2 // reduce length + let branchWidth = trunkWidth * 0.65 |> noise 0.2 // reduce width + tree branchLength branchWidth w (n-1) + |> Fun.rotate (angleX,angleY,0.0) |> moveToEndOfTrunk + + trunk (trunkWidth,trunkLength) // branch and follow by several + $ branch w 0.0 // smaller branches with rotation +/- w + $ branch -w 0.0 + $ branch 0.0 w + $ branch 0.0 -w + +let plant = + tree 4.0(*long*) 0.8(*wide*) 40.0(*angle*) 4(*levels*) + |> Fun.rotate (90.0, 180.0, 90.0) + |> Fun.translate (0.0, -6.0, 0.0) + + +Fun.resetRotation() diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/2 Puzzle.fsx b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/2 Puzzle.fsx new file mode 100755 index 0000000..98acf00 --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/2 Puzzle.fsx @@ -0,0 +1,152 @@ +#r "references/OpenTK.dll" +#r "references/OpenTK.GLControl.dll" +#load "functional3d.fs" + +open Functional3D +open System.Drawing + +// ------------------------------------------------------------------ +// Modelling the puzzle +// ------------------------------------------------------------------ + +type Color = Black | White +type Kind = Straight | Turn +type Part = Color * Kind + +type Position = int * int * int +type Direction = int * int * int + +type Shape = list<Part> + +// ------------------------------------------------------------------ +// Implementing the algorithm +// ------------------------------------------------------------------ + +/// Given 'Position' and 'Direction' calculate +/// a new position (by adding the offsets) +let move (x,y,z) (dx,dy,dz) = (x+dx, y+dy, z+dz) + +/// For a 'Turn' part oriented in the given 'Direction' +/// generate a list of possible next Directions +let offsets (dx, dy, dz) = + [ if dx = 0 then for i in [-1;1] do yield i, 0, 0 + if dy = 0 then for i in [-1;1] do yield 0, i, 0 + if dz = 0 then for i in [-1;1] do yield 0, 0, i ] + +/// Given a current 'Position' and 'Direction', get a list +/// of possible new Directions and corresponding Positions +let rotate position direction : list<Direction * Position> = + [ for offs in offsets direction -> + offs, move position offs ] + +// ------------------------------------------------------------------ +// Checking valid moves +// ------------------------------------------------------------------ + +/// A set of occupied positions +type CubeState = Set<Position> + +/// Expected colors for each position +let colorMap = + [ (0,0,0), Black; (0,0,1), White; + (0,1,0), White; (1,0,0), White; + (1,1,1), White; (1,1,0), Black; + (1,0,1), Black; (0,1,1), Black ] + |> dict + +/// Checks that the specified position is "inside" the +/// cube and there is no part already in that place +let isValidPosition position (state:CubeState) = + let x, y, z = position + let free = not (state.Contains(position)) + let inRange = + x >= 0 && y >= 0 && z >= 0 && + x <= 3 && y <= 3 && z <= 3 + free && inRange + +// ------------------------------------------------------------------ +// Generating moves +// ------------------------------------------------------------------ + +/// Given a current Position & Direction and current +/// Part, get a list of next Positions & Directions +let getPositions position direction part = + match part with + | (_, Straight) -> [ direction, move position direction ] + | (_, Turn) -> rotate position direction + +/// Get next valid positions (with directions) +let getValidPositions pos dir part state = + [ for dir, pos in getPositions pos dir part do + if isValidPosition pos state then yield dir, pos ] + +/// Recursive function that solves the puzzle using backtracking +let rec solve pos dir state trace (shape:Shape) = seq { + match shape, pos with + | [part], _ -> + // We have reached the end. Return the trace! + yield (List.rev trace) + | part::shape, (x,y,z) when fst part = colorMap.[x/2,y/2,z/2] -> + // Current part has the rigth color, get valid + // positions for the next part & try all of them + let moves = getValidPositions pos dir part state + for dir, pos in moves do + let trace = pos::trace + yield! solve pos dir (Set.add pos state) trace shape + | _ -> + // Current part does not have the right color + // (so we have to go back and try another layout) + () } + +// ------------------------------------------------------------------ +// Solving the puzzle +// ------------------------------------------------------------------ + +let puzzle : Shape = + // Lookup tables for different colors/kinds + let clrs = dict ['b', Black; 'w', White] + let kinds = dict ['s', Straight; 'r', Turn] + // Read the string and build a list of 'Part' values + ( "bbbwwwwwwwwbbbbwwwbbbbbbwwwbbwbbwbbwwwwwbbbbbbwbwwwbbbbwwwwwbbww", + "srssrrrrrrrrrrsrrssrrrrssrsrrrrrrsrsrrrrrrrrrsrrsrrsrrssrrrsrrss" ) + ||> Seq.map2 (fun clr kind -> clrs.[clr], kinds.[kind]) + |> List.ofSeq + +// Pick starting location +let start = (0, 0, 0) +// Run the 'solve' function +let res = solve start (0, 0, 1) (set [start]) [start] puzzle + +// Pick the first solution & print positions +let solution = Seq.head res +solution |> Seq.iteri (fun i p -> + printfn "%d - %A" (i+1) p) + +// ------------------------------------------------------------------ +// Building 3D visualization +// ------------------------------------------------------------------ + +/// Convert coordinate to float values +let fl (x,y,z) = (float x, float y, float z) + +/// Draw the first 'i' steps of the puzzle +let draw i = + solution + |> Seq.take i + |> Seq.map (fun ((x, y, z) as p) -> + // Get the expected color based on the color map + let color = + if colorMap.[x/2,y/2,z/2] = Black then + Color.SaddleBrown else Color.BurlyWood + // Create a coloured small cube & move it + Fun.cube + |> Fun.scale (0.95,0.95,0.95) + |> Fun.color color + |> Fun.translate (fl p) ) + |> Seq.reduce ($) + + +Async.StartImmediate <| async { + for i in 1 .. 64 do + do! Async.Sleep(200) + Fun.show (draw i) } diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/app.config b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/app.config new file mode 100755 index 0000000..f4aff65 --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/app.config @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<configuration> + <runtime> + <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> + <dependentAssembly> + <assemblyIdentity name="OpenTK" publicKeyToken="bad199fe84eb3df4" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" /> + </dependentAssembly> + </assemblyBinding> + </runtime> +</configuration> \ No newline at end of file diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/functional3d.fs b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/functional3d.fs new file mode 100755 index 0000000..9cac672 --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/functional3d.fs @@ -0,0 +1,425 @@ +// -------------------------------------------------------------------------------------- +// Composable functional 3D graphics library for education +// -------------------------------------------------------------------------------------- +// (c) Tomas Petricek (tomas@tomasp.net) +// Distributed under the open-source MS-PL license +// -------------------------------------------------------------------------------------- + +module Functional3D + +open System +open System.Drawing +open System.Windows.Forms +open System.Collections.Generic + +open OpenTK +open OpenTK.Graphics +open OpenTK.Graphics.OpenGL +open OpenTK.Input + +// -------------------------------------------------------------------------------------- +// Representing 3D objects +// -------------------------------------------------------------------------------------- + +/// Represents the context of the drawing (mainly color at the moment) +type Drawing3DContext = + { Color : Color4 } + +/// 3D object is represented as a function that draws it +type Drawing3D = DF of (Drawing3DContext -> unit) + +// -------------------------------------------------------------------------------------- +// Drawing form used to display the OpenGL content +// (supports rotations and zooming, works in F# interactive) +// -------------------------------------------------------------------------------------- + +type DrawingForm(?drawing:Drawing3D) as x = + inherit Form(ClientSize=Size(800, 600), Text="Functional 3D Drawing") + + let mutable drawing = defaultArg drawing (DF ignore) + let mutable lighting = (fun () -> + GL.Light(LightName.Light0, LightParameter.Ambient, [| 0.2f; 0.2f; 0.2f; 1.0f |]) + GL.Light(LightName.Light0, LightParameter.Diffuse, [| 1.0f; 1.0f; 1.0f; 1.0f |]) + GL.Light(LightName.Light0, LightParameter.Specular, [| 1.0f; 1.0f; 1.0f; 1.0f |]) + GL.Light(LightName.Light0, LightParameter.Position, [| 1.0f; 1.0f; 1.0f; 0.0f |]) + GL.Enable(EnableCap.Light0) + GL.Enable(EnableCap.Lighting) ) + + // ---------------------------------------------------------------------------------- + + let mutable cameraDistance = -10.0 + let mutable currentAngles = [| 0.0; 0.0; 0.0 |] + let mutable currentSpeeds = [| 0.0; 0.0; 0.0 |] + let loaded = ref false + + // ---------------------------------------------------------------------------------- + + let glControl = new GLControl(Dock = DockStyle.Fill) + + let redrawWindow() = + GL.Clear(ClearBufferMask.ColorBufferBit ||| ClearBufferMask.DepthBufferBit) + GL.MatrixMode(MatrixMode.Modelview) + + GL.LoadIdentity() + GL.Enable(EnableCap.Normalize) // scaling issue + + lighting() + GL.Translate(0., 0., cameraDistance) + GL.Rotate(30., 1., 0., 0.) + + GL.Rotate(currentAngles.[0], 1.0, 0.0, 0.0) + GL.Rotate(currentAngles.[1], 0.0, 1.0, 0.0) + GL.Rotate(currentAngles.[2], 0.0, 0.0, 1.0) + + let clr = Color.DarkOliveGreen + let conv n = float32 n / 255.0f + let ctx = { Color = Color4(conv clr.R, conv clr.G, conv clr.B, conv clr.A) } + let (DF f) = drawing + + GL.ShadeModel(ShadingModel.Smooth) + f(ctx) + + glControl.SwapBuffers() + + let setupViewPort() = + let w, h = glControl.ClientSize.Width, glControl.ClientSize.Height + GL.Viewport(0, 0, w, h) + let ratio = float32 w / float32 h + let mutable persp = Matrix4.CreatePerspectiveFieldOfView(float32 Math.PI / 4.0f, ratio, 1.0f, 64.0f) + GL.MatrixMode(MatrixMode.Projection) + GL.LoadMatrix(&persp) + + // ---------------------------------------------------------------------------------- + // Interaction and event handling - repeatedly refresh the form + // and implement zooming & rotation using win forms events + + do + let rec timer() = async { + do! Async.Sleep(10) + x.Invoke(Action(fun () -> + for i in 0 .. 2 do + currentAngles.[i] <- currentAngles.[i] + currentSpeeds.[i] + x.Refresh() )) |> ignore + return! timer() } + + x.Controls.Add(glControl) + x.Load.Add(fun _ -> + loaded := true + GL.ClearColor(Color.FromArgb(220, 225, 205)) + GL.Enable(EnableCap.DepthTest) + timer() |> Async.Start + x.Resize.Add(fun _ -> setupViewPort()) + setupViewPort() ) + + glControl.KeyPress + |> Event.add (fun ke -> + match ke.KeyChar with + | '-' | '_' -> x.CameraDistance <- x.CameraDistance - 1.0 + | '+' | '=' -> x.CameraDistance <- x.CameraDistance + 1.0 + | _ -> () ) + + glControl.KeyPress + |> Event.choose (fun ke -> + match ke.KeyChar with + | 'q' | 'Q' -> Some(0, -0.1) + | 'w' | 'W' -> Some(0, 0.1) + | 'a' | 'A' -> Some(1, -0.1) + | 's' | 'S' -> Some(1, 0.1) + | 'z' | 'Z' -> Some(2, -0.1) + | 'x' | 'X' -> Some(2, 0.1) + | _ -> None ) + |> Event.add (fun (idx, ofs) -> + currentSpeeds.[idx] <- currentSpeeds.[idx] + ofs ) + + glControl.Paint.Add(fun _ -> + if !loaded then redrawWindow() ) + + // ---------------------------------------------------------------------------------- + // Properties used to set displayed object & view properties + + member x.Drawing + with get() = drawing + and set(v) = + drawing <- v + glControl.Refresh() + + member x.Lighting + with set(v) = + lighting <- v + glControl.Refresh() + + member x.CameraDistance + with get() = cameraDistance + and set(v) = + cameraDistance <- v + glControl.Refresh() + + member x.ResetRotation() = + currentAngles <- [| 0.0; 0.0; 0.0 |] + currentSpeeds <- [| 0.0; 0.0; 0.0 |] + glControl.Refresh() + +// -------------------------------------------------------------------------------------- +// Helper functions and extension methods +// -------------------------------------------------------------------------------------- + +module Array3D = + /// Creates a 3D array from cube (represented as nested arrays) + /// The resulting array has indices from -x/2 to x/2 + let fromCube (data:int[][][]) = + let length = Seq.length data + let b = -length/2; + let res = Array.CreateInstance(typeof<int>, [| length; length; length |], [| b; b; b |]) + data |> Seq.iteri (fun x data -> + data |> Seq.iteri (fun y data -> + data |> Seq.iteri (fun z v -> + res.SetValue(v, [| x+b; y+b; z+b |]) ))) + (res :?> int[,,]) + +type GLEx = + /// Add multiple vertices to GL + static member Vertices vertices = + for (x:float32), y, z in vertices do + GL.Vertex3(x, y, z) + + /// Add mesh to the GL and set the specified normal vector first + static member Face (x:float32, y, z) vertices = + GL.Normal3(x, y, z) + GLEx.Vertices vertices + +// -------------------------------------------------------------------------------------- +// Representing and constructing 3D objects +// -------------------------------------------------------------------------------------- + +/// Composes two 3D objects by drawing both of them +let ($) (DF a) (DF b) = DF (fun ctx -> + a(ctx) + b(ctx) ) + +module Fun = + /// A constant that specifies the number of triangles in sphere or a cylinder + let mutable quality = 40 + + // ------------------------------------------------------------------------------------ + // Operations for composing and modifying 3D objects + + /// Scale the specified 3D object by the specified scales along the 3 axes + let scale (x:float, y, z) (DF f) = DF (fun ctx -> + GL.Scale(x, y, z) + f(ctx) + GL.Scale(1.0/x, 1.0/y, 1.0/z) ) + + /// Scale the specified 3D object by the specified scales along the 3 axes + let rotate (x:float, y, z) (DF f) = DF (fun ctx -> + GL.Rotate(x, 1.0, 0.0, 0.0) + GL.Rotate(y, 0.0, 1.0, 0.0) + GL.Rotate(z, 0.0, 0.0, 1.0) + f(ctx) + GL.Rotate(-x, 1.0, 0.0, 0.0) + GL.Rotate(-y, 0.0, 1.0, 0.0) + GL.Rotate(-z, 0.0, 0.0, 1.0) ) + + /// Move the specified object by the provided offsets + let translate (x:float, y:float, z:float) (DF f) = DF (fun ctx -> + GL.Translate(Vector3(float32 x, float32 y, float32 z)) + f(ctx) + GL.Translate(Vector3(float32 -x, float32 -y, float32 -z)) ) + + /// Set color to be used when drawing the specified 3D objects + let color (clr:Color) (DF f) = DF ( fun ctx -> + let conv n = float32 n / 255.0f + f { ctx with Color = Color4(conv clr.R, conv clr.G, conv clr.B, conv clr.A) }) + + + // ------------------------------------------------------------------------------------ + // Primitive 3D objects + + /// Creates an empty 3D object that doesn't show anything + let empty = DF ignore + + /// Creates a 3D cube of unit size using the current color + let cube = DF (fun ctx -> + GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Diffuse, ctx.Color) + GL.Begin(BeginMode.Quads) + GLEx.Face + (-1.f, 0.f, 0.f) + [ (-0.5f, -0.5f, -0.5f); (-0.5f, -0.5f, 0.5f); + (-0.5f, 0.5f, 0.5f); (-0.5f, 0.5f, -0.5f) ] + GLEx.Face + ( 1.f, 0.f, 0.f) + [ ( 0.5f, -0.5f, -0.5f); ( 0.5f, -0.5f, 0.5f); + ( 0.5f, 0.5f, 0.5f); ( 0.5f, 0.5f, -0.5f) ] + GLEx.Face + (0.f, -1.f, 0.f) + [ (-0.5f, -0.5f, -0.5f); (-0.5f, -0.5f, 0.5f); + ( 0.5f, -0.5f, 0.5f); ( 0.5f, -0.5f, -0.5f) ] + GLEx.Face + (0.f, 1.f, 0.f) + [ (-0.5f, 0.5f, -0.5f); (-0.5f, 0.5f, 0.5f); + ( 0.5f, 0.5f, 0.5f); ( 0.5f, 0.5f, -0.5f) ] + GLEx.Face + (0.f, 0.f, -1.f) + [ (-0.5f, -0.5f, -0.5f); (-0.5f, 0.5f, -0.5f); + ( 0.5f, 0.5f, -0.5f); ( 0.5f, -0.5f, -0.5f) ] + GLEx.Face + (0.f, 0.f, 1.f) + [ (-0.5f, -0.5f, 0.5f); (-0.5f, 0.5f, 0.5f); + ( 0.5f, 0.5f, 0.5f); ( 0.5f, -0.5f, 0.5f) ] + GL.End() ) + + + /// Generates a 3D cylinder object of a unit size + let cylinder = DF (fun ctx -> + GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Diffuse, ctx.Color) + GL.Begin(BeginMode.Triangles) + + // points that will be used for generating the circle + let q = float32 (Math.PI / (float quality / 2.0)) + let circlePoints = + [ for i in 0 .. quality -> + sin(float32 i * q) * 0.5f, cos(float32 i * q) * 0.5f ] + + // generate 3D points that form the coordinates of the circle + let borderCirlces = + [| for hy in [-0.5f; 0.5f] -> + [| for (x, y) in circlePoints -> Vector3(x, y, hy) |] |] + + // generate triangles forming the cylinder + for i in 0 .. quality - 1 do + // First triangle of the rounded part + GL.Normal3 (borderCirlces.[0].[i].X, borderCirlces.[0].[i].Y, 0.0f) + GL.Vertex3 borderCirlces.[0].[i] + GL.Normal3 (borderCirlces.[0].[i+1].X, borderCirlces.[0].[i+1].Y, 0.0f) + GL.Vertex3 borderCirlces.[0].[i+1] + GL.Vertex3 borderCirlces.[1].[i+1] + + // Second triangle of the rounded part + GL.Vertex3 borderCirlces.[1].[i+1] + GL.Normal3 (borderCirlces.[0].[i].X, borderCirlces.[0].[i].Y, 0.0f) + GL.Vertex3 borderCirlces.[1].[i] + GL.Vertex3 borderCirlces.[0].[i] + + // Triangle to form the lower side + GL.Normal3 (0.0, 0.0, -1.0) + GL.Vertex3 borderCirlces.[0].[i] + GL.Vertex3 borderCirlces.[0].[i+1] + GL.Vertex3 (0.0, 0.0, -0.5) + + // Triangle to form the upper side + GL.Normal3 (0.0, 0.0, 1.0) + GL.Vertex3 borderCirlces.[1].[i+1] + GL.Vertex3 borderCirlces.[1].[i] + GL.Vertex3 (0.0, 0.0, 0.5) + GL.End() ) + + /// Creates a 3D sphere with unit size + let sphere = DF (fun ctx -> + GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Diffuse, ctx.Color) + GL.Begin(BeginMode.Triangles) + + // points that will be used for generating the circle + let q = float32 (Math.PI / (float quality / 2.0)) + let circlePoints = + [ for i in 0 .. quality -> + sin(float32 i * q) * 0.5f, cos(float32 i * q) * 0.5f ] + + // points from the top to the bottom + let heightPoints = + [ for i in 0 .. quality -> + sin(float32 i * q) * 0.5f, cos(float32 i * q) * 0.5f ] + + // Array (along one dimension) of circles + let points = + [| for hx, hy in heightPoints -> + [| for x, y in circlePoints -> + Vector3(x * hx * 2.0f, y * hx * 2.0f, hy) |] |] + + /// Generate the sphere + for lat in 0 .. quality - 1 do + for i in 0 .. quality - 1 do + GL.Normal3 points.[lat].[i] + GL.Vertex3 points.[lat].[i] + GL.Normal3 points.[lat].[i+1] + GL.Vertex3 points.[lat].[i+1] + GL.Normal3 points.[lat+1].[i+1] + GL.Vertex3 points.[lat+1].[i+1] + + GL.Normal3 points.[lat+1].[i+1] + GL.Vertex3 points.[lat+1].[i+1] + GL.Normal3 points.[lat+1].[i] + GL.Vertex3 points.[lat+1].[i] + GL.Normal3 points.[lat].[i] + GL.Vertex3 points.[lat].[i] + GL.End() ) + + + /// Generates a 3D cylinder object of a unit size + let cone = DF (fun ctx -> + GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Diffuse, ctx.Color) + GL.Begin(BeginMode.Triangles) + + // points that will be used for generating the circle + let q = float32 (Math.PI / (float quality / 2.0)) + let circlePoints = + [| for i in 0 .. quality -> + Vector3(sin(float32 i * q) * 0.5f, cos(float32 i * q) * 0.5f, 0.5f) |] + + // generate triangles forming the cylinder + for i in 0 .. quality - 1 do + // First triangle of the rounded part + GL.Normal3 (circlePoints.[i].X, circlePoints.[i].Y, -0.25f) + GL.Vertex3 circlePoints.[i] + GL.Normal3 (circlePoints.[i+1].X, circlePoints.[i+1].Y, -0.25f) + GL.Vertex3 circlePoints.[i + 1] + GL.Normal3 (circlePoints.[i].X + circlePoints.[i+1].X / 2.0f, circlePoints.[i].Y + circlePoints.[i+1].Y / 2.0f, -0.25f) + GL.Vertex3 (0.0, 0.0, -0.5) + + /// Triangle to form the lower side + GL.Normal3 (0.0, 0.0, 1.0) + GL.Vertex3 circlePoints.[i] + GL.Vertex3 circlePoints.[i + 1] + GL.Vertex3 (0.0, 0.0, 0.5) + GL.End() ) + + // -------------------------------------------------------------------------------------- + // Provide easy way of displaying 3D objects + + let private createForm() = + lazy (new DrawingForm(Visible = false)) + + let mutable private lazyForm = createForm() + + /// Returns the currently displayed form + let getForm() = lazyForm.Value + + /// Gets the distance of camera from the object + let getDistance() = lazyForm.Value.CameraDistance + /// Sets the distance of camera from the object + let setDistance(v) = lazyForm.Value.CameraDistance <- v + + /// Resets the rotation properties of the view + let resetRotation() = + lazyForm.Value.ResetRotation() + + /// Display the specified 3D object on a form + let show drawing = + if lazyForm.Value.IsDisposed then + lazyForm <- createForm() + lazyForm.Value.Drawing <- drawing + lazyForm.Value.Visible <- true + +#if INTERACTIVE +do + fsi.AddPrinter(fun (d:Drawing3D) -> + Fun.show d + "(Displayed 3D object)" ) +#endif + +module FunEx = + let init() = + use control = new Control() + let hWnd = control.Handle + use windowInfo = OpenTK.Platform.Utilities.CreateWindowsWindowInfo( hWnd ) + use context = new GraphicsContext( GraphicsMode.Default, windowInfo ) + context.MakeCurrent( windowInfo ) + context.LoadAll() diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/references/OpenTK.GLControl.dll b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/references/OpenTK.GLControl.dll new file mode 100755 index 0000000..6038db5 Binary files /dev/null and b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/references/OpenTK.GLControl.dll differ diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/references/OpenTK.dll b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/references/OpenTK.dll new file mode 100755 index 0000000..afff0dd Binary files /dev/null and b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Functional3D/references/OpenTK.dll differ diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Markdown/1 Formatting.fsx b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Markdown/1 Formatting.fsx new file mode 100755 index 0000000..be80bca --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Markdown/1 Formatting.fsx @@ -0,0 +1,33 @@ +open System +open System.Windows.Forms + +// ------------------------------------------------------- +// Show HTML +// ------------------------------------------------------- + +let wb = new WebBrowser(Dock=DockStyle.Fill) +let frm = new Form(Width=800, Height=600, Visible=true) +frm.Controls.Add(wb) +let showHtml html = + wb.DocumentText <- "<html><body style='font:150% calibri'>" + html + "</body></html>" + +// ------------------------------------------------------- +// Formatting +// ------------------------------------------------------- + +let heading n text = + sprintf "<h%d>%s</h%d>" n text n +let strong text = + sprintf "<strong>%s</strong>" text +let p text = + sprintf "<p>%s</p>" text +let list items = + let lis = [ for i in items -> sprintf "<li>%s</li>" i ] + "<ul>" + (String.concat "" lis) + "</ul>" + +(heading 1 "Creating DSLs with F#") + +(p "Key components of a DSL:") + +(list [ + (strong "Model") + " describes the structure of the domain that we are modelling"; + (strong "Syntax") + " provides an easy way for solving problems using the DSL" ]) +|> showHtml diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Markdown/2 Processing.fsx b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Markdown/2 Processing.fsx new file mode 100755 index 0000000..70f7d8c --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Markdown/2 Processing.fsx @@ -0,0 +1,121 @@ +open System +open System.Windows.Forms + +// ------------------------------------------------------- +// Show HTML +// ------------------------------------------------------- + +let wb = new WebBrowser(Dock=DockStyle.Fill) +let frm = new Form(Width=800, Height=600, Visible=true) +frm.Controls.Add(wb) +let showHtml html = + wb.DocumentText <- """<html><style>body {padding:30px;font:150% cabin} + li {margin-top:10px}</style><body>""" + html + "</body></html>" + +// ------------------------------------------------------- +// Domain model +// ------------------------------------------------------- + +type MarkdownNode = + | Literal of string + | Strong of MarkdownNode + | Paragraph of MarkdownNode + | Heading of int * MarkdownNode + | List of MarkdownNode list + | Sequence of MarkdownNode list + +// ------------------------------------------------------- +// Formatting +// ------------------------------------------------------- + +let rec formatNode = function + | Literal s -> s + | Strong s -> sprintf "<strong>%s</strong> " (formatNode s) + | Paragraph p -> formatNode p + | Heading(n, p) -> sprintf "<h%d>%s</h%d>" n (formatNode p) n + | List items -> + let lis = [ for li in items -> sprintf "<li>%s</li>" (formatNode li) ] + "<ul>" + (String.concat "" lis) + "</ul>" + | Sequence nodes -> nodes |> List.map formatNode |> String.concat "" + +// ------------------------------------------------------- +// Sample document +// ------------------------------------------------------- + +let doc = + Sequence + [ Heading(1, Literal "Creating DSLs with F#") + Paragraph(Literal "Key components of a DSL:") + List( + [ Sequence + [ Strong (Literal "Model") + Literal " describes the structure of the domain that we are modelling"] + Sequence + [ Strong (Literal "Syntax") + Literal " provides an easy way for solving problems using the DSL" ] + ]) ] + +doc +|> formatNode +|> showHtml + +// ------------------------------------------------------- +// Building nicer syntax +// ------------------------------------------------------- + +let (!) s = Literal s +let ($) s1 s2 = Sequence [s1;s2] + +let doc2 = + Heading(1, !"Creating DSLs with F#") $ + Paragraph(!"Key components of a DSL:") $ + List( + [ Strong (!"Model") $ + Literal " describes the structure of the domain that we are modelling" + Strong (!"Syntax") $ + Literal " provides an easy way for solving problems using the DSL" ]) + +doc2 +|> formatNode +|> showHtml + +// ------------------------------------------------------- +// Translating documents +// ------------------------------------------------------- + +#r "../packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.dll" +open FSharp.Data + +[<Literal>] +let Sample = "http://mymemory.translated.net/api/get?q=hello&langpair=en%7Cno" + +// Request sample translation +Http.Request(Sample).Body + +// Generate types for translation API +type Translate = JsonProvider<Sample> + +let translate (phrase:string) = + printfn "Translating: '%s'" phrase + if String.IsNullOrWhiteSpace(phrase) then "" else + let phrase = phrase.Replace("F#", "fsharp") + let doc = Translate.Load("http://mymemory.translated.net/api/get?langpair=en|no&de=tomas@tomasp.net&q=" + phrase) + let phrase = doc.Matches.[0].Translation + phrase.Replace("fsharp", "F#") + +translate "world" +translate "describes the structure of the domain that we are modelling" + +// Recursive function to translate documents +let rec translateNode = function + | Literal text -> Literal (translate text) + | Strong s -> Strong(translateNode s) + | Heading(n, s) -> Heading(n, translateNode s) + | List li -> List (List.map translateNode li) + | Paragraph p -> Paragraph(translateNode p) + | Sequence p -> Sequence (List.map translateNode p) + +doc +|> translateNode +|> formatNode +|> showHtml diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Markdown/3 Parsing.fsx b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Markdown/3 Parsing.fsx new file mode 100755 index 0000000..c4f3b3f --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Markdown/3 Parsing.fsx @@ -0,0 +1,226 @@ +open System +open System.Windows.Forms + +// ------------------------------------------------------- +// Show HTML +// ------------------------------------------------------- + +let wb = new WebBrowser(Dock=DockStyle.Fill) +let frm = new Form(Width=800, Height=600, Visible=true) +frm.Controls.Add(wb) +let showHtml html = + wb.DocumentText <- """<html><style>body {padding:30px;font:150% cabin} + li {margin-top:10px}</style><body>""" + html + "</body></html>" + +// ------------------------------------------------------- +// Domain model +// ------------------------------------------------------- + +type MarkdownNode = + | Literal of string + | Strong of MarkdownNode + | Paragraph of MarkdownNode + | Heading of int * MarkdownNode + | List of MarkdownNode list + | Sequence of MarkdownNode list + +// ------------------------------------------------------- +// Formatting +// ------------------------------------------------------- + +let rec formatNode = function + | Literal s -> s + | Strong s -> sprintf "<strong>%s</strong> " (formatNode s) + | Paragraph p -> formatNode p + | Heading(n, p) -> sprintf "<h%d>%s</h%d>" n (formatNode p) n + | List items -> + let lis = [ for li in items -> sprintf "<li>%s</li>" (formatNode li) ] + "<ul>" + (String.concat "" lis) + "</ul>" + | Sequence nodes -> nodes |> List.map formatNode |> String.concat "" + +// ------------------------------------------------------- +// Translating documents +// ------------------------------------------------------- + +#r "../packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.dll" +open FSharp.Data + +[<Literal>] +let Sample = "http://mymemory.translated.net/api/get?q=hello&langpair=en%7Cno" + +// Generate types for translation API +type Translate = JsonProvider<Sample> + +let translate (phrase:string) = + printfn "Translating: '%s'" phrase + if String.IsNullOrWhiteSpace(phrase) then "" else + let phrase = phrase.Replace("F#", "fsharp") + let doc = Translate.Load("http://mymemory.translated.net/api/get?langpair=en|no&de=tomas@tomasp.net&q=" + phrase) + let phrase = doc.Matches.[0].Translation + phrase.Replace("fsharp", "F#") + +// Recursive function to translate documents +let rec translateNode = function + | Literal text -> Literal (translate text) + | Strong s -> Strong(translateNode s) + | Heading(n, s) -> Heading(n, translateNode s) + | List li -> List (List.map translateNode li) + | Paragraph p -> Paragraph(translateNode p) + | Sequence p -> Sequence (List.map translateNode p) + +// ------------------------------------------------------- +// Active patterns for parsing +// ------------------------------------------------------- + +let toString chars = + System.String(chars |> Array.ofList) + +let (|StartsWith|_|) prefix list = + let rec loop = function + | [], rest -> Some(rest) + | p::prefix, r::rest when p = r -> loop (prefix, rest) + | _ -> None + loop (prefix, list) + +let rec parseBracketedBody closing acc = function + | StartsWith closing (rest) -> Some(List.rev acc, rest) + | c::chars -> parseBracketedBody closing (c::acc) chars + | _ -> None + +let (|Delimited|_|) delim = function + | StartsWith delim chars -> parseBracketedBody delim [] chars + | _ -> None + +// ------------------------------------------------------- +// Parsing spans +// ------------------------------------------------------- + +let rec parseSpans acc chars = seq { + let emitLiteral() = seq { + if acc <> [] then + yield acc |> List.rev |> toString |> Literal } + match chars with + | Delimited ['*'; '*' ] (body, chars) -> + yield! emitLiteral () + yield Strong(Sequence(parseSpans [] body |> List.ofSeq)) + yield! parseSpans [] chars + | c::chars -> + yield! parseSpans (c::acc) chars + | [] -> + yield! emitLiteral () } + +// ------------------------------------------------------- +// Helper functions & patterns +// ------------------------------------------------------- + +module List = + let partitionWhile f = + let rec loop acc = function + | x::xs when f x -> loop (x::acc) xs + | xs -> List.rev acc, xs + loop [] + +let (|LineSeparated|) lines = + let isWhite = System.String.IsNullOrWhiteSpace + match lines |> List.partitionWhile (isWhite >> not) with + | par, _::rest | par, ([] as rest) -> par, rest + +let (|AsCharList|) (str:string) = + str |> List.ofSeq + +let (|PrefixedLines|) prefix (lines:list<string>) = + let prefixed, other = lines |> List.partitionWhile (fun line -> line.StartsWith(prefix)) + [ for line in prefixed -> line.Substring(prefix.Length) ], other + +// ------------------------------------------------------- +// Parsing Markdown blocks +// ------------------------------------------------------- + +let rec parseBlocks lines = seq { + match lines with + | AsCharList(StartsWith ['#'; ' '] heading)::rest -> + yield Heading(1, Sequence(parseSpans [] heading |> List.ofSeq)) + yield! parseBlocks rest + | LineSeparated (h::tl, rest) when h.StartsWith(" *") -> + let body = String.concat " " (h.Substring(2)::tl) |> List.ofSeq + let list, rest = + parseBlocks rest |> List.ofSeq + |> List.partitionWhile (function List _ -> true | _ -> false) + yield List [ + yield Sequence(parseSpans [] body |> List.ofSeq) + for List l in list do yield! l ] + yield! rest + | LineSeparated (body, rest) when body <> [] -> + let body = String.concat " " body |> List.ofSeq + yield Paragraph(Sequence(parseSpans [] body |> List.ofSeq)) + yield! parseBlocks rest + | line::rest when System.String.IsNullOrWhiteSpace(line) -> + yield! parseBlocks rest + | _ -> () } + +let parseMarkdown (sample:string) = + Sequence(parseBlocks (sample.Split('\r', '\n') |> List.ofSeq) |> List.ofSeq) + +// ------------------------------------------------------- +// Samples +// ------------------------------------------------------- + +let sample = """ +# Creating DSLs with F# + +Key components of a DSL: + + * **Model** describes the + structure of the domain + that we are modelling + + * **Syntax** provides an easy + way for solving problems + using the DSL +""" + +sample +|> parseMarkdown +|> translateNode +|> formatNode +|> showHtml + + +let oslo = """ +# Buildings and structures + +Architecture in Oslo may at first seem dull. Unlike for +instance its Swedish counterpart, Stockholm, downtown Oslo +has only scattered monumental buildings where in particular +the Parliament-Palace axis (upper part of Karl Johan Street) +has a certain Parisian grandeur. The charm of Oslo can also +be found in the affluent inner-city suburbs of for instance +Frogner and Fagerborg as well as above St.Hanshaugen park. + + * **Royal Palace** - Tours inside the palace are arranged + in summertime, this year from June 21. The tickets for the + tour must be bought in advance from a post office. + + * **University in Oslo** - The building is currently only + housing the Faculty of Law, the rest of the university is + situated at Blindern. Occasional concerts will be arranged in + the magnificent Universitetets Aula, housing 11 of Edvard + Munch's pictures. + + * **Opera House** - Norway's first entry into the top league + of modern architecture. Awarded the 2008 prize for best + cultural building at the World Architecture Festival in Barcelona, + and the prestigious Mies van der Rohe award for best European + contemporary architecture in 2009, its appearance is stunning. +""" + + +let res = + oslo + |> parseMarkdown + |> translateNode + +res +|> formatNode +|> showHtml + diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Samples.sln b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Samples.sln new file mode 100755 index 0000000..242646b --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/Samples.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3 Classifiers", "3 Classifiers", "{9020E4E5-A368-477D-9DD8-98D97AF8C71C}" + ProjectSection(SolutionItems) = preProject + Classifiers\1 Pricing.fsx = Classifiers\1 Pricing.fsx + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "1 Functional 3D", "1 Functional 3D", "{97B3B763-2B9B-4A47-9BD7-0729E13D3CE4}" + ProjectSection(SolutionItems) = preProject + Functional3D\1 Samples.fsx = Functional3D\1 Samples.fsx + Functional3D\2 Puzzle.fsx = Functional3D\2 Puzzle.fsx + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2 Markdown", "2 Markdown", "{B2BC6183-675E-483E-96CF-A140404903AF}" + ProjectSection(SolutionItems) = preProject + Markdown\1 Formatting.fsx = Markdown\1 Formatting.fsx + Markdown\2 Processing.fsx = Markdown\2 Processing.fsx + Markdown\3 Parsing.fsx = Markdown\3 Parsing.fsx + EndProjectSection +EndProject +Global + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages.config b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages.config new file mode 100755 index 0000000..b747bfc --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages.config @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="FSharp.Data" version="2.0.8" targetFramework="net40-Client" /> +</packages> \ No newline at end of file diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.DesignTime.dll b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.DesignTime.dll new file mode 100755 index 0000000..fca7289 Binary files /dev/null and b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.DesignTime.dll differ diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.DesignTime.pdb b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.DesignTime.pdb new file mode 100755 index 0000000..d4026f6 Binary files /dev/null and b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.DesignTime.pdb differ diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.DesignTime.xml b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.DesignTime.xml new file mode 100755 index 0000000..125e6a6 --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.DesignTime.xml @@ -0,0 +1,6155 @@ +<?xml version="1.0" encoding="utf-8"?> +<doc> +<assembly><name>FSharp.Data.DesignTime</name></assembly> +<members> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.CsvFile.Parse(System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Parses the specified CSV content +</summary> +</member> +<member name="M:FSharp.Data.CsvFile.Load(System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Loads CSV from the specified uri +</summary> +</member> +<member name="M:FSharp.Data.CsvFile.Load(System.IO.TextReader,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Loads CSV from the specified reader +</summary> +</member> +<member name="M:FSharp.Data.CsvFile.Load(System.IO.Stream,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Loads CSV from the specified stream +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.CsvFile.AsyncLoad(System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Loads CSV from the specified uri asynchronously +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.CsvFile"> +<summary> + Represents a CSV file. The lines are read on demand from `reader`. + Columns are delimited by one of the chars passed by `separators` (defaults to just `,`), and + to escape the separator chars, the `quote` character will be used (defaults to `"`). + If `hasHeaders` is true (the default), the first line read by `reader` will not be considered part of data. + If `ignoreErrors` is true (the default is false), rows with a different number of columns from the header row + (or the first row if headers are not present) will be ignored. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.CsvRow.Item(System.String)"> +<summary> + Gets a column by name +</summary> +</member> +<member name="P:FSharp.Data.CsvRow.Item(System.Int32)"> +<summary> + Gets a column by index +</summary> +</member> +<member name="P:FSharp.Data.CsvRow.Columns"> +<summary> + The columns of the row +</summary> +</member> +<member name="M:FSharp.Data.CsvRow.GetColumn(System.String)"> +<summary> + Gets a column by name +</summary> +</member> +<member name="M:FSharp.Data.CsvRow.GetColumn(System.Int32)"> +<summary> + Gets a column by index +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.CsvRow"> +<summary> + Represents a CSV row. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Http.RequestString(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL synchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name="M:FSharp.Data.Http.RequestStream(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL synchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name="M:FSharp.Data.Http.Request(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL synchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Http.AsyncRequestString(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL asynchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name="M:FSharp.Data.Http.AsyncRequestStream(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL synchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name="M:FSharp.Data.Http.AsyncRequest(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL asynchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name="M:FSharp.Data.Http.AppendQueryToUrl(System.String,Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}})"> +<summary> + Appends the query parameters to the url, taking care of proper escaping +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Http"> +<summary> + Utilities for working with network via HTTP. Includes methods for downloading + resources with specified headers, query parameters and HTTP body +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.HttpRequestBody"> +<summary> + The body to send in an HTTP request +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.HttpResponse"> +<summary> + The response returned by an HTTP request +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.HttpResponseBody"> +<summary> + The response body returned by an HTTP request +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.HttpResponseWithStream"> +<summary> + The response returned by an HTTP request with direct access to the response stream +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.TryGetProperty(FSharp.Data.JsonValue,System.String)"> +<summary> + Try to get a property of a JSON value. + Returns None if the value is not an object or if the property is not present. +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.Properties(FSharp.Data.JsonValue)"> +<summary> + Get a sequence of key-value pairs representing the properties of an object +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.Item(FSharp.Data.JsonValue,System.Int32)"> +<summary> + Try to get the value at the specified index, if the value is a JSON array. +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.Item(FSharp.Data.JsonValue,System.String)"> +<summary> + Assuming the value is an object, get value with the specified name +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.InnerText(FSharp.Data.JsonValue)"> +<summary> + Get inner text of an element +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.GetProperty(FSharp.Data.JsonValue,System.String)"> +<summary> + Get property of a JSON object. Fails if the value is not an object + or if the property is not present +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.GetEnumerator(FSharp.Data.JsonValue)"> +<summary> + Get all the elements of a JSON value (assuming that the value is an array) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsString(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get the string value of an element (assuming that the value is a scalar) + Returns the empty string for JsonValue.Null +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsInteger64(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get a number as a 64-bit integer (assuming that the value fits in 64-bit integer) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsInteger(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get a number as an integer (assuming that the value fits in integer) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsGuid(FSharp.Data.JsonValue)"> +<summary> + Get the guid value of an element (assuming that the value is a guid) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsFloat(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo},Microsoft.FSharp.Core.FSharpOption{System.String[]})"> +<summary> + Get a number as a float (assuming that the value is convertible to a float) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsDecimal(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get a number as a decimal (assuming that the value fits in decimal) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsDateTime(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get the datetime value of an element (assuming that the value is a string + containing well-formed ISO date or MSFT JSON date) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsBoolean(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get the boolean value of an element (assuming that the value is a boolean) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsArray(FSharp.Data.JsonValue)"> +<summary> + Get all the elements of a JSON value. + Returns an empty array if the value is not a JSON array. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="F:FSharp.Data.JsonSaveOptions.DisableFormatting"> +<summary> + Print the JsonValue in one line in a compact way +</summary> +</member> +<member name="F:FSharp.Data.JsonSaveOptions.None"> +<summary> + Format (indent) the JsonValue +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.JsonSaveOptions"> +<summary> + Specifies the formatting behaviour of JSON values +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.JsonValue.RequestAsync(System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}})"> +<summary> + Sends the JSON to the specified uri. Defaults to a POST request. +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.Request(System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}})"> +<summary> + Sends the JSON to the specified uri. Defaults to a POST request. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.JsonValue.ParseSample(System.String,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Parses the specified JSON string, tolerating invalid errors like trailing commans, and ignore content with elipsis ... or {...} +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.ParseMultiple(System.String,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Parses the specified string into multiple JSON values +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.Parse(System.String,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Parses the specified JSON string +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.Load(System.String,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Loads JSON from the specified uri +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.Load(System.IO.TextReader,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Loads JSON from the specified reader +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.Load(System.IO.Stream,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Loads JSON from the specified stream +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.AsyncLoad(System.String,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Loads JSON from the specified uri asynchronously +</summary> +</member> +<member name="T:FSharp.Data.JsonValue"> +<summary> + Represents a JSON value. Large numbers that do not fit in the + Decimal type are represented using the Float case, while + smaller numbers are represented as decimals to avoid precision loss. +</summary> +</member> +<member name="M:FSharp.Data.CsvExtensionsModule.op_Dynamic(FSharp.Data.CsvRow,System.String)"> +<summary> + Get column of a CsvRow +</summary> +</member> +<member name="T:FSharp.Data.CsvExtensionsModule"> + +</member> +<member name="M:FSharp.Data.FreebaseOperators.Where``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})"> +<summary> + Synonym for LINQ's Where + Included so you don't have to open System.LINQ to use the queries +</summary> +</member> +<member name="M:FSharp.Data.FreebaseOperators.Count``1(System.Linq.IQueryable{``0})"> +<summary> + Synonym for LINQ's Count + Included so you don't have to open System.LINQ to use the queries +</summary> +</member> +<member name="M:FSharp.Data.FreebaseOperators.ApproximateCount``1(System.Linq.IQueryable{``0})"> +<summary> + A Freebase query operation returning an approximate count of the items satisfying a query. +</summary> +</member> +<member name="M:FSharp.Data.FreebaseOperators.ApproximatelyOneOf(System.String,System.String[])"> +<summary> + A Freebase query operation that represents approximately matching one of the given strings. See http://www.freebase.com/docs/mql/ch03.html#directives. +</summary> +</member> +<member name="M:FSharp.Data.FreebaseOperators.ApproximatelyMatches(System.String,System.String)"> +<summary> + A Freebase query operation that represents a perl-style match of a string, e.g. "book club", "book*", "*book", "*book*", "^book", "book$", "* book *", "book-club", "book\-club". See http://www.freebase.com/docs/mql/ch03.html#directives. +</summary> +</member> +<member name="T:FSharp.Data.FreebaseOperators"> +<summary> + Extension members for operations permitted in queries of the Freebase service +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Helpers.asyncRead(System.IO.Stream)"> +<summary> + consumes a stream asynchronously until the end + and returns a memory stream with the full content +</summary> +</member> +<member name="T:FSharp.Data.Helpers"> + +</member> +<member name="P:FSharp.Data.HttpContentTypes.Csv"> +<summary> + text/csv +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Soap"> +<summary> + application/soap+xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.XHtml"> +<summary> + application/xhtml+xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Html"> +<summary> + text/html +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Rdf"> +<summary> + application/rdf+xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Atom"> +<summary> + application/atom+xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Rss"> +<summary> + application/rss+xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Xml"> +<summary> + application/xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.JavaScript"> +<summary> + application/javascript +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Json"> +<summary> + application/json +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.FormValues"> +<summary> + application/x-www-form-urlencoded +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.GZip"> +<summary> + application/octet-stream +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Zip"> +<summary> + application/octet-stream +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Binary"> +<summary> + application/octet-stream +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Text"> +<summary> + plain/text +</summary> +</member> +<member name="T:FSharp.Data.HttpContentTypes"> +<summary> + Constants for common HTTP content types +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.HttpEncodings"> + +</member> +<member name="P:FSharp.Data.HttpMethod.Connect"> +<summary> + Reserved for use with a proxy that can dynamically switch to being a tunnel +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Trace"> +<summary> + Used to invoke a remote, application-layer loop- back of the request message +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Delete"> +<summary> + Requests that the origin server deletes the resource identified by the Request-URI +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Put"> +<summary> + Requests that the enclosed entity be stored under the supplied Request-URI +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Post"> +<summary> + Requests that the server accepts the entity enclosed in the request as a + new subordinate of the resource identified by the Request-URI in the Request-Line +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Head"> +<summary> + Identical to GET except that the server MUST NOT return a message-body in the response +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Get"> +<summary> + Retrieve whatever information (in the form of an entity) is identified by the URI +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Options"> +<summary> + Request information about the communication options available on the request/response chain identified by the URI +</summary> +</member> +<member name="T:FSharp.Data.HttpMethod"> +<summary> + The method to use in an HTTP request +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.XHTTPMethodOverride(System.String)"> +<summary> + Override HTTP method. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Warning(System.String)"> +<summary> + A general warning about possible problems with the entity body +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Via(System.String)"> +<summary> + Informs the server of proxies through which the request was sent +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.UserAgent(System.String)"> +<summary> + The user agent string of the user agent +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Upgrade(System.String)"> +<summary> + Specifies additional communications protocols that the client supports. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Translate(System.String)"> +<summary> + Microsoft extension to the HTTP specification used in conjunction with WebDAV functionality. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Trailer(System.String)"> +<summary> + The Trailer general field value indicates that the given set of header fields is present in the trailer of a message encoded with chunked transfer-coding +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.TE(System.String)"> +<summary> + The transfer encodings the user agent is willing to accept: the same values as for the response header + Transfer-Encoding can be used, plus the "trailers" value (related to the "chunked" transfer method) to + notify the server it expects to receive additional headers (the trailers) after the last, zero-sized, chunk. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Referer(System.String)"> +<summary> + This is the address of the previous web page from which a link to the currently requested page was followed. (The word "referrer" is misspelled in the RFC as well as in most implementations.) +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Range(System.Int64,System.Int64)"> +<summary> + Request only part of an entity. Bytes are numbered from 0 +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ProxyAuthorization(System.String)"> +<summary> + Authorization credentials for connecting to a proxy. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Pragma(System.String)"> +<summary> + Implementation-specific headers that may have various effects anywhere along the request-response chain. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Origin(System.String)"> +<summary> + Initiates a request for cross-origin resource sharing (asks server for an 'Access-Control-Allow-Origin' response header) +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.MaxForwards(System.Int32)"> +<summary> + Limit the number of times the message can be forwarded through proxies or gateways +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.LastModified(System.DateTime)"> +<summary> + Specifies the date and time at which the accompanying body data was last modified +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.KeepAlive(System.String)"> +<summary> + Specifies a parameter used into order to maintain a persistent connection +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.IfUnmodifiedSince(System.DateTime)"> +<summary> + Only send the response if the entity has not been modified since a specific time +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.IfRange(System.String)"> +<summary> + If the entity is unchanged, send me the part(s) that I am missing; otherwise, send me the entire new entity +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.IfNoneMatch(System.String)"> +<summary> + Allows a 304 Not Modified to be returned if content is unchanged +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.IfModifiedSince(System.DateTime)"> +<summary> + Allows a 304 Not Modified to be returned if content is unchanged +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.IfMatch(System.String)"> +<summary> + Only perform the action if the client supplied entity matches the same entity on the server. + This is mainly for methods like PUT to only update a resource if it has not been modified since the user last updated it. If-Match: "737060cd8c284d8af7ad3082f209582d" Permanent +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Host(System.String)"> +<summary> + The domain name of the server (for virtual hosting), and the TCP port number on which the server is listening. + The port number may be omitted if the port is the standard port for the service requested. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.From(System.String)"> +<summary> + The email address of the user making the request +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Expires(System.DateTime)"> +<summary> + Gives the date/time after which the response is considered stale +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Expect(System.String)"> +<summary> + Indicates that particular server behaviors are required by the client +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Date(System.DateTime)"> +<summary> + The date and time that the message was sent +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentType(System.String)"> +<summary> + The MIME type of the body of the request (used with POST and PUT requests) +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentRange(System.String)"> +<summary> + Where in a full body message this partial message belongs +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentMD5(System.String)"> +<summary> + A Base64-encoded binary MD5 sum of the content of the request body +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentLocation(System.String)"> +<summary> + An alternate location for the returned data +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentLanguage(System.String)"> +<summary> + The language the content is in +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentEncoding(System.String)"> +<summary> + The type of encoding used on the data +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Connection(System.String)"> +<summary> + What type of connection the user-agent would prefer +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.CacheControl(System.String)"> +<summary> + Used to specify directives that MUST be obeyed by all caching mechanisms along the request/response chain +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Authorization(System.String)"> +<summary> + Authentication credentials for HTTP authentication +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Allow(System.String)"> +<summary> + The Allow header, which specifies the set of HTTP methods supported. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.AcceptLanguage(System.String)"> +<summary> + List of acceptable human languages for response +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.AcceptEncoding(System.String)"> +<summary> + List of acceptable encodings. See HTTP compression. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.AcceptDatetime(System.DateTime)"> +<summary> + Acceptable version in time +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.AcceptCharset(System.String)"> +<summary> + Character sets that are acceptable +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Accept(System.String)"> +<summary> + Content-Types that are acceptable for the response +</summary> +</member> +<member name="T:FSharp.Data.HttpRequestHeaders"> +<summary> + Header to send in an HTTP request +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.WWWAuthenticate"> +<summary> + Indicates the authentication scheme that should be used to access the requested entity. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Warning"> +<summary> + A general warning about possible problems with the entity body. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Via"> +<summary> + Informs the client of proxies through which the response was sent. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Vary"> +<summary> + Tells downstream proxies how to match future request headers to decide whether the cached response can be used rather than requesting a fresh one from the origin server. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.TransferEncoding"> +<summary> + The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Trailer"> +<summary> + The Trailer general field value indicates that the given set of header fields is present in the trailer of a message encoded with chunked transfer-coding. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.StrictTransportSecurity"> +<summary> + A HSTS Policy informing the HTTP client how long to cache the HTTPS only policy and whether this applies to subdomains. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Status"> +<summary> + The HTTP status of the response +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.SetCookie"> +<summary> + An HTTP cookie +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Server"> +<summary> + A name for the server +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.RetryAfter"> +<summary> + If an entity is temporarily unavailable, this instructs the client to try again later. Value could be a specified period of time (in seconds) or a HTTP-date.[28] +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Refresh"> +<summary> + Used in redirection, or when a new resource has been created. This refresh redirects after 5 seconds. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ProxyAuthenticate"> +<summary> + Request authentication to access the proxy. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Pragma"> +<summary> + Implementation-specific headers that may have various effects anywhere along the request-response chain. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.P3P"> +<summary> + This header is supposed to set P3P policy +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Location"> +<summary> + Used in redirection, or when a new resource has been created. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Link"> +<summary> + Used to express a typed relationship with another resource, where the relation type is defined by RFC 5988 +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.LastModified"> +<summary> + The last modified date for the requested object +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Expires"> +<summary> + Gives the date/time after which the response is considered stale +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ETag"> +<summary> + An identifier for a specific version of a resource, often a message digest +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Date"> +<summary> + The date and time that the message was sent (in "HTTP-date" format as defined by RFC 2616) +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentType"> +<summary> + The MIME type of this content +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentRange"> +<summary> + Where in a full body message this partial message belongs +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentDisposition"> +<summary> + An opportunity to raise a "File Download" dialogue box for a known MIME type with binary format or suggest a filename for dynamic content. Quotes are necessary with special characters. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentMD5"> +<summary> + A Base64-encoded binary MD5 sum of the content of the response +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentLocation"> +<summary> + An alternate location for the returned data +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentLength"> +<summary> + The length of the response body in octets (8-bit bytes) +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentLanguage"> +<summary> + The language the content is in +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentEncoding"> +<summary> + The type of encoding used on the data. See HTTP compression. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Connection"> +<summary> + Options that are desired for the connection +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.CacheControl"> +<summary> + Tells all caching mechanisms from server to client whether they may cache this object. It is measured in seconds +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Allow"> +<summary> + Valid actions for a specified resource. To be used for a 405 Method not allowed +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Age"> +<summary> + The age the object has been in a proxy cache in seconds +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.AcceptRanges"> +<summary> + What partial content range types this server supports +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.AccessControlAllowOrigin"> +<summary> + Specifying which web sites can participate in cross-origin resource sharing +</summary> +</member> +<member name="T:FSharp.Data.HttpResponseHeaders"> +<summary> + Header received in an HTTP response +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.JsonExtensionsModule.op_Dynamic(FSharp.Data.JsonValue,System.String)"> +<summary> + Get property of a JSON object (assuming that the value is an object) +</summary> +</member> +<member name="T:FSharp.Data.JsonExtensionsModule"> + +</member> +<member name="P:FSharp.Data.JsonValueModule.Object"> +<summary> + Constructor to create a `JsonValue.Record of (string * JsonValue)[]` as a `JsonValue.Object of Map<string, JsonValue>` for + backwards compatibility reaons +</summary> +</member> +<member name="M:FSharp.Data.JsonValueModule.|Object|_|(FSharp.Data.JsonValue)"> +<summary> + Active Pattern to view a `JsonValue.Record of (string * JsonValue)[]` as a `JsonValue.Object of Map<string, JsonValue>` for + backwards compatibility reaons +</summary> +</member> +<member name="T:FSharp.Data.JsonValueModule"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.CsvFile`1.Separators"> +<summary> + The character(s) used as column separator(s) +</summary> +</member> +<member name="P:FSharp.Data.Runtime.CsvFile`1.Rows"> +<summary> + The rows with data +</summary> +</member> +<member name="P:FSharp.Data.Runtime.CsvFile`1.Quote"> +<summary> + The quotation mark use for surrounding values containing separator chars +</summary> +</member> +<member name="P:FSharp.Data.Runtime.CsvFile`1.NumberOfColumns"> +<summary> + The number of columns +</summary> +</member> +<member name="P:FSharp.Data.Runtime.CsvFile`1.Headers"> +<summary> + The names of the columns +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Truncate(System.Int32)"> +<summary> + Returns a csv that when enumerated returns at most N rows. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.TakeWhile(System.Func{`0,System.Boolean})"> +<summary> + Returns a csv that, when iterated, yields rowswhile the given predicate + returns <c>true</c>, and then returns no further rows. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Take(System.Int32)"> +<summary> + Returns a new csv with only the first N rows of the underlying csv. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.SkipWhile(System.Func{`0,System.Boolean})"> +<summary> + Returns a csv that, when iterated, skips rows while the given predicate returns + <c>true</c>, and then yields the remaining rows. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Skip(System.Int32)"> +<summary> + Returns a csv that skips N rows and then yields the remaining rows. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.SaveToString(Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Char})"> +<summary> + Saves CSV to a string +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Save(System.String,Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Char})"> +<summary> + Saves CSV to the specified file +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Save(System.IO.Stream,Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Char})"> +<summary> + Saves CSV to the specified stream +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Save(System.IO.TextWriter,Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Char})"> +<summary> + Saves CSV to the specified writer +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Filter(System.Func{`0,System.Boolean})"> +<summary> + Returns a new csv containing only the rows for which the given predicate returns "true". +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Create(System.Func{System.Object,System.String[],`0},System.Func{`0,System.String[]},System.IO.TextReader,System.String,System.Char,System.Boolean,System.Boolean,System.Boolean)"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Cache"> +<summary> + Returns a new csv with the same rows as the original but which guarantees + that each row will be only be read and parsed from the input at most once. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.#ctor(System.Func{System.Object,System.String[],`0},System.Func{`0,System.String[]},System.Func{System.IO.TextReader},System.String,System.Char,System.Boolean,System.Boolean)"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.CsvFile`1"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.IJsonDocument"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.JsonConversions"> +<summary> + Conversions from JsonValue to string/int/int64/decimal/float/boolean/datetime/guid options +</summary> +</member> +<member name="F:FSharp.Data.Runtime.FSharp.Data.Runtime.JsonDocument.Path"> +<summary> + [omit] +</summary> +</member> +<member name="F:FSharp.Data.Runtime.FSharp.Data.Runtime.JsonDocument.Json"> +<summary> + [omit] +</summary> +</member> +<member name="P:FSharp.Data.Runtime.JsonDocument._Print"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.JsonDocument.JsonValue"> +<summary> + The underlying JsonValue +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonDocument.ToString"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.JsonDocument.CreateList(System.IO.TextReader,System.String)"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonDocument.Create(System.IO.TextReader,System.String)"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonDocument.Create(FSharp.Data.JsonValue,System.String)"> +<summary> + [omit] +</summary> +</member> +<member name="T:FSharp.Data.Runtime.JsonDocument"> +<summary> + Underlying representation of types generated by JsonProvider +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.TryGetValueByTypeTag``1(FSharp.Data.Runtime.IJsonDocument,System.String,System.String,System.Func{FSharp.Data.Runtime.IJsonDocument,``0})"> +<summary> + Returns a single or no value by tag type +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.TryGetPropertyUnpackedWithPath(FSharp.Data.Runtime.IJsonDocument,System.String)"> +<summary> + Get optional json property and wrap it together with path +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.TryGetPropertyUnpacked(FSharp.Data.Runtime.IJsonDocument,System.String)"> +<summary> + Get optional json property +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.TryGetPropertyPacked(FSharp.Data.Runtime.IJsonDocument,System.String)"> +<summary> + Get optional json property wrapped in json document +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.TryGetArrayChildByTypeTag``1(FSharp.Data.Runtime.IJsonDocument,System.String,System.String,System.Func{FSharp.Data.Runtime.IJsonDocument,``0})"> +<summary> + Returns single or no value from an array matching the specified tag +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.GetPropertyPackedOrNull(FSharp.Data.Runtime.IJsonDocument,System.String)"> +<summary> + Get json property and wrap in json document, and return null if not found +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.GetPropertyPacked(FSharp.Data.Runtime.IJsonDocument,System.String)"> +<summary> + Get json property and wrap in json document +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.GetNonOptionalValue``1(System.String,Microsoft.FSharp.Core.FSharpOption{``0},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.JsonValue})"> +<summary> + Operation that extracts the value from an option and reports a meaningful error message when the value is not there + If the originalValue is a scalar, for missing strings we return "", and for missing doubles we return NaN + For other types an error is thrown +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.GetArrayChildrenByTypeTag``1(FSharp.Data.Runtime.IJsonDocument,System.String,System.String,System.Func{FSharp.Data.Runtime.IJsonDocument,``0})"> +<summary> + Returns all array values that match the specified tag +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.GetArrayChildByTypeTag(FSharp.Data.Runtime.IJsonDocument,System.String,System.String)"> +<summary> + Returns a single array children that matches the specified tag +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.CreateValue(System.Object,System.String)"> +<summary> + Creates a scalar JsonValue and wraps it in a json document +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.CreateArray(System.Object[],System.String)"> +<summary> + Creates a scalar JsonValue.Array and wraps it in a json document +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.ConvertOptionalProperty``1(FSharp.Data.Runtime.IJsonDocument,System.String,System.Func{FSharp.Data.Runtime.IJsonDocument,``0})"> +<summary> + Get optional json property and convert to a specified type +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.ConvertArray``1(FSharp.Data.Runtime.IJsonDocument,System.Func{FSharp.Data.Runtime.IJsonDocument,``0})"> +<summary> + Converts JSON array to array of target types +</summary> +</member> +<member name="T:FSharp.Data.Runtime.JsonRuntime"> +<summary> + Static helper methods called from the generated code for working with JSON +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.JsonValueOptionAndPath"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.TextConversions.AsString(System.String)"> +<summary> + Turns empty or null string value into None, otherwise returns Some +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.TextConversions.AsFloat(System.String[],System.Boolean,System.IFormatProvider,System.String)"> +<summary> + if useNoneForMissingValues is true, NAs are returned as None, otherwise Some Double.NaN is used +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.TextConversions.AsDateTime(System.IFormatProvider,System.String)"> +<summary> + Parse date time using either the JSON milliseconds format or using ISO 8601 + that is, either "\/Date(<msec-since-1/1/1970>)\/" or something + along the lines of "2013-01-28T00:37Z" +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.TextConversions"> +<summary> + Conversions from string to string/int/int64/decimal/float/boolean/datetime/guid options +</summary> +</member> +<member name="M:FSharp.Data.Runtime.TextRuntime.OptionToNullable``1(Microsoft.FSharp.Core.FSharpOption{``0})"> +<summary> + Turn an F# option type Option<'T> containing a primitive + value type into a .NET type Nullable<'T> +</summary> +</member> +<member name="M:FSharp.Data.Runtime.TextRuntime.NullableToOption``1(System.Nullable{``0})"> +<summary> + Turn a .NET type Nullable<'T> to an F# option type Option<'T> +</summary> +</member> +<member name="M:FSharp.Data.Runtime.TextRuntime.GetNonOptionalValue``1(System.String,Microsoft.FSharp.Core.FSharpOption{``0},Microsoft.FSharp.Core.FSharpOption{System.String})"> +<summary> + Operation that extracts the value from an option and reports a meaningful error message when the value is not there + For missing strings we return "", and for missing doubles we return NaN + For other types an error is thrown +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.TextRuntime.GetCulture(System.String)"> +<summary> + Returns CultureInfo matching the specified culture string + (or InvariantCulture if the argument is null or empty) +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.TextRuntime.AsyncMap``2(Microsoft.FSharp.Control.FSharpAsync{``0},System.Func{``0,``1})"> +<summary> + Turn a sync operation into an async operation +</summary> +</member> +<member name="T:FSharp.Data.Runtime.TextRuntime"> +<summary> + Static helper methods called from the generated code for working with text +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.XmlElement._Print"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.XmlElement.ToString"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.XmlElement.CreateList(System.IO.TextReader)"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.XmlElement.Create(System.IO.TextReader)"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.XmlElement.Create(System.Xml.Linq.XElement)"> +<summary> + [omit] +</summary> +</member> +<member name="T:FSharp.Data.Runtime.XmlElement"> +<summary> + Underlying representation of types generated by XmlProvider +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.XmlRuntime.TryGetJsonValue(FSharp.Data.Runtime.XmlElement,System.String)"> +<summary> + Tries to return the contents of the element as a JsonValue +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.XmlRuntime.GetJsonValue(FSharp.Data.Runtime.XmlElement,System.String)"> +<summary> + Returns the contents of the element as a JsonValue +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.XmlRuntime.CreateValue(System.String,System.Object,System.String)"> +<summary> + Creates a XElement with a scalar value and wraps it in a XmlElement +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.XmlRuntime.ConvertAsName``1(FSharp.Data.Runtime.XmlElement,System.String,System.Func{FSharp.Data.Runtime.XmlElement,``0})"> +<summary> + Returns Some if the specified XmlElement has the specified name + (otherwise None is returned). This is used when the current element + can be one of multiple elements. +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.XmlRuntime"> +<summary> + Static helper methods called from the generated code for working with XML +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Caching.ICache`1"> +<summary> + Represents a cache (various implementations are available) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Caching.createInternetFileCache(System.String,System.TimeSpan)"> +<summary> + Creates a cache that stores data in a local file system +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Caching.hashString(System.String)"> +<summary> + Get hash code of a string - used to determine cache file +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Caching.createInMemoryCache``1(System.TimeSpan)"> +<summary> + Creates a cache that uses in-memory collection +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Caching.createNonCachingCache``1"> +<summary> + Creates a fake cache +</summary> +</member> +<member name="T:FSharp.Data.Runtime.Caching"> +<summary> + Implements caching using in-memory and local file system +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.CsvHelpers.ReentrantEnumerable`1"> +<summary> + An enumerable that will return elements from the 'firstSeq' first time it + is accessed and then will call 'nextSeq' each time for all future GetEnumerator calls +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.CsvHelpers"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.CsvInference.CsvFile.InferColumnTypes(FSharp.Data.CsvFile,System.Int32,System.String[],System.Globalization.CultureInfo,System.String,System.Boolean,System.Boolean,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.String,System.Type}})"> +<summary> + Infers the types of the columns of a CSV file + Parameters: + * inferRows - Number of rows to use for inference. If this is zero, all rows are used + * missingValues - The set of strings recogized as missing values + * cultureInfo - The culture used for parsing numbers and dates + * schema - Optional column types, in a comma separated list. Valid types are "int", "int64", "bool", "float", "decimal", "date", "guid", "string", "int?", "int64?", "bool?", "float?", "decimal?", "date?", "guid?", "int option", "int64 option", "bool option", "float option", "decimal option", "date option", "guid option" and "string option". You can also specify a unit and the name of the column like this: Name (type&lt;unit&gt;). You can also override only the name. If you don't want to specify all the columns, you can specify by name like this: 'ColumnName=type' + * assumeMissingValues - Assumes all columns can have missing values + * preferOptionals - when set to true, inference will prefer to use the option type instead of nullable types, double.NaN or "" for missing values + * getUnitOfMeasure - optional function to resolve Units of Measure +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvInference.getFields(System.Boolean,FSharp.Data.Runtime.StructuralTypes.InferedType,Microsoft.FSharp.Core.FSharpOption{FSharp.Data.Runtime.StructuralTypes.PrimitiveInferedProperty}[])"> +<summary> + Generates the fields for a CSV row. The CSV provider should be + numerical-friendly, so we do a few simple adjustments. + When preferOptionals is false: + + - Optional fields of type 'int' are generated as Nullable<int> + - Optional fields of type 'int64' are generated as Nullable<int64> + - Optional fields of type 'float' are just floats (and null becomes NaN) + - Optional fields of type 'decimal' are generated as floats too + - Optional fields of any other non-nullable T (bool/date/guid) become option<T> + - All other types are simply strings. + + When preferOptionals is true: + + - All optional fields of type 'T' for any type become option<T>, including strings and floats +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvInference.inferType(Microsoft.FSharp.Core.FSharpFunc{System.String,System.Type},FSharp.Data.CsvFile,System.Int32,System.String[],System.Globalization.CultureInfo,System.String,System.Boolean,System.Boolean)"> +<summary> + Infers the type of a CSV file using the specified number of rows + (This handles units in the same way as the original MiniCSV provider) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvInference.parseSchemaItem(Microsoft.FSharp.Core.FSharpFunc{System.String,System.Type},System.String,System.Boolean)"> +<summary> + Parse schema specification for column. This can either be a name + with type or just type: name (typeInfo)|typeInfo. + If forSchemaOverride is set to true, only Full or Name is returne + (if we succeed we override the inferred schema, otherwise, we just + override the header name) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvInference.parseTypeAndUnit``1(Microsoft.FSharp.Core.FSharpFunc{System.String,``0},System.String)"> +<summary> + Parses type specification in the schema for a single column. + This can be of the form: type|measure|type<measure> +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.CsvInference.nameToType"> +<summary> + The schema may be set explicitly. This table specifies the mapping + from the names that users can use to the types used. +</summary> +</member> +<member name="T:FSharp.Data.Runtime.CsvInference"> +<summary> + Structural inference for CSV +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvReader.readCsvFile(System.IO.TextReader,System.String,System.Char)"> +<summary> + Lazily reads the specified CSV file using the specified separators + (Handles most of the RFC 4180 - most notably quoted values and also + quoted newline characters in columns) +</summary> +</member> +<member name="T:FSharp.Data.Runtime.CsvReader"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataConnection.TryGetPropertyById(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId,FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId)"> +<summary> + Get the FreebaseProperty object that gives schema information for a particular property of a particular type. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataConnection.GetInitialDataForSpecificObjectOfType(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId,FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseMachineId)"> +<summary> + Get a property bag for a specific object, giving values for the properties of the given type +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataConnection.GetInitialDataForObjectsFromQueryText(Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}},FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId,System.Int32)"> +<summary> + Get property bags for all the objects of the given type, at the given type +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataConnection.GetInitialDataForAllObjectsForPropertyOfObject(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseMachineId,FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId,FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty,FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId,System.Int32)"> +<summary> + Get property bags for all the objects in the specific property relation to a given object, giving values for the properties of the given property type +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseDataConnection"> +<summary> + Represents a data connection to Freebase +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataContext._Create(System.String,System.String,System.Boolean,System.String,System.Boolean,System.Boolean)"> +<summary> + Create a data context +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataContext.FSharp-Data-Runtime-Freebase-IFreebaseDataContext-GetDomainCategoryById(System.String)"> +<summary> + Get the object which represents the Freebase domain with the given object id. +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseDataContext"> +<summary> + Contains public entry points called by provided code. + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseDataContextSettings"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDomain.FSharp-Data-Runtime-Freebase-IFreebaseDomain-GetObjectsOfTypeId(System.String)"> +<summary> + Get all the Freebase objects which have the given Freebase type id. +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseDomain"> +<summary> + Represents the contents of a Freebase namespace + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDomainCategory.FSharp-Data-Runtime-Freebase-IFreebaseDomainCategory-GetDomainById(System.String)"> +<summary> + Get all the Freebase objects which have the given Freebase type id. + Get the object which represents the Freebase domain with the given object id. +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseDomainCategory"> +<summary> + Represents the contents of a Freebase namespace + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseIndividuals._GetIndividualsObject(System.Object)"> +<summary> + Get all the Freebase objects which have the given Freebase type id. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseIndividuals.FSharp-Data-Runtime-Freebase-IFreebaseIndividuals-GetIndividualById(System.String,System.String)"> +<summary> + Get all the Freebase objects which have the given type id and object id. +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseIndividuals"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseObject.Name"> +<summary> + The Name of this item +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseObject.MainImage"> +<summary> + The main image associated with this item, if any +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseObject.MachineId"> +<summary> + The machine ID of this item +</summary> +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseObject.Id"> +<summary> + The ID of this item +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseObject.Blurb"> +<summary> + The Blurb text for this item, if any +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseObject.GetImages"> +<summary> + Images associated with this item. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseObject"> +<summary> + Represents a single object drawn from Freebase. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebasePropertyBag"> +<summary> + Represents data for a single object +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSendingQueryArgs"> +<summary> + Arguments of the DataContext.SendingQuery event +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSendingRequestArgs"> +<summary> + Arguments of the DataContext.SendingRequest event +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.IFreebaseDataContext"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.IFreebaseDomain"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.IFreebaseDomainCategory"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.IFreebaseIndividuals"> +<summary> + [omit] +</summary> +</member> +<member name="P:FSharp.Data.Runtime.Freebase.IFreebaseObject.Name"> +<summary> + The name of this item +</summary> +</member> +<member name="P:FSharp.Data.Runtime.Freebase.IFreebaseObject.MainImage"> +<summary> + The main image associated with this item +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.IFreebaseObject.Blurb"> +<summary> + The Blurb text for this item, if any +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.IFreebaseObject.GetRequiredPropertyByIdTyped``1(System.String,System.String)"> +<summary> + Get a property by identifier, with a strong type, where the property is known to be populated +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.IFreebaseObject.GetRequiredPropertyById(System.String,System.String)"> +<summary> + Get a property by identifier, where the property is known to be populated +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.IFreebaseObject.GetPropertyByIdTyped``1(System.String,System.String)"> +<summary> + Get a property by identifier, with a strong type +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.IFreebaseObject.GetPropertyById(System.String,System.String)"> +<summary> + Get a property by identifier +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.IFreebaseObject.GetImages"> +<summary> + Images associated with this item. +</summary> +</member> +<member name="T:FSharp.Data.Runtime.Freebase.IFreebaseObject"> +<summary> + [omit] + Represents a single object drawn from Freebase. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseRequests.Utilities"> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseRequests"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="F:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.typeIdToType"> +<summary> + Cache policy for type properties. This will be used at runtime. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetTypeByTypeId(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId)"> +<summary> + Get the types that correspond to type id. The properties of the type are filled in. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetDomainStructure"> +<summary> + Query the structure of common domains and all the type types in that domain. Design-time only. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetDomainCategories"> +<summary> + Query the structure of common domains and all the type types in that domain. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetBlurbByMachineId(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseMachineId)"> +<summary> + Get the 'blurb' text for this topic ID +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetBlurbById(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId)"> +<summary> + Get the 'blurb' text for this topic ID +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetAllTypesInDomainSansProperties(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId)"> +<summary> + Return all typesin a domain. Design-time only. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetAllTypesInAllDomainsSansProperties"> +<summary> + Return all types. Design-time only. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetAllObjectsOfType(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseType,System.Int32,Microsoft.FSharp.Core.FSharpOption{System.String})"> +<summary> + Get property bags for all the objects of the given type, at the given type +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseDomainCategory"> +<summary> + The element type returned by GetDomainCategories +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseDomainStructure"> +<summary> + The element type returned by GetDomainStructure. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="F:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty.UnitOfMeasureId"> +<summary> + The unit of measure for the property, if any. e.g. /en/kilometer +</summary> +</member> +<member name=""> + +</member> +<member name="F:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty.EnumerationId"> +<summary> + Name of the enumeration type. Like /authority/gnis +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty.FSharpPropertyType(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection,Microsoft.FSharp.Core.FSharpFunc{FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty,Microsoft.FSharp.Core.FSharpOption{System.Tuple{System.Type,System.Boolean}}},Microsoft.FSharp.Core.FSharpFunc{FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseType,Microsoft.FSharp.Core.FSharpOption{System.Type}},Microsoft.FSharp.Core.FSharpFunc{System.Type,System.Type},Microsoft.FSharp.Core.FSharpFunc{System.Type,System.Type},System.Boolean)"> +<summary> + Compute the provided or erased runtime type corresponding to the Freebase property. + 'typeReprFunction' indicates if erasure is happening or not. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty.FSharpPropertyElementType(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection,Microsoft.FSharp.Core.FSharpFunc{FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty,Microsoft.FSharp.Core.FSharpOption{System.Tuple{System.Type,System.Boolean}}},Microsoft.FSharp.Core.FSharpFunc{FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseType,Microsoft.FSharp.Core.FSharpOption{System.Type}})"> +<summary> + Compute the provided or erased runtime type corresponding to the Freebase property. + 'typeReprFunction' indicates if erasure is happening or not. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseSchema.units"> +<summary> + This table of data was downloaded from www.freebase.com itself. + See www.freebase.com for term and conditions of use. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.Utilities.dictionaryFromJson(FSharp.Data.JsonValue)"> +<summary> + Represents one object's values for all the properties of one type id. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSchema.Utilities"> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSchema"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.QueryImplementation.FreebasePropAccess"> +<summary> + The algebra of different supported qualifications +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.QueryImplementation.formatQueryData(FSharp.Data.Runtime.Freebase.FreebaseDataConnection,FSharp.Data.Runtime.Freebase.QueryImplementation.FreebaseQueryData)"> +<summary> + Format as query text for MQL +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.QueryImplementation.formatPropAccessCx``1(FSharp.Data.Runtime.Freebase.FreebaseDataConnection,Microsoft.FSharp.Collections.FSharpList{System.Tuple{``0,System.String}},System.String,System.String)"> +<summary> + with all the non-compound fields filled in. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.QueryImplementation.evaluateOnClientSideWhereNecessary"> +<summary> + TODO: make this a parameter +</summary> +</member> +<member name="T:FSharp.Data.Runtime.Freebase.QueryImplementation"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.RuntimeConversion"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Helpers.asOption``1(System.Boolean,``0)"> +<summary> + Convert the result of TryParse to option type +</summary> +</member> +<member name="T:FSharp.Data.Runtime.Helpers"> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.HttpUtils"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.IO.UriResolver.Resolve(System.Uri)"> +<summary> + Resolve the absolute location of a file (or web URL) according to the rules + used by standard F# type providers as described here: + https://github.com/fsharp/fsharpx/issues/195#issuecomment-12141785 + + * if it is web resource, just return it + * if it is full path, just return it + * otherwise. + + At design-time: + * if the user specified resolution folder, use that + * otherwise use the default resolution folder + At run-time: + * if the user specified resolution folder, use that + * if it is running in F# interactive (config.IsHostedExecution) + use the default resolution folder + * otherwise, use 'CurrentDomain.BaseDirectory' + returns an absolute uri * isWeb flag +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.IO.asyncReadTextAtRuntimeWithDesignTimeRules(System.String,System.String,System.String,System.String)"> +<summary> + Returns a TextReader for the uri using the designtime resolution rules +</summary> +</member> +<member name="M:FSharp.Data.Runtime.IO.asyncReadTextAtRuntime(System.Boolean,System.String,System.String,System.String,System.String)"> +<summary> + Returns a TextReader for the uri using the runtime resolution rules +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.IO.asyncReadText(Microsoft.FSharp.Core.FSharpOption{System.Tuple{FSharp.Data.Runtime.IO.IDisposableTypeProvider,System.String}},FSharp.Data.Runtime.IO.UriResolver,System.String,System.Uri)"> +<summary> + Opens a stream to the uri using the uriResolver resolution rules + It the uri is a file, uses shared read, so it works when the file locked by Excel or similar tools, + and sets up a filesystem watcher that calls the invalidate function whenever the file changes +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.IO"> +<summary> + Helper functions called from the generated code for working with files +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.singularize(System.String)"> +<summary> + Return the singular of an English word +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.pluralize(System.String)"> +<summary> + Return the plural of an English word +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.trimHtml(System.String)"> +<summary> + Trim HTML tags from a given string and replace all of them with spaces + Multiple tags are replaced with just a single space. (This is a recursive + implementation that is somewhat faster than regular expression.) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.uniqueGenerator``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.String})"> +<summary> + Given a function to format names (such as `niceCamelName` or `nicePascalName`) + returns a name generator that never returns duplicate name (by appending an + index to already used names) + + This function is curried and should be used with partial function application: + + let makeUnique = uniqueGenerator nicePascalName + let n1 = makeUnique "sample-name" + let n2 = makeUnique "sample-name" + +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.niceCamelName(System.String)"> +<summary> + Turns a given non-empty string into a nice 'camelCase' identifier +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.nicePascalName(System.String)"> +<summary> + Turns a given non-empty string into a nice 'PascalCase' identifier +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.NameUtils"> +<summary> + Tools for generating nice member names that follow F# & .NET naming conventions +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Pluralizer"> + +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.getInferedTypeFromString(System.Globalization.CultureInfo,System.String,Microsoft.FSharp.Core.FSharpOption{System.Type})"> +<summary> + Infers the type of a simple string value +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.inferPrimitiveType(System.Globalization.CultureInfo,System.String)"> +<summary> + Infers the type of a simple string value + Returns one of null|typeof<Bit0>|typeof<Bit1>|typeof<bool>|typeof<int>|typeof<int64>|typeof<decimal>|typeof<float>|typeof<Guid>|typeof<DateTime>|typeof<string> +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.inferCollectionType(System.Boolean,System.Collections.Generic.IEnumerable{FSharp.Data.Runtime.StructuralTypes.InferedType})"> +<summary> + Infer the type of the collection based on multiple sample types + (group the types by tag, count their multiplicity) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.unionRecordTypes(System.Boolean,Microsoft.FSharp.Collections.FSharpList{FSharp.Data.Runtime.StructuralTypes.InferedProperty},Microsoft.FSharp.Collections.FSharpList{FSharp.Data.Runtime.StructuralTypes.InferedProperty})"> +<summary> + Get the union of record types (merge their properties) + This matches the corresponding members and marks them as `Optional` + if one may be missing. It also returns subtype of their types. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.unionCollectionTypes(System.Boolean,Microsoft.FSharp.Collections.FSharpMap{FSharp.Data.Runtime.StructuralTypes.InferedTypeTag,System.Tuple{FSharp.Data.Runtime.StructuralTypes.InferedMultiplicity,FSharp.Data.Runtime.StructuralTypes.InferedType}},Microsoft.FSharp.Collections.FSharpMap{FSharp.Data.Runtime.StructuralTypes.InferedTypeTag,System.Tuple{FSharp.Data.Runtime.StructuralTypes.InferedMultiplicity,FSharp.Data.Runtime.StructuralTypes.InferedType}})"> +<summary> + A collection can contain multiple types - in that case, we do keep + the multiplicity for each different type tag to generate better types + (this is essentially the same as `unionHeterogeneousTypes`, but + it also handles the multiplicity) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.unionHeterogeneousTypes(System.Boolean,Microsoft.FSharp.Collections.FSharpMap{FSharp.Data.Runtime.StructuralTypes.InferedTypeTag,FSharp.Data.Runtime.StructuralTypes.InferedType},Microsoft.FSharp.Collections.FSharpMap{FSharp.Data.Runtime.StructuralTypes.InferedTypeTag,FSharp.Data.Runtime.StructuralTypes.InferedType})"> +<summary> + Given two heterogeneous types, get a single type that can represent all the + types that the two heterogeneous types can. + Heterogeneous types already handle optionality on their own, so we drop + optionality from all its inner types +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.subtypeInfered(System.Boolean,FSharp.Data.Runtime.StructuralTypes.InferedType,FSharp.Data.Runtime.StructuralTypes.InferedType)"> +<summary> + Find common subtype of two infered types: + + * If the types are both primitive, then we find common subtype of the primitive types + * If the types are both records, then we union their fields (and mark some as optional) + * If the types are both collections, then we take subtype of their elements + (note we do not generate heterogeneous types in this case!) + * If one type is the Top type, then we return the other without checking + * If one of the types is the Null type and the other is not a value type + (numbers or booleans, but not string) then we return the other type. + Otherwise, we return bottom. + + The contract that should hold about the function is that given two types with the + same `InferedTypeTag`, the result also has the same `InferedTypeTag`. + +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.|SubtypePrimitives|_|(System.Boolean,FSharp.Data.Runtime.StructuralTypes.InferedType,FSharp.Data.Runtime.StructuralTypes.InferedType)"> +<summary> + Active pattern that calls `subtypePrimitives` on two primitive types +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.StructuralInference.conversionTable"> +<summary> + Find common subtype of two primitive types or `Bottom` if there is no such type. + The numeric types are ordered as below, other types are not related in any way. + + float :> decimal :> int64 :> int :> bit :> bit0 + float :> decimal :> int64 :> int :> bit :> bit1 + bool :> bit :> bit0 + bool :> bit :> bit1 + + This means that e.g. `int` is a subtype of `decimal` and so all `int` values + are also `decimal` (and `float`) values, but not the other way round. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.typeTag(FSharp.Data.Runtime.StructuralTypes.InferedType)"> +<summary> + Returns a tag of a type - a tag represents a 'kind' of type + (essentially it describes the different bottom types we have) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.supportsUnitsOfMeasure(System.Type)"> +<summary> + Checks whether a type supports unit of measure +</summary> +</member> +<member name="P:FSharp.Data.Runtime.StructuralInference.primitiveTypes"> +<summary> + List of primitive types that can be returned as a result of the inference +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralInference.Helpers"> + +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.List.pairBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``0})"> +<summary> + Merge two sequences by pairing elements for which + the specified predicate returns the same key + + (If the inputs contain the same keys, then the order + of the elements is preserved.) +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralInference.List"> +<summary> + [omit] +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralInference"> +<summary> + Implements type inference for unstructured documents like XML or JSON +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.TypeWrapper.Nullable"> +<summary> + The type T will be converter to type Nullable<T> +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.TypeWrapper.Option"> +<summary> + The type T will be converter to type T option +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.TypeWrapper.None"> +<summary> + No transformation will be made to the type +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.TypeWrapper"> +<summary> + Represents a transformation of a type +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.PrimitiveInferedProperty"> +<summary> + Represents type information about a primitive property (used mainly in the CSV provider) + This type captures the type, unit of measure and handling of missing values (if we + infer that the value may be missing, we can generate option<T> or nullable<T>) +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.Bit"> +<summary> + Dummy type to represent that only one of "0" and "1" were found + Will be generated as a 'bool', unless it's converted to another numerical type +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.Bit1"> +<summary> + Dummy type to represent that only "1" was found + Will be generated as 'int', unless it's converted to Bit +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.Bit0"> +<summary> + Dummy type to represent that only "0" was found. + Will be generated as 'int', unless it's converted to Bit. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.StructuralTypes.InferedType.EnsuresHandlesMissingValues(System.Boolean)"> +<summary> + When allowEmptyValues is true, we allow "" and double.NaN, otherwise + we make the type optional and use None instead. + It's currently only true in CsvProvider when PreferOptionals is set to false +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.InferedType"> +<summary> + Represents inferred structural type. A type may be either primitive type + (one of those listed by `primitiveTypes`) or it can be collection, + (named) record and heterogeneous type. We also have `Null` type (which is + a subtype of all non-primitive types) and universal `Top` type. + + * For collection, we infer the types of different things that appear in + the collection and how many times they do. + + * A heterogeneous type (sum type) is simply a choice containing one + of multiple different possibilities + + Why is collection not simply a list of Heterogeneous types? If we used that + we would lose information about multiplicity and so we would not be able + to generate nicer types! +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.StructuralTypes.InferedTypeTag.Code"> +<summary> + Converts tag to string code that can be passed to generated code +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralTypes.InferedTypeTag.ParseCode(System.String)"> +<summary> + Parses code returned by 'Code' member (to be used in provided code) +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.InferedTypeTag"> +<summary> + For heterogeneous types, this represents the tag that defines the form + (that is either primitive type, collection, named record etc.) +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.InferedMultiplicity"> +<summary> + For heterogeneous types (types that have multiple possible forms + such as differently named XML nodes or records and arrays mixed together) + this type represents the number of occurrences of individual forms +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.InferedProperty"> +<summary> + A property of a record has a name and type and may be optional +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.UriUtils"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.WorldBankData"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IWorldBankData"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.TopicCollection`1"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.ITopicCollection"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Topic.Name"> +<summary> + Get the name of the topic +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Topic.Description"> +<summary> + Get the description of the topic +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Topic.Code"> +<summary> + Get the WorldBank code of the topic +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Topic"> +<summary> + Metadata for a Topic +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.ITopic"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.RegionCollection`1"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IRegionCollection"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Region.RegionCode"> +<summary> + Get the WorldBank code for the region +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Region.Name"> +<summary> + Get the name of the region +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Region"> +<summary> + Metadata for a Region +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IRegion"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.CountryCollection`1"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.ICountryCollection"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Country.Region"> +<summary> + Get the region of the country +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Country.Name"> +<summary> + Get the name of the country +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Country.Code"> +<summary> + Get the WorldBank code of the country +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Country.CapitalCity"> +<summary> + Get the capital city of the country +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Country"> +<summary> + Metadata for a Country +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.ICountry"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IndicatorsDescriptions"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IIndicatorsDescriptions"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Indicators"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IIndicators"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.IndicatorDescription.Source"> +<summary> + Get the source of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.IndicatorDescription.Name"> +<summary> + Get the name of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.IndicatorDescription.IndicatorCode"> +<summary> + Get the code for the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.IndicatorDescription.Description"> +<summary> + Get the description of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.IndicatorDescription.Code"> +<summary> + Get the code for the topic of the indicator +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IndicatorDescription"> +<summary> + Metadata for an Indicator +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Years"> +<summary> + Get the years for which the indicator has values +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Values"> +<summary> + Get the values for the indicator (without years) +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Source"> +<summary> + Get the source of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Name"> +<summary> + Get the name of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Item(System.Int32)"> +<summary> + Get the indicator value for the given year. If there's no data for that year, NaN is returned +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.IndicatorCode"> +<summary> + Get the code for the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Description"> +<summary> + Get the description of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Code"> +<summary> + Get the code for the country or region of the indicator +</summary> +</member> +<member name="M:FSharp.Data.Runtime.WorldBank.Indicator.TryGetValueAt(System.Int32)"> +<summary> + Get the indicator value for the given year, if present +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Indicator"> +<summary> + Indicator data +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="F:FSharp.Data.Runtime.WorldBank.Implementation.ServiceConnection.topics"> +<summary> + At compile time, download the schema +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.WorldBank.Implementation.ServiceConnection.GetDataAsync(System.String,System.String)"> +<summary> + At runtime, download the data +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Implementation"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.XElementExtensions.XElement.RequestAsync(System.Xml.Linq.XElement,System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}})"> +<summary> + Sends the XML to the specified uri. Defaults to a POST request. +</summary> +</member> +<member name="M:FSharp.Data.XElementExtensions.XElement.Request(System.Xml.Linq.XElement,System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}})"> +<summary> + Sends the XML to the specified uri. Defaults to a POST request. +</summary> +</member> +<member name="T:FSharp.Data.XElementExtensions"> +<summary> + Extension methods for XElement. It is auto opened. +</summary> +</member> +<member name="M:ProviderImplementation.AssemblyReplacer.ToRuntime(Microsoft.FSharp.Quotations.FSharpExpr)"> +<summary> + Gets an equivalent expression with all the types replaced with runtime equivalents +</summary> +</member> +<member name="M:ProviderImplementation.AssemblyReplacer.ToRuntime(System.Type)"> +<summary> + Gets the equivalent runtime type +</summary> +</member> +<member name="M:ProviderImplementation.AssemblyReplacer.ToDesignTime(Microsoft.FSharp.Quotations.FSharpExpr)"> +<summary> + Gets an equivalent expression with all the types replaced with designTime equivalents +</summary> +</member> +<member name="T:ProviderImplementation.AssemblyReplacer"> +<summary> + When we split a type provider into a runtime assembly and a design time assembly, we can no longer + use quotations directly, because they will reference the wrong types. AssemblyReplacer fixes that + by transforming the expressions generated by the quotations to have the right types. On all + expressions that we provide to InvokeCode and GetterCode of ProvidedMethod, ProvidedConstructor, + and ProvidedProperty, instead of (fun args -> <@@ doSomethingWith(%%args) @@>), we should use + (fun args -> let args = replacer.ToDesignTime args in replacer.ToRuntime <@@ doSomethingWith(%%args) @@>) + When creating the Provided* type, we have to always specify the runtime type, and when it invokes + the function provided to InvokeCode and GetterCode, we to first transform the argument expressions + to the design time types, so we can splice it in the quotation, and then after that we have to convert + it back to the runtime type. A further complication arises because Expr.Var's have reference equality, so + when can't just create new Expr.Var's with the same variable name and a different type. When transforming + them from runtime to design time we keep them in a dictionary, so that when we convert them back to runtime + we can return the exact same instance that was provided to us initially. + Another limitation (not only of this method, but in general with type providers) is that we can never use + expressions that use F# functions as parameters or return values, we always have to use felegates instead. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.FreebaseRuntimeInfo"> +<summary> + Find the handles in the Freebase type provider runtime DLL. +</summary> +</member> +<member name=""> + +</member> +<member name="F:ProviderImplementation.ProviderImplementation.FreebaseTypeProvider.rootNamespace"> +<summary> + Root namespace of Freebase types +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.FreebaseTypeProvider"> +<summary> + This is the Freebase type provider. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.JsonGenerationContext"> +<summary> + Context that is used to generate the JSON types. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.XmlGenerationContext"> +<summary> + Context that is used to generate the XML types. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:ProviderImplementation.ActivePatterns.|SingletonMap|_|``2(Microsoft.FSharp.Collections.FSharpMap{``0,``1})"> +<summary> + Takes a map and succeeds if it contains exactly one value +</summary> +</member> +<member name="M:ProviderImplementation.ActivePatterns.|EmptyMap|_|``3(``0,Microsoft.FSharp.Collections.FSharpMap{``1,``2})"> +<summary> + Takes a map and succeeds if it is empty +</summary> +</member> +<member name="M:ProviderImplementation.ActivePatterns.|Singleton|``1(Microsoft.FSharp.Collections.FSharpList{``0})"> +<summary> + Helper active pattern that can be used when constructing InvokeCode + (to avoid writing pattern matching or incomplete matches): + + p.InvokeCode <- fun (Singleton self) -> <@ 1 + 2 @> + +</summary> +</member> +<member name="T:ProviderImplementation.ActivePatterns"> + +</member> +<member name="M:ProviderImplementation.AssemblyReplacerModule.create(Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.Reflection.Assembly,System.Reflection.Assembly}})"> +<summary> + Creates an AssemblyReplacer with the provided list of designTimeAssembly*runtimeAssembly mappings + Should always receive the current running assembly paired with the RuntimeAssembly from TypeProviderConfig, + and in case we're targetting a different .Net framework profile, the FSharp.Core version referenced + by the current assembly paired with the FSharp.Core version referenced by the runtime assembly +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.AssemblyReplacerModule"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.AssemblyResolver"> + +</member> +<member name="M:ProviderImplementation.ConversionsGenerator.convertStringValue``2(ProviderImplementation.AssemblyReplacer,System.String,System.String,FSharp.Data.Runtime.StructuralTypes.PrimitiveInferedProperty)"> +<summary> + Creates a function that takes Expr<string option> and converts it to + an expression of other type - the type is specified by `field` +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.ConversionsGenerator"> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.CsvTypeBuilder"> + +</member> +<member name="M:ProviderImplementation.Debug.prettyPrint(System.Boolean,System.Boolean,System.Int32,System.Int32,ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition)"> +<summary> + Returns a string representation of the signature (and optionally also the body) of all the + types generated by the type provider up to a certain depth and width + If ignoreOutput is true, this will still visit the full graph, but it will output an empty string to be faster +</summary> +</member> +<member name="M:ProviderImplementation.Debug.generate``1(System.String,System.String,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig,``0},System.Object[])"> +<summary> + Simulates a real instance of TypeProviderConfig and then creates an instance of the last + type provider added to a namespace by the type provider constructor +</summary> +</member> +<member name="M:ProviderImplementation.Debug.separatedBy(System.String,System.Collections.Generic.IEnumerable{System.String})"> +<summary> + Converts a sequence of strings to a single string separated with the delimiters +</summary> +</member> +<member name="T:ProviderImplementation.Debug"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:ProviderImplementation.JsonConversionsGenerator.convertJsonValue``1(ProviderImplementation.AssemblyReplacer,System.String,System.String,System.Boolean,FSharp.Data.Runtime.StructuralTypes.PrimitiveInferedProperty)"> +<summary> + Creates a function that takes Expr<JsonValue option> and converts it to + an expression of other type - the type is specified by `field` +</summary> +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.JsonConversionsGenerator"> + +</member> +<member name="M:ProviderImplementation.JsonInference.inferType(System.Globalization.CultureInfo,System.String,FSharp.Data.JsonValue)"> +<summary> + Infer type of a JSON value - this is simple function because most of the + functionality is handled in `StructureInference` (most notably, by + `inferCollectionType` and various functions to find common subtype), so + here we just need to infer types of primitive JSON values. +</summary> +</member> +<member name="T:ProviderImplementation.JsonInference"> + +</member> +<member name="M:ProviderImplementation.JsonTypeBuilder.generateJsonType(ProviderImplementation.JsonGenerationContext,System.Boolean,System.Boolean,System.String,FSharp.Data.Runtime.StructuralTypes.InferedType)"> +<summary> + Recursively walks over inferred type information and + generates types for read-only access to the document +</summary> +</member> +<member name="M:ProviderImplementation.JsonTypeBuilder.generateMultipleChoiceType(ProviderImplementation.JsonGenerationContext,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{FSharp.Data.Runtime.StructuralTypes.InferedTypeTag,System.Tuple{FSharp.Data.Runtime.StructuralTypes.InferedMultiplicity,FSharp.Data.Runtime.StructuralTypes.InferedType}}},System.Boolean,System.String,Microsoft.FSharp.Core.FSharpFunc{FSharp.Data.Runtime.StructuralTypes.InferedMultiplicity,Microsoft.FSharp.Core.FSharpFunc{ProviderImplementation.JsonGenerationResult,Microsoft.FSharp.Core.FSharpFunc{System.String,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr},Microsoft.FSharp.Quotations.FSharpExpr}}}})"> +<summary> + Common code that is shared by code generators that generate + "Choice" type. This is parameterized by the types (choices) to generate, + by functions that get the multiplicity and the type tag for each option + and also by function that generates the actual code. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.JsonTypeBuilder"> + +</member> +<member name="M:ProviderImplementation.List.frontAndBack``1(Microsoft.FSharp.Collections.FSharpList{``0})"> +<summary> + Split a non-empty list into a list with all elements + except for the last one and the last element +</summary> +</member> +<member name="M:ProviderImplementation.List.headAndTail``1(Microsoft.FSharp.Collections.FSharpList{``0})"> +<summary> + Split a non-empty list into a pair consisting of + its head and its tail +</summary> +</member> +<member name="T:ProviderImplementation.List"> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.PrimitiveInferedPropertyExtensions"> + +</member> +<member name="P:ProviderImplementation.ProvidedTypes.TypeProviderForNamespaces.Namespaces"> +<summary> + FSharp.Data addition: this method is used by Debug.fs + Get all namespace with their provided types. +</summary> +</member> +<member name=""> + +</member> +<member name="M:ProviderImplementation.ProvidedTypes.TypeProviderForNamespaces.ResolveAssembly(System.ResolveEventArgs)"> +<summary> + AssemblyResolve handler. Default implementation searches <assemblyname>.dll file in registered folders +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.TypeProviderForNamespaces.RegisterRuntimeAssemblyLocationAsProbingFolder(Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig)"> +<summary> + Registers location of RuntimeAssembly (from TypeProviderConfig) as probing folder +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.TypeProviderForNamespaces.RegisterProbingFolder(System.String)"> +<summary> + Registers custom probing path that can be used for probing assemblies +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.TypeProviderForNamespaces.Invalidate"> +<summary> + Invalidate the information provided by the provider +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.TypeProviderForNamespaces.AddNamespace(System.String,Microsoft.FSharp.Collections.FSharpList{ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition})"> +<summary> + Add a namespace of provided types. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.TypeProviderForNamespaces.#ctor"> +<summary> + Initializes a type provider +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.TypeProviderForNamespaces.#ctor(System.String,Microsoft.FSharp.Collections.FSharpList{ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition})"> +<summary> + Initializes a type provider to provide the types in the given namespace. +</summary> +</member> +<member name="T:ProviderImplementation.ProvidedTypes.TypeProviderForNamespaces"> +<summary> + A base type providing default implementations of type provider functionality when all provided + types are of type ProvidedTypeDefinition. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedAssembly.RegisterGenerated(System.String)"> +<summary> + Register that a given file is a provided generated assembly +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedAssembly.AddTypes(Microsoft.FSharp.Collections.FSharpList{ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition})"> + <summary> + Emit the given provided type definitions as part of the assembly + and adjust the 'Assembly' property of all provided type definitions to return that + assembly. + + The assembly is only emitted when the Assembly property on the root type is accessed for the first time. + The host F# compiler does this when processing a generative type declaration for the type. + </summary> + <param name="enclosingTypeNames">An optional path of type names to wrap the generated types. The generated types are then generated as nested types.</param> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedAssembly"> +<summary> + A provided generated assembly +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.SuppressRelocation(System.Boolean)"> +<summary> + Get or set a flag indicating if the ProvidedTypeDefinition has type-relocation suppressed +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.IsErased(System.Boolean)"> +<summary> + Get or set a flag indicating if the ProvidedTypeDefinition is erased +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.HideObjectMethods(System.Boolean)"> +<summary> + Suppress System.Object entries in intellisense menus in instances of this provided type +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.SuppressRelocation"> +<summary> + Get or set a flag indicating if the ProvidedTypeDefinition has type-relocation suppressed +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.IsErased"> +<summary> + Get or set a flag indicating if the ProvidedTypeDefinition is erased +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.SetBaseTypeDelayed(System.Lazy{Microsoft.FSharp.Core.FSharpOption{System.Type}})"> +<summary> + Set the base type to a lazily evaluated value +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.SetBaseType(System.Type)"> +<summary> + Set the base type +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.SetAttributes(System.Reflection.TypeAttributes)"> +<summary> + Set the attributes on the provided type. This fully replaces the default TypeAttributes. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.ResetEnclosingType(System.Type)"> +<summary> + Reset the enclosing type (for generated nested types) +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.MakeParametricType(System.String,System.Object[])"> +<summary> + FSharp.Data addition: this method is used by Debug.fs +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.EraseType(System.Type)"> +<summary> + FSharp.Data addition: this method is used by Debug.fs and QuotationBuilder.fs + Emulate the F# type provider type erasure mechanism to get the + actual (erased) type. We erase ProvidedTypes to their base type + and we erase array of provided type to array of base type. In the + case of generics all the generic type arguments are also recursively + replaced with the erased-to types +</summary> +</member> +<member name=""> + +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.DefineMethodOverride(ProviderImplementation.ProvidedTypes.ProvidedMethod,System.Reflection.MethodInfo)"> +<summary> + Specifies that the given method body implements the given method declaration. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddXmlDocDelayed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary. + The documentation is only computed once. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddXmlDocComputed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary + The documentation is re-computed every time it is required. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddXmlDoc(System.String)"> +<summary> + Add XML documentation information to this provided constructor +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddObsoleteAttribute(System.String,Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Add a 'System.Obsolete' attribute to this provided type definition +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddMembersDelayed``1(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList{``0}})"> +<summary> + Add a set of members to a ProvidedTypeDefinition, delaying computation of the members until required by the compilation context. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddMembers``1(Microsoft.FSharp.Collections.FSharpList{``0})"> +<summary> + Add a set of members to a ProvidedTypeDefinition +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddMemberDelayed``1(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,``0})"> +<summary> + Add a member to a ProvidedTypeDefinition, delaying computation of the members until required by the compilation context. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddMember(System.Reflection.MemberInfo)"> +<summary> + Add a method, property, nested type or other member to a ProvidedTypeDefinition +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddInterfaceImplementationsDelayed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList{System.Type}})"> +<summary> + Add the given function as a set of on-demand computed interfaces. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddInterfaceImplementation(System.Type)"> +<summary> + Add the given type as an implemented interface. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddDefinitionLocation(System.Int32,System.Int32,System.String)"> +<summary> + Add definition location information to the provided type definition. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddCustomAttribute(System.Reflection.CustomAttributeData)"> +<summary> + Add a custom attribute to the provided type definition. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.AddAssemblyTypesAsNestedTypesDelayed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.Reflection.Assembly})"> +<summary> + Add the types of the generated assembly as generative types, where types in namespaces get hierarchically positioned as nested types. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.#ctor(System.String,Microsoft.FSharp.Core.FSharpOption{System.Type})"> +<summary> + Create a new provided type definition, to be located as a nested type in some type definition. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition.#ctor(System.Reflection.Assembly,System.String,System.String,Microsoft.FSharp.Core.FSharpOption{System.Type})"> +<summary> + Create a new provided type definition in a namespace. +</summary> +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition"> +<summary> + Represents a provided type definition. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedStaticParameter.AddXmlDocDelayed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedStaticParameter.AddXmlDoc(System.String)"> +<summary> + Add XML documentation information to this provided constructor +</summary> +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedStaticParameter"> +<summary> + Represents a provided static parameter. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedMeasureBuilder.One"> +<summary> + e.g. 1 +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedMeasureBuilder.Default"> +<summary> + The ProvidedMeasureBuilder for building measures. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMeasureBuilder.Square(System.Type)"> +<summary> + e.g. m * m +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMeasureBuilder.SI(System.String)"> +<summary> + the SI unit from the F# core library, where the string is in capitals and US spelling, e.g. Meter +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMeasureBuilder.Ratio(System.Type,System.Type)"> +<summary> + e.g. kg / m +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMeasureBuilder.Product(System.Type,System.Type)"> +<summary> + e.g. m * kg +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMeasureBuilder.Inverse(System.Type)"> +<summary> + e.g. 1 / kg +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMeasureBuilder.AnnotateType(System.Type,Microsoft.FSharp.Collections.FSharpList{System.Type})"> +<summary> + e.g. float<kg>, Vector<int, kg> +</summary> +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedMeasureBuilder"> +<summary> + Helps create erased provided unit-of-measure annotations. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeBuilder.MakeGenericType(System.Type,Microsoft.FSharp.Collections.FSharpList{System.Type})"> +<summary> + Like typ.MakeGenericType, but will also work with unit-annotated types +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedTypeBuilder.MakeGenericMethod(System.Reflection.MethodInfo,Microsoft.FSharp.Collections.FSharpList{System.Type})"> +<summary> + Like methodInfo.MakeGenericMethod, but will also work with unit-annotated types and provided types +</summary> +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedTypeBuilder"> +<summary> + Provides symbolic provided types +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedSymbolType.Kind"> +<summary> + Returns the kind of this symbolic type +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedSymbolType.Args"> +<summary> + Return the provided types used as arguments of this symbolic type +</summary> +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedSymbolType"> +<summary> + FSharp.Data addition: ProvidedSymbolType is used by AssemblyReplacer.fs + Represents an array or other symbolic type involving a provided type as the argument. + See the type provider spec for the methods that must be implemented. + Note that the type provider specification does not require us to implement pointer-equality for provided types. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.ProvidedTypes.SymbolKind"> +<summary> + FSharp.Data addition: SymbolKind is used by AssemblyReplacer.fs + Represents the type constructor in a provided symbol type. +</summary> +</member> +<member name=""> + +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedField.AddXmlDocDelayed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided field, where the computation of the documentation is delayed until necessary +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedField.AddXmlDocComputed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided field, where the computation of the documentation is delayed until necessary + The documentation is re-computed every time it is required. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedField.AddXmlDoc(System.String)"> +<summary> + Add XML documentation information to this provided field +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedField.AddObsoleteAttribute(System.String,Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Add a 'System.Obsolete' attribute to this provided field +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedField.AddDefinitionLocation(System.Int32,System.Int32,System.String)"> +<summary> + Add definition location information to the provided field definition. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedField.#ctor(System.String,System.Type)"> +<summary> + Create a new provided field. It is not initially associated with any specific provided type definition. +</summary> +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedField"> +<summary> + Represents an erased provided field. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedLiteralField.AddXmlDocDelayed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided field, where the computation of the documentation is delayed until necessary +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedLiteralField.AddXmlDocComputed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided field, where the computation of the documentation is delayed until necessary + The documentation is re-computed every time it is required. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedLiteralField.AddXmlDoc(System.String)"> +<summary> + Add XML documentation information to this provided field +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedLiteralField.AddObsoleteAttribute(System.String,Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Add a 'System.Obsolete' attribute to this provided field +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedLiteralField.AddDefinitionLocation(System.Int32,System.Int32,System.String)"> +<summary> + Add definition location information to the provided field. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedLiteralField.#ctor(System.String,System.Type,System.Object)"> +<summary> + Create a new provided field. It is not initially associated with any specific provided type definition. +</summary> +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedLiteralField"> +<summary> + Represents an erased provided field. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedEvent.RemoverCode(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr},Microsoft.FSharp.Quotations.FSharpExpr})"> +<summary> + Set the function used to compute the implementation of sets of this property. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedEvent.IsStatic(System.Boolean)"> +<summary> + Get or set a flag indicating if the property is static. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedEvent.AdderCode(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr},Microsoft.FSharp.Quotations.FSharpExpr})"> +<summary> + Set the quotation used to compute the implementation of gets of this property. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedEvent.AddXmlDocDelayed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedEvent.AddXmlDocComputed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary + The documentation is re-computed every time it is required. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedEvent.AddXmlDoc(System.String)"> +<summary> + Add XML documentation information to this provided constructor +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedEvent.AddDefinitionLocation(System.Int32,System.Int32,System.String)"> +<summary> + Add definition location information to the provided type definition. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedEvent.#ctor(System.String,System.Type)"> +<summary> + Create a new provided type. It is not initially associated with any specific provided type definition. +</summary> +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedEvent"> +<summary> + Represents an erased provided property. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedProperty.SetterCode(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr},Microsoft.FSharp.Quotations.FSharpExpr})"> +<summary> + Set the function used to compute the implementation of sets of this property. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedProperty.IsStatic(System.Boolean)"> +<summary> + Get or set a flag indicating if the property is static. + FSharp.Data addition: the getter is used by Debug.fs +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedProperty.GetterCode(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr},Microsoft.FSharp.Quotations.FSharpExpr})"> +<summary> + Set the quotation used to compute the implementation of gets of this property. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedProperty.IsStatic"> +<summary> + Get or set a flag indicating if the property is static. + FSharp.Data addition: the getter is used by Debug.fs +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedProperty.AddXmlDocDelayed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedProperty.AddXmlDocComputed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary + The documentation is re-computed every time it is required. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedProperty.AddXmlDoc(System.String)"> +<summary> + Add XML documentation information to this provided constructor +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedProperty.AddObsoleteAttribute(System.String,Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Add a 'System.Obsolete' attribute to this provided property +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedProperty.AddDefinitionLocation(System.Int32,System.Int32,System.String)"> +<summary> + Add definition location information to the provided type definition. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedProperty.AddCustomAttribute(System.Reflection.CustomAttributeData)"> +<summary> + Add a custom attribute to the provided property definition. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedProperty.#ctor(System.String,System.Type,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{ProviderImplementation.ProvidedTypes.ProvidedParameter}})"> +<summary> + Create a new provided type. It is not initially associated with any specific provided type definition. +</summary> +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedProperty"> +<summary> + Represents an erased provided property. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedMethod.IsStaticMethod(System.Boolean)"> +<summary> + Get or set a flag indicating if the property is static. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedMethod.InvokeCode(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr},Microsoft.FSharp.Quotations.FSharpExpr})"> +<summary> + Set the quotation used to compute the implementation of invocations of this method. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedMethod.IsStaticMethod"> +<summary> + Get or set a flag indicating if the property is static. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMethod.SetMethodAttrs(System.Reflection.MethodAttributes)"> +<summary> + Set the method attributes of the method. By default these are simple 'MethodAttributes.Public' +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMethod.GetInvokeCodeInternal(System.Boolean)"> +<summary> + FSharp.Data addition: this method is used by Debug.fs +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMethod.AddXmlDocDelayed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMethod.AddXmlDocComputed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary + The documentation is re-computed every time it is required. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMethod.AddXmlDoc(System.String)"> +<summary> + Add XML documentation information to this provided constructor +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMethod.AddObsoleteAttribute(System.String,Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Add XML documentation information to this provided method +</summary> +</member> +<member name=""> + +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMethod.AddDefinitionLocation(System.Int32,System.Int32,System.String)"> +<summary> + Add definition location information to the provided type definition. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMethod.AddCustomAttribute(System.Reflection.CustomAttributeData)"> +<summary> + Add a custom attribute to the provided method definition. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedMethod.#ctor(System.String,Microsoft.FSharp.Collections.FSharpList{ProviderImplementation.ProvidedTypes.ProvidedParameter},System.Type)"> +<summary> + Create a new provided method. It is not initially associated with any specific provided type definition. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedConstructor.IsImplicitCtor(System.Boolean)"> +<summary> + Set a flag indicating that the constructor acts like an F# implicit constructor, so the + parameters of the constructor become fields and can be accessed using Expr.GlobalVar with the + same name. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedConstructor.InvokeCode(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr},Microsoft.FSharp.Quotations.FSharpExpr})"> +<summary> + Set the quotation used to compute the implementation of invocations of this constructor. +</summary> +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedConstructor.BaseConstructorCall(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr},System.Tuple{System.Reflection.ConstructorInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}}})"> +<summary> + Set the target and arguments of the base constructor call. Only used for generated types. +</summary> +</member> +<member name=""> + +</member> +<member name="P:ProviderImplementation.ProvidedTypes.ProvidedConstructor.IsImplicitCtor"> +<summary> + Set a flag indicating that the constructor acts like an F# implicit constructor, so the + parameters of the constructor become fields and can be accessed using Expr.GlobalVar with the + same name. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedConstructor.GetInvokeCodeInternal(System.Boolean)"> +<summary> + FSharp.Data addition: this method is used by Debug.fs +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedConstructor.AddXmlDocDelayed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedConstructor.AddXmlDocComputed(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})"> +<summary> + Add XML documentation information to this provided constructor, where the documentation is re-computed every time it is required. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedConstructor.AddXmlDoc(System.String)"> +<summary> + Add XML documentation information to this provided constructor +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedConstructor.AddObsoleteAttribute(System.String,Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Add a 'System.Obsolete' attribute to this provided constructor +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedConstructor.AddDefinitionLocation(System.Int32,System.Int32,System.String)"> +<summary> + Add definition location information to the provided constructor. +</summary> +</member> +<member name="M:ProviderImplementation.ProvidedTypes.ProvidedConstructor.#ctor(Microsoft.FSharp.Collections.FSharpList{ProviderImplementation.ProvidedTypes.ProvidedParameter})"> +<summary> + Create a new provided constructor. It is not initially associated with any specific provided type definition. +</summary> +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedConstructor"> +<summary> + Represents an erased provided constructor. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.ProvidedTypes.ProvidedParameter"> +<summary> + Represents an erased provided parameter +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:ProviderImplementation.ProviderHelpers.generateType``1(System.String,System.String,System.Boolean,Microsoft.FSharp.Core.FSharpFunc{System.String,Microsoft.FSharp.Core.FSharpFunc{System.String,``0}},Microsoft.FSharp.Core.FSharpFunc{System.String,Microsoft.FSharp.Core.FSharpFunc{System.String,``0[]}},Microsoft.FSharp.Core.FSharpFunc{``0[],ProviderImplementation.ProviderHelpers.TypeProviderSpec},ProviderImplementation.AssemblyResolver.FSharpDataRuntimeVersion,ProviderImplementation.DisposableTypeProviderForNamespaces,Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig,ProviderImplementation.AssemblyReplacer,System.String,System.String,System.String)"> +<summary> + Creates all the constructors for a type provider: (Async)Parse, (Async)Load, (Async)GetSample(s), and default constructor + * sampleOrSampleUri - the text which can be a sample or an uri for a sample + * sampleIsList - true if the sample consists of several samples put together + * parseSingle - receives the file/url extension (or "" if not applicable) and the text value + * parseList - receives the file/url extension (or "" if not applicable) and the text value + * getSpecFromSamples - receives a seq of parsed samples and returns a TypeProviderSpec + * tp -> the type provider + * cfg -> the type provider config + * replacer -> the assemblyReplacer + * resolutionFolder -> if the type provider allows to override the resolutionFolder pass it here + * optResource - when specified, we first try to treat read the sample from an embedded resource + (the value specified assembly and resource name e.g. "MyCompany.MyAssembly, some_resource.json") + * typeName -> the full name of the type provider, this will be used for caching +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:ProviderImplementation.ProviderHelpers.parseTextAtDesignTime``1(System.String,Microsoft.FSharp.Core.FSharpFunc{System.String,Microsoft.FSharp.Core.FSharpFunc{System.String,``0[]}},System.String,FSharp.Data.Runtime.IO.IDisposableTypeProvider,Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig,System.String,System.String,System.String)"> +<summary> + Reads a sample parameter for a type provider, detecting if it is a uri and fetching it if needed + Samples from the web are cached for 30 minutes + Samples from the filesystem are read using shared read, so it works when the file is locked by Excel or similar tools, + and a filesystem watcher that calls the invalidate function whenever the file changes is setup + + Parameters: + * sampleOrSampleUri - the text which can be a sample or an uri for a sample + * parseFunc - receives the file/url extension (or "" if not applicable) and the text value + * formatName - the description of what is being parsed (for the error message) + * tp - the type provider + * cfg - the type provider config + * optResource - when specified, we first try to treat read the sample from an embedded resource + (the value specified assembly and resource name e.g. "MyCompany.MyAssembly, some_resource.json") + * resolutionFolder - if the type provider allows to override the resolutionFolder pass it here +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.ProviderHelpers"> + +</member> +<member name="M:ProviderImplementation.QuotationBuilder.op_Dynamic``2(System.Type,System.String,``0)"> +<summary> + Dynamic operator (?) that can be used for constructing quoted F# code without + quotations (to simplify constructing F# quotations in portable libraries - where + we need to pass the System.Type of various types as arguments) + + There are two possible uses: + typ?Name tyArgs args + typ?Name args + + In the first case, tyArgs is a sequence of type arguments for method `Name`. + Actual arguments can be either expression (Expr<'T>) or primitive values, whic + are automatically wrapped using Expr.Value. + +</summary> +</member> +<member name="T:ProviderImplementation.QuotationBuilder"> + +</member> +<member name=""> + +</member> +<member name="T:ProviderImplementation.ReflectionHelpers"> + +</member> +<member name="M:ProviderImplementation.XmlInference.inferType(System.Globalization.CultureInfo,System.Boolean,System.Boolean,System.Xml.Linq.XElement)"> +<summary> + A type is infered either using `inferLocalType` which only looks + at immediate children or using `inferGlobalType` which unifies nodes + of the same name in the entire document +</summary> +</member> +<member name="M:ProviderImplementation.XmlInference.inferLocalType(System.Globalization.CultureInfo,System.Boolean,System.Xml.Linq.XElement)"> +<summary> + Get information about type locally (the type of children is infered + recursively, so same elements in different positions have different types) +</summary> +</member> +<member name="M:ProviderImplementation.XmlInference.inferGlobalType(System.Globalization.CultureInfo,System.Boolean,System.Xml.Linq.XElement)"> +<summary> + Infers type for the element, unifying nodes of the same name + accross the entire document (we first get information based + on just attributes and then use a fixed point) +</summary> +</member> +<member name=""> + +</member> +<member name="M:ProviderImplementation.XmlInference.getAttributes(System.Globalization.CultureInfo,System.Xml.Linq.XElement)"> +<summary> + Generates record fields for all attributes +</summary> +</member> +<member name="T:ProviderImplementation.XmlInference"> + +</member> +<member name="M:ProviderImplementation.XmlTypeBuilder.generateXmlType(ProviderImplementation.XmlGenerationContext,FSharp.Data.Runtime.StructuralTypes.InferedType)"> +<summary> + Recursively walks over inferred type information and + generates types for read-only access to the document +</summary> +</member> +<member name=""> + +</member> +<member name="M:ProviderImplementation.XmlTypeBuilder.|HeterogeneousRecords|_|(FSharp.Data.Runtime.StructuralTypes.InferedType)"> +<summary> + Succeeds when type is a heterogeneous type containing recors + If the type is heterogeneous, but contains other things, exception + is thrown (this is unexpected, because XML elements are always records) +</summary> +</member> +<member name="M:ProviderImplementation.XmlTypeBuilder.|ContentType|_|(FSharp.Data.Runtime.StructuralTypes.InferedProperty)"> +<summary> + Recognizes different valid infered types of content: + + - `Primitive` means that the content is a value and there are no children + - `Collection` means that there are always just children but no value + - `Heterogeneous` means that there may be either children or value(s) + + We return a list with all possible primitive types and all possible + children types (both may be empty) +</summary> +</member> +<member name="T:ProviderImplementation.XmlTypeBuilder"> + +</member> +<member name=""> + +</member> +<member name="T:System.AssemblyVersionInformation"> + +</member> +</members> +</doc> diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.dll b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.dll new file mode 100755 index 0000000..3935354 Binary files /dev/null and b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.dll differ diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.pdb b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.pdb new file mode 100755 index 0000000..90917a5 Binary files /dev/null and b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.pdb differ diff --git a/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.xml b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.xml new file mode 100755 index 0000000..49ccaad --- /dev/null +++ b/2015_03_26_Tomas_Petricek_Domain_Specific_Languages_FSharp/packages/FSharp.Data.2.0.8/lib/net40/FSharp.Data.xml @@ -0,0 +1,4436 @@ +<?xml version="1.0" encoding="utf-8"?> +<doc> +<assembly><name>FSharp.Data</name></assembly> +<members> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.CsvFile.Parse(System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Parses the specified CSV content +</summary> +</member> +<member name="M:FSharp.Data.CsvFile.Load(System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Loads CSV from the specified uri +</summary> +</member> +<member name="M:FSharp.Data.CsvFile.Load(System.IO.TextReader,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Loads CSV from the specified reader +</summary> +</member> +<member name="M:FSharp.Data.CsvFile.Load(System.IO.Stream,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Loads CSV from the specified stream +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.CsvFile.AsyncLoad(System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.Boolean})"> +<summary> + Loads CSV from the specified uri asynchronously +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.CsvFile"> +<summary> + Represents a CSV file. The lines are read on demand from `reader`. + Columns are delimited by one of the chars passed by `separators` (defaults to just `,`), and + to escape the separator chars, the `quote` character will be used (defaults to `"`). + If `hasHeaders` is true (the default), the first line read by `reader` will not be considered part of data. + If `ignoreErrors` is true (the default is false), rows with a different number of columns from the header row + (or the first row if headers are not present) will be ignored. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.CsvRow.Item(System.String)"> +<summary> + Gets a column by name +</summary> +</member> +<member name="P:FSharp.Data.CsvRow.Item(System.Int32)"> +<summary> + Gets a column by index +</summary> +</member> +<member name="P:FSharp.Data.CsvRow.Columns"> +<summary> + The columns of the row +</summary> +</member> +<member name="M:FSharp.Data.CsvRow.GetColumn(System.String)"> +<summary> + Gets a column by name +</summary> +</member> +<member name="M:FSharp.Data.CsvRow.GetColumn(System.Int32)"> +<summary> + Gets a column by index +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.CsvRow"> +<summary> + Represents a CSV row. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Http.RequestString(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL synchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name="M:FSharp.Data.Http.RequestStream(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL synchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name="M:FSharp.Data.Http.Request(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL synchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Http.AsyncRequestString(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL asynchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name="M:FSharp.Data.Http.AsyncRequestStream(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL synchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name="M:FSharp.Data.Http.AsyncRequest(System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.HttpRequestBody},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}},Microsoft.FSharp.Core.FSharpOption{System.Net.CookieContainer},Microsoft.FSharp.Core.FSharpOption{System.Boolean},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.Net.HttpWebRequest,System.Net.HttpWebRequest}})"> +<summary> + Download an HTTP web resource from the specified URL asynchronously + (allows specifying query string parameters and HTTP headers including + headers that have to be handled specially - such as Accept, Content-Type & Referer) + The body for POST request can be specified either as text or as a list of parameters + that will be encoded, and the method will automatically be set if not specified +</summary> +</member> +<member name="M:FSharp.Data.Http.AppendQueryToUrl(System.String,Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}})"> +<summary> + Appends the query parameters to the url, taking care of proper escaping +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Http"> +<summary> + Utilities for working with network via HTTP. Includes methods for downloading + resources with specified headers, query parameters and HTTP body +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.HttpRequestBody"> +<summary> + The body to send in an HTTP request +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.HttpResponse"> +<summary> + The response returned by an HTTP request +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.HttpResponseBody"> +<summary> + The response body returned by an HTTP request +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.HttpResponseWithStream"> +<summary> + The response returned by an HTTP request with direct access to the response stream +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.TryGetProperty(FSharp.Data.JsonValue,System.String)"> +<summary> + Try to get a property of a JSON value. + Returns None if the value is not an object or if the property is not present. +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.Properties(FSharp.Data.JsonValue)"> +<summary> + Get a sequence of key-value pairs representing the properties of an object +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.Item(FSharp.Data.JsonValue,System.Int32)"> +<summary> + Try to get the value at the specified index, if the value is a JSON array. +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.Item(FSharp.Data.JsonValue,System.String)"> +<summary> + Assuming the value is an object, get value with the specified name +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.InnerText(FSharp.Data.JsonValue)"> +<summary> + Get inner text of an element +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.GetProperty(FSharp.Data.JsonValue,System.String)"> +<summary> + Get property of a JSON object. Fails if the value is not an object + or if the property is not present +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.GetEnumerator(FSharp.Data.JsonValue)"> +<summary> + Get all the elements of a JSON value (assuming that the value is an array) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsString(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get the string value of an element (assuming that the value is a scalar) + Returns the empty string for JsonValue.Null +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsInteger64(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get a number as a 64-bit integer (assuming that the value fits in 64-bit integer) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsInteger(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get a number as an integer (assuming that the value fits in integer) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsGuid(FSharp.Data.JsonValue)"> +<summary> + Get the guid value of an element (assuming that the value is a guid) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsFloat(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo},Microsoft.FSharp.Core.FSharpOption{System.String[]})"> +<summary> + Get a number as a float (assuming that the value is convertible to a float) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsDecimal(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get a number as a decimal (assuming that the value fits in decimal) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsDateTime(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get the datetime value of an element (assuming that the value is a string + containing well-formed ISO date or MSFT JSON date) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsBoolean(FSharp.Data.JsonValue,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Get the boolean value of an element (assuming that the value is a boolean) +</summary> +</member> +<member name="M:FSharp.Data.JsonExtensions.AsArray(FSharp.Data.JsonValue)"> +<summary> + Get all the elements of a JSON value. + Returns an empty array if the value is not a JSON array. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="F:FSharp.Data.JsonSaveOptions.DisableFormatting"> +<summary> + Print the JsonValue in one line in a compact way +</summary> +</member> +<member name="F:FSharp.Data.JsonSaveOptions.None"> +<summary> + Format (indent) the JsonValue +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.JsonSaveOptions"> +<summary> + Specifies the formatting behaviour of JSON values +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.JsonValue.RequestAsync(System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}})"> +<summary> + Sends the JSON to the specified uri. Defaults to a POST request. +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.Request(System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}})"> +<summary> + Sends the JSON to the specified uri. Defaults to a POST request. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.JsonValue.ParseSample(System.String,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Parses the specified JSON string, tolerating invalid errors like trailing commans, and ignore content with elipsis ... or {...} +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.ParseMultiple(System.String,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Parses the specified string into multiple JSON values +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.Parse(System.String,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Parses the specified JSON string +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.Load(System.String,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Loads JSON from the specified uri +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.Load(System.IO.TextReader,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Loads JSON from the specified reader +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.Load(System.IO.Stream,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Loads JSON from the specified stream +</summary> +</member> +<member name="M:FSharp.Data.JsonValue.AsyncLoad(System.String,Microsoft.FSharp.Core.FSharpOption{System.Globalization.CultureInfo})"> +<summary> + Loads JSON from the specified uri asynchronously +</summary> +</member> +<member name="T:FSharp.Data.JsonValue"> +<summary> + Represents a JSON value. Large numbers that do not fit in the + Decimal type are represented using the Float case, while + smaller numbers are represented as decimals to avoid precision loss. +</summary> +</member> +<member name="M:FSharp.Data.CsvExtensionsModule.op_Dynamic(FSharp.Data.CsvRow,System.String)"> +<summary> + Get column of a CsvRow +</summary> +</member> +<member name="T:FSharp.Data.CsvExtensionsModule"> + +</member> +<member name="M:FSharp.Data.FreebaseOperators.Where``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})"> +<summary> + Synonym for LINQ's Where + Included so you don't have to open System.LINQ to use the queries +</summary> +</member> +<member name="M:FSharp.Data.FreebaseOperators.Count``1(System.Linq.IQueryable{``0})"> +<summary> + Synonym for LINQ's Count + Included so you don't have to open System.LINQ to use the queries +</summary> +</member> +<member name="M:FSharp.Data.FreebaseOperators.ApproximateCount``1(System.Linq.IQueryable{``0})"> +<summary> + A Freebase query operation returning an approximate count of the items satisfying a query. +</summary> +</member> +<member name="M:FSharp.Data.FreebaseOperators.ApproximatelyOneOf(System.String,System.String[])"> +<summary> + A Freebase query operation that represents approximately matching one of the given strings. See http://www.freebase.com/docs/mql/ch03.html#directives. +</summary> +</member> +<member name="M:FSharp.Data.FreebaseOperators.ApproximatelyMatches(System.String,System.String)"> +<summary> + A Freebase query operation that represents a perl-style match of a string, e.g. "book club", "book*", "*book", "*book*", "^book", "book$", "* book *", "book-club", "book\-club". See http://www.freebase.com/docs/mql/ch03.html#directives. +</summary> +</member> +<member name="T:FSharp.Data.FreebaseOperators"> +<summary> + Extension members for operations permitted in queries of the Freebase service +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Helpers.asyncRead(System.IO.Stream)"> +<summary> + consumes a stream asynchronously until the end + and returns a memory stream with the full content +</summary> +</member> +<member name="T:FSharp.Data.Helpers"> + +</member> +<member name="P:FSharp.Data.HttpContentTypes.Csv"> +<summary> + text/csv +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Soap"> +<summary> + application/soap+xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.XHtml"> +<summary> + application/xhtml+xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Html"> +<summary> + text/html +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Rdf"> +<summary> + application/rdf+xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Atom"> +<summary> + application/atom+xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Rss"> +<summary> + application/rss+xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Xml"> +<summary> + application/xml +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.JavaScript"> +<summary> + application/javascript +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Json"> +<summary> + application/json +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.FormValues"> +<summary> + application/x-www-form-urlencoded +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.GZip"> +<summary> + application/octet-stream +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Zip"> +<summary> + application/octet-stream +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Binary"> +<summary> + application/octet-stream +</summary> +</member> +<member name="P:FSharp.Data.HttpContentTypes.Text"> +<summary> + plain/text +</summary> +</member> +<member name="T:FSharp.Data.HttpContentTypes"> +<summary> + Constants for common HTTP content types +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.HttpEncodings"> + +</member> +<member name="P:FSharp.Data.HttpMethod.Connect"> +<summary> + Reserved for use with a proxy that can dynamically switch to being a tunnel +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Trace"> +<summary> + Used to invoke a remote, application-layer loop- back of the request message +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Delete"> +<summary> + Requests that the origin server deletes the resource identified by the Request-URI +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Put"> +<summary> + Requests that the enclosed entity be stored under the supplied Request-URI +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Post"> +<summary> + Requests that the server accepts the entity enclosed in the request as a + new subordinate of the resource identified by the Request-URI in the Request-Line +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Head"> +<summary> + Identical to GET except that the server MUST NOT return a message-body in the response +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Get"> +<summary> + Retrieve whatever information (in the form of an entity) is identified by the URI +</summary> +</member> +<member name="P:FSharp.Data.HttpMethod.Options"> +<summary> + Request information about the communication options available on the request/response chain identified by the URI +</summary> +</member> +<member name="T:FSharp.Data.HttpMethod"> +<summary> + The method to use in an HTTP request +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.XHTTPMethodOverride(System.String)"> +<summary> + Override HTTP method. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Warning(System.String)"> +<summary> + A general warning about possible problems with the entity body +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Via(System.String)"> +<summary> + Informs the server of proxies through which the request was sent +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.UserAgent(System.String)"> +<summary> + The user agent string of the user agent +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Upgrade(System.String)"> +<summary> + Specifies additional communications protocols that the client supports. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Translate(System.String)"> +<summary> + Microsoft extension to the HTTP specification used in conjunction with WebDAV functionality. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Trailer(System.String)"> +<summary> + The Trailer general field value indicates that the given set of header fields is present in the trailer of a message encoded with chunked transfer-coding +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.TE(System.String)"> +<summary> + The transfer encodings the user agent is willing to accept: the same values as for the response header + Transfer-Encoding can be used, plus the "trailers" value (related to the "chunked" transfer method) to + notify the server it expects to receive additional headers (the trailers) after the last, zero-sized, chunk. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Referer(System.String)"> +<summary> + This is the address of the previous web page from which a link to the currently requested page was followed. (The word "referrer" is misspelled in the RFC as well as in most implementations.) +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Range(System.Int64,System.Int64)"> +<summary> + Request only part of an entity. Bytes are numbered from 0 +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ProxyAuthorization(System.String)"> +<summary> + Authorization credentials for connecting to a proxy. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Pragma(System.String)"> +<summary> + Implementation-specific headers that may have various effects anywhere along the request-response chain. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Origin(System.String)"> +<summary> + Initiates a request for cross-origin resource sharing (asks server for an 'Access-Control-Allow-Origin' response header) +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.MaxForwards(System.Int32)"> +<summary> + Limit the number of times the message can be forwarded through proxies or gateways +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.LastModified(System.DateTime)"> +<summary> + Specifies the date and time at which the accompanying body data was last modified +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.KeepAlive(System.String)"> +<summary> + Specifies a parameter used into order to maintain a persistent connection +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.IfUnmodifiedSince(System.DateTime)"> +<summary> + Only send the response if the entity has not been modified since a specific time +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.IfRange(System.String)"> +<summary> + If the entity is unchanged, send me the part(s) that I am missing; otherwise, send me the entire new entity +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.IfNoneMatch(System.String)"> +<summary> + Allows a 304 Not Modified to be returned if content is unchanged +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.IfModifiedSince(System.DateTime)"> +<summary> + Allows a 304 Not Modified to be returned if content is unchanged +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.IfMatch(System.String)"> +<summary> + Only perform the action if the client supplied entity matches the same entity on the server. + This is mainly for methods like PUT to only update a resource if it has not been modified since the user last updated it. If-Match: "737060cd8c284d8af7ad3082f209582d" Permanent +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Host(System.String)"> +<summary> + The domain name of the server (for virtual hosting), and the TCP port number on which the server is listening. + The port number may be omitted if the port is the standard port for the service requested. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.From(System.String)"> +<summary> + The email address of the user making the request +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Expires(System.DateTime)"> +<summary> + Gives the date/time after which the response is considered stale +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Expect(System.String)"> +<summary> + Indicates that particular server behaviors are required by the client +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Date(System.DateTime)"> +<summary> + The date and time that the message was sent +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentType(System.String)"> +<summary> + The MIME type of the body of the request (used with POST and PUT requests) +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentRange(System.String)"> +<summary> + Where in a full body message this partial message belongs +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentMD5(System.String)"> +<summary> + A Base64-encoded binary MD5 sum of the content of the request body +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentLocation(System.String)"> +<summary> + An alternate location for the returned data +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentLanguage(System.String)"> +<summary> + The language the content is in +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.ContentEncoding(System.String)"> +<summary> + The type of encoding used on the data +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Connection(System.String)"> +<summary> + What type of connection the user-agent would prefer +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.CacheControl(System.String)"> +<summary> + Used to specify directives that MUST be obeyed by all caching mechanisms along the request/response chain +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Authorization(System.String)"> +<summary> + Authentication credentials for HTTP authentication +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Allow(System.String)"> +<summary> + The Allow header, which specifies the set of HTTP methods supported. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.AcceptLanguage(System.String)"> +<summary> + List of acceptable human languages for response +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.AcceptEncoding(System.String)"> +<summary> + List of acceptable encodings. See HTTP compression. +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.AcceptDatetime(System.DateTime)"> +<summary> + Acceptable version in time +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.AcceptCharset(System.String)"> +<summary> + Character sets that are acceptable +</summary> +</member> +<member name="M:FSharp.Data.HttpRequestHeaders.Accept(System.String)"> +<summary> + Content-Types that are acceptable for the response +</summary> +</member> +<member name="T:FSharp.Data.HttpRequestHeaders"> +<summary> + Header to send in an HTTP request +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.WWWAuthenticate"> +<summary> + Indicates the authentication scheme that should be used to access the requested entity. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Warning"> +<summary> + A general warning about possible problems with the entity body. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Via"> +<summary> + Informs the client of proxies through which the response was sent. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Vary"> +<summary> + Tells downstream proxies how to match future request headers to decide whether the cached response can be used rather than requesting a fresh one from the origin server. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.TransferEncoding"> +<summary> + The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Trailer"> +<summary> + The Trailer general field value indicates that the given set of header fields is present in the trailer of a message encoded with chunked transfer-coding. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.StrictTransportSecurity"> +<summary> + A HSTS Policy informing the HTTP client how long to cache the HTTPS only policy and whether this applies to subdomains. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Status"> +<summary> + The HTTP status of the response +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.SetCookie"> +<summary> + An HTTP cookie +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Server"> +<summary> + A name for the server +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.RetryAfter"> +<summary> + If an entity is temporarily unavailable, this instructs the client to try again later. Value could be a specified period of time (in seconds) or a HTTP-date.[28] +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Refresh"> +<summary> + Used in redirection, or when a new resource has been created. This refresh redirects after 5 seconds. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ProxyAuthenticate"> +<summary> + Request authentication to access the proxy. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Pragma"> +<summary> + Implementation-specific headers that may have various effects anywhere along the request-response chain. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.P3P"> +<summary> + This header is supposed to set P3P policy +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Location"> +<summary> + Used in redirection, or when a new resource has been created. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Link"> +<summary> + Used to express a typed relationship with another resource, where the relation type is defined by RFC 5988 +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.LastModified"> +<summary> + The last modified date for the requested object +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Expires"> +<summary> + Gives the date/time after which the response is considered stale +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ETag"> +<summary> + An identifier for a specific version of a resource, often a message digest +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Date"> +<summary> + The date and time that the message was sent (in "HTTP-date" format as defined by RFC 2616) +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentType"> +<summary> + The MIME type of this content +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentRange"> +<summary> + Where in a full body message this partial message belongs +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentDisposition"> +<summary> + An opportunity to raise a "File Download" dialogue box for a known MIME type with binary format or suggest a filename for dynamic content. Quotes are necessary with special characters. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentMD5"> +<summary> + A Base64-encoded binary MD5 sum of the content of the response +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentLocation"> +<summary> + An alternate location for the returned data +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentLength"> +<summary> + The length of the response body in octets (8-bit bytes) +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentLanguage"> +<summary> + The language the content is in +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.ContentEncoding"> +<summary> + The type of encoding used on the data. See HTTP compression. +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Connection"> +<summary> + Options that are desired for the connection +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.CacheControl"> +<summary> + Tells all caching mechanisms from server to client whether they may cache this object. It is measured in seconds +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Allow"> +<summary> + Valid actions for a specified resource. To be used for a 405 Method not allowed +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.Age"> +<summary> + The age the object has been in a proxy cache in seconds +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.AcceptRanges"> +<summary> + What partial content range types this server supports +</summary> +</member> +<member name="P:FSharp.Data.HttpResponseHeaders.AccessControlAllowOrigin"> +<summary> + Specifying which web sites can participate in cross-origin resource sharing +</summary> +</member> +<member name="T:FSharp.Data.HttpResponseHeaders"> +<summary> + Header received in an HTTP response +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.JsonExtensionsModule.op_Dynamic(FSharp.Data.JsonValue,System.String)"> +<summary> + Get property of a JSON object (assuming that the value is an object) +</summary> +</member> +<member name="T:FSharp.Data.JsonExtensionsModule"> + +</member> +<member name="P:FSharp.Data.JsonValueModule.Object"> +<summary> + Constructor to create a `JsonValue.Record of (string * JsonValue)[]` as a `JsonValue.Object of Map<string, JsonValue>` for + backwards compatibility reaons +</summary> +</member> +<member name="M:FSharp.Data.JsonValueModule.|Object|_|(FSharp.Data.JsonValue)"> +<summary> + Active Pattern to view a `JsonValue.Record of (string * JsonValue)[]` as a `JsonValue.Object of Map<string, JsonValue>` for + backwards compatibility reaons +</summary> +</member> +<member name="T:FSharp.Data.JsonValueModule"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.CsvFile`1.Separators"> +<summary> + The character(s) used as column separator(s) +</summary> +</member> +<member name="P:FSharp.Data.Runtime.CsvFile`1.Rows"> +<summary> + The rows with data +</summary> +</member> +<member name="P:FSharp.Data.Runtime.CsvFile`1.Quote"> +<summary> + The quotation mark use for surrounding values containing separator chars +</summary> +</member> +<member name="P:FSharp.Data.Runtime.CsvFile`1.NumberOfColumns"> +<summary> + The number of columns +</summary> +</member> +<member name="P:FSharp.Data.Runtime.CsvFile`1.Headers"> +<summary> + The names of the columns +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Truncate(System.Int32)"> +<summary> + Returns a csv that when enumerated returns at most N rows. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.TakeWhile(System.Func{`0,System.Boolean})"> +<summary> + Returns a csv that, when iterated, yields rowswhile the given predicate + returns <c>true</c>, and then returns no further rows. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Take(System.Int32)"> +<summary> + Returns a new csv with only the first N rows of the underlying csv. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.SkipWhile(System.Func{`0,System.Boolean})"> +<summary> + Returns a csv that, when iterated, skips rows while the given predicate returns + <c>true</c>, and then yields the remaining rows. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Skip(System.Int32)"> +<summary> + Returns a csv that skips N rows and then yields the remaining rows. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.SaveToString(Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Char})"> +<summary> + Saves CSV to a string +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Save(System.String,Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Char})"> +<summary> + Saves CSV to the specified file +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Save(System.IO.Stream,Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Char})"> +<summary> + Saves CSV to the specified stream +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Save(System.IO.TextWriter,Microsoft.FSharp.Core.FSharpOption{System.Char},Microsoft.FSharp.Core.FSharpOption{System.Char})"> +<summary> + Saves CSV to the specified writer +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Filter(System.Func{`0,System.Boolean})"> +<summary> + Returns a new csv containing only the rows for which the given predicate returns "true". +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Create(System.Func{System.Object,System.String[],`0},System.Func{`0,System.String[]},System.IO.TextReader,System.String,System.Char,System.Boolean,System.Boolean,System.Boolean)"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.Cache"> +<summary> + Returns a new csv with the same rows as the original but which guarantees + that each row will be only be read and parsed from the input at most once. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvFile`1.#ctor(System.Func{System.Object,System.String[],`0},System.Func{`0,System.String[]},System.Func{System.IO.TextReader},System.String,System.Char,System.Boolean,System.Boolean)"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.CsvFile`1"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.IJsonDocument"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.JsonConversions"> +<summary> + Conversions from JsonValue to string/int/int64/decimal/float/boolean/datetime/guid options +</summary> +</member> +<member name="F:FSharp.Data.Runtime.FSharp.Data.Runtime.JsonDocument.Path"> +<summary> + [omit] +</summary> +</member> +<member name="F:FSharp.Data.Runtime.FSharp.Data.Runtime.JsonDocument.Json"> +<summary> + [omit] +</summary> +</member> +<member name="P:FSharp.Data.Runtime.JsonDocument._Print"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.JsonDocument.JsonValue"> +<summary> + The underlying JsonValue +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonDocument.ToString"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.JsonDocument.CreateList(System.IO.TextReader,System.String)"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonDocument.Create(System.IO.TextReader,System.String)"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonDocument.Create(FSharp.Data.JsonValue,System.String)"> +<summary> + [omit] +</summary> +</member> +<member name="T:FSharp.Data.Runtime.JsonDocument"> +<summary> + Underlying representation of types generated by JsonProvider +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.TryGetValueByTypeTag``1(FSharp.Data.Runtime.IJsonDocument,System.String,System.String,System.Func{FSharp.Data.Runtime.IJsonDocument,``0})"> +<summary> + Returns a single or no value by tag type +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.TryGetPropertyUnpackedWithPath(FSharp.Data.Runtime.IJsonDocument,System.String)"> +<summary> + Get optional json property and wrap it together with path +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.TryGetPropertyUnpacked(FSharp.Data.Runtime.IJsonDocument,System.String)"> +<summary> + Get optional json property +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.TryGetPropertyPacked(FSharp.Data.Runtime.IJsonDocument,System.String)"> +<summary> + Get optional json property wrapped in json document +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.TryGetArrayChildByTypeTag``1(FSharp.Data.Runtime.IJsonDocument,System.String,System.String,System.Func{FSharp.Data.Runtime.IJsonDocument,``0})"> +<summary> + Returns single or no value from an array matching the specified tag +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.GetPropertyPackedOrNull(FSharp.Data.Runtime.IJsonDocument,System.String)"> +<summary> + Get json property and wrap in json document, and return null if not found +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.GetPropertyPacked(FSharp.Data.Runtime.IJsonDocument,System.String)"> +<summary> + Get json property and wrap in json document +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.GetNonOptionalValue``1(System.String,Microsoft.FSharp.Core.FSharpOption{``0},Microsoft.FSharp.Core.FSharpOption{FSharp.Data.JsonValue})"> +<summary> + Operation that extracts the value from an option and reports a meaningful error message when the value is not there + If the originalValue is a scalar, for missing strings we return "", and for missing doubles we return NaN + For other types an error is thrown +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.GetArrayChildrenByTypeTag``1(FSharp.Data.Runtime.IJsonDocument,System.String,System.String,System.Func{FSharp.Data.Runtime.IJsonDocument,``0})"> +<summary> + Returns all array values that match the specified tag +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.GetArrayChildByTypeTag(FSharp.Data.Runtime.IJsonDocument,System.String,System.String)"> +<summary> + Returns a single array children that matches the specified tag +</summary> +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.CreateValue(System.Object,System.String)"> +<summary> + Creates a scalar JsonValue and wraps it in a json document +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.CreateArray(System.Object[],System.String)"> +<summary> + Creates a scalar JsonValue.Array and wraps it in a json document +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.ConvertOptionalProperty``1(FSharp.Data.Runtime.IJsonDocument,System.String,System.Func{FSharp.Data.Runtime.IJsonDocument,``0})"> +<summary> + Get optional json property and convert to a specified type +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.JsonRuntime.ConvertArray``1(FSharp.Data.Runtime.IJsonDocument,System.Func{FSharp.Data.Runtime.IJsonDocument,``0})"> +<summary> + Converts JSON array to array of target types +</summary> +</member> +<member name="T:FSharp.Data.Runtime.JsonRuntime"> +<summary> + Static helper methods called from the generated code for working with JSON +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.JsonValueOptionAndPath"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.TextConversions.AsString(System.String)"> +<summary> + Turns empty or null string value into None, otherwise returns Some +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.TextConversions.AsFloat(System.String[],System.Boolean,System.IFormatProvider,System.String)"> +<summary> + if useNoneForMissingValues is true, NAs are returned as None, otherwise Some Double.NaN is used +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.TextConversions.AsDateTime(System.IFormatProvider,System.String)"> +<summary> + Parse date time using either the JSON milliseconds format or using ISO 8601 + that is, either "\/Date(<msec-since-1/1/1970>)\/" or something + along the lines of "2013-01-28T00:37Z" +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.TextConversions"> +<summary> + Conversions from string to string/int/int64/decimal/float/boolean/datetime/guid options +</summary> +</member> +<member name="M:FSharp.Data.Runtime.TextRuntime.OptionToNullable``1(Microsoft.FSharp.Core.FSharpOption{``0})"> +<summary> + Turn an F# option type Option<'T> containing a primitive + value type into a .NET type Nullable<'T> +</summary> +</member> +<member name="M:FSharp.Data.Runtime.TextRuntime.NullableToOption``1(System.Nullable{``0})"> +<summary> + Turn a .NET type Nullable<'T> to an F# option type Option<'T> +</summary> +</member> +<member name="M:FSharp.Data.Runtime.TextRuntime.GetNonOptionalValue``1(System.String,Microsoft.FSharp.Core.FSharpOption{``0},Microsoft.FSharp.Core.FSharpOption{System.String})"> +<summary> + Operation that extracts the value from an option and reports a meaningful error message when the value is not there + For missing strings we return "", and for missing doubles we return NaN + For other types an error is thrown +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.TextRuntime.GetCulture(System.String)"> +<summary> + Returns CultureInfo matching the specified culture string + (or InvariantCulture if the argument is null or empty) +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.TextRuntime.AsyncMap``2(Microsoft.FSharp.Control.FSharpAsync{``0},System.Func{``0,``1})"> +<summary> + Turn a sync operation into an async operation +</summary> +</member> +<member name="T:FSharp.Data.Runtime.TextRuntime"> +<summary> + Static helper methods called from the generated code for working with text +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.XmlElement._Print"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.XmlElement.ToString"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.XmlElement.CreateList(System.IO.TextReader)"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.XmlElement.Create(System.IO.TextReader)"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.Runtime.XmlElement.Create(System.Xml.Linq.XElement)"> +<summary> + [omit] +</summary> +</member> +<member name="T:FSharp.Data.Runtime.XmlElement"> +<summary> + Underlying representation of types generated by XmlProvider +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.XmlRuntime.TryGetJsonValue(FSharp.Data.Runtime.XmlElement,System.String)"> +<summary> + Tries to return the contents of the element as a JsonValue +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.XmlRuntime.GetJsonValue(FSharp.Data.Runtime.XmlElement,System.String)"> +<summary> + Returns the contents of the element as a JsonValue +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.XmlRuntime.CreateValue(System.String,System.Object,System.String)"> +<summary> + Creates a XElement with a scalar value and wraps it in a XmlElement +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.XmlRuntime.ConvertAsName``1(FSharp.Data.Runtime.XmlElement,System.String,System.Func{FSharp.Data.Runtime.XmlElement,``0})"> +<summary> + Returns Some if the specified XmlElement has the specified name + (otherwise None is returned). This is used when the current element + can be one of multiple elements. +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.XmlRuntime"> +<summary> + Static helper methods called from the generated code for working with XML +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Caching.ICache`1"> +<summary> + Represents a cache (various implementations are available) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Caching.createInternetFileCache(System.String,System.TimeSpan)"> +<summary> + Creates a cache that stores data in a local file system +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Caching.hashString(System.String)"> +<summary> + Get hash code of a string - used to determine cache file +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Caching.createInMemoryCache``1(System.TimeSpan)"> +<summary> + Creates a cache that uses in-memory collection +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Caching.createNonCachingCache``1"> +<summary> + Creates a fake cache +</summary> +</member> +<member name="T:FSharp.Data.Runtime.Caching"> +<summary> + Implements caching using in-memory and local file system +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.CsvHelpers.ReentrantEnumerable`1"> +<summary> + An enumerable that will return elements from the 'firstSeq' first time it + is accessed and then will call 'nextSeq' each time for all future GetEnumerator calls +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.CsvHelpers"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.CsvInference.CsvFile.InferColumnTypes(FSharp.Data.CsvFile,System.Int32,System.String[],System.Globalization.CultureInfo,System.String,System.Boolean,System.Boolean,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.String,System.Type}})"> +<summary> + Infers the types of the columns of a CSV file + Parameters: + * inferRows - Number of rows to use for inference. If this is zero, all rows are used + * missingValues - The set of strings recogized as missing values + * cultureInfo - The culture used for parsing numbers and dates + * schema - Optional column types, in a comma separated list. Valid types are "int", "int64", "bool", "float", "decimal", "date", "guid", "string", "int?", "int64?", "bool?", "float?", "decimal?", "date?", "guid?", "int option", "int64 option", "bool option", "float option", "decimal option", "date option", "guid option" and "string option". You can also specify a unit and the name of the column like this: Name (type&lt;unit&gt;). You can also override only the name. If you don't want to specify all the columns, you can specify by name like this: 'ColumnName=type' + * assumeMissingValues - Assumes all columns can have missing values + * preferOptionals - when set to true, inference will prefer to use the option type instead of nullable types, double.NaN or "" for missing values + * getUnitOfMeasure - optional function to resolve Units of Measure +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvInference.getFields(System.Boolean,FSharp.Data.Runtime.StructuralTypes.InferedType,Microsoft.FSharp.Core.FSharpOption{FSharp.Data.Runtime.StructuralTypes.PrimitiveInferedProperty}[])"> +<summary> + Generates the fields for a CSV row. The CSV provider should be + numerical-friendly, so we do a few simple adjustments. + When preferOptionals is false: + + - Optional fields of type 'int' are generated as Nullable<int> + - Optional fields of type 'int64' are generated as Nullable<int64> + - Optional fields of type 'float' are just floats (and null becomes NaN) + - Optional fields of type 'decimal' are generated as floats too + - Optional fields of any other non-nullable T (bool/date/guid) become option<T> + - All other types are simply strings. + + When preferOptionals is true: + + - All optional fields of type 'T' for any type become option<T>, including strings and floats +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvInference.inferType(Microsoft.FSharp.Core.FSharpFunc{System.String,System.Type},FSharp.Data.CsvFile,System.Int32,System.String[],System.Globalization.CultureInfo,System.String,System.Boolean,System.Boolean)"> +<summary> + Infers the type of a CSV file using the specified number of rows + (This handles units in the same way as the original MiniCSV provider) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvInference.parseSchemaItem(Microsoft.FSharp.Core.FSharpFunc{System.String,System.Type},System.String,System.Boolean)"> +<summary> + Parse schema specification for column. This can either be a name + with type or just type: name (typeInfo)|typeInfo. + If forSchemaOverride is set to true, only Full or Name is returne + (if we succeed we override the inferred schema, otherwise, we just + override the header name) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvInference.parseTypeAndUnit``1(Microsoft.FSharp.Core.FSharpFunc{System.String,``0},System.String)"> +<summary> + Parses type specification in the schema for a single column. + This can be of the form: type|measure|type<measure> +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.CsvInference.nameToType"> +<summary> + The schema may be set explicitly. This table specifies the mapping + from the names that users can use to the types used. +</summary> +</member> +<member name="T:FSharp.Data.Runtime.CsvInference"> +<summary> + Structural inference for CSV +</summary> +</member> +<member name="M:FSharp.Data.Runtime.CsvReader.readCsvFile(System.IO.TextReader,System.String,System.Char)"> +<summary> + Lazily reads the specified CSV file using the specified separators + (Handles most of the RFC 4180 - most notably quoted values and also + quoted newline characters in columns) +</summary> +</member> +<member name="T:FSharp.Data.Runtime.CsvReader"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataConnection.TryGetPropertyById(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId,FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId)"> +<summary> + Get the FreebaseProperty object that gives schema information for a particular property of a particular type. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataConnection.GetInitialDataForSpecificObjectOfType(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId,FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseMachineId)"> +<summary> + Get a property bag for a specific object, giving values for the properties of the given type +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataConnection.GetInitialDataForObjectsFromQueryText(Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}},FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId,System.Int32)"> +<summary> + Get property bags for all the objects of the given type, at the given type +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataConnection.GetInitialDataForAllObjectsForPropertyOfObject(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseMachineId,FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId,FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty,FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId,System.Int32)"> +<summary> + Get property bags for all the objects in the specific property relation to a given object, giving values for the properties of the given property type +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseDataConnection"> +<summary> + Represents a data connection to Freebase +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataContext._Create(System.String,System.String,System.Boolean,System.String,System.Boolean,System.Boolean)"> +<summary> + Create a data context +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDataContext.FSharp-Data-Runtime-Freebase-IFreebaseDataContext-GetDomainCategoryById(System.String)"> +<summary> + Get the object which represents the Freebase domain with the given object id. +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseDataContext"> +<summary> + Contains public entry points called by provided code. + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseDataContextSettings"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDomain.FSharp-Data-Runtime-Freebase-IFreebaseDomain-GetObjectsOfTypeId(System.String)"> +<summary> + Get all the Freebase objects which have the given Freebase type id. +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseDomain"> +<summary> + Represents the contents of a Freebase namespace + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseDomainCategory.FSharp-Data-Runtime-Freebase-IFreebaseDomainCategory-GetDomainById(System.String)"> +<summary> + Get all the Freebase objects which have the given Freebase type id. + Get the object which represents the Freebase domain with the given object id. +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseDomainCategory"> +<summary> + Represents the contents of a Freebase namespace + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseIndividuals._GetIndividualsObject(System.Object)"> +<summary> + Get all the Freebase objects which have the given Freebase type id. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseIndividuals.FSharp-Data-Runtime-Freebase-IFreebaseIndividuals-GetIndividualById(System.String,System.String)"> +<summary> + Get all the Freebase objects which have the given type id and object id. +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseIndividuals"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseObject.Name"> +<summary> + The Name of this item +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseObject.MainImage"> +<summary> + The main image associated with this item, if any +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseObject.MachineId"> +<summary> + The machine ID of this item +</summary> +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseObject.Id"> +<summary> + The ID of this item +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseObject.Blurb"> +<summary> + The Blurb text for this item, if any +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseObject.GetImages"> +<summary> + Images associated with this item. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseObject"> +<summary> + Represents a single object drawn from Freebase. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebasePropertyBag"> +<summary> + Represents data for a single object +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSendingQueryArgs"> +<summary> + Arguments of the DataContext.SendingQuery event +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSendingRequestArgs"> +<summary> + Arguments of the DataContext.SendingRequest event +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.IFreebaseDataContext"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.IFreebaseDomain"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.IFreebaseDomainCategory"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.IFreebaseIndividuals"> +<summary> + [omit] +</summary> +</member> +<member name="P:FSharp.Data.Runtime.Freebase.IFreebaseObject.Name"> +<summary> + The name of this item +</summary> +</member> +<member name="P:FSharp.Data.Runtime.Freebase.IFreebaseObject.MainImage"> +<summary> + The main image associated with this item +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.IFreebaseObject.Blurb"> +<summary> + The Blurb text for this item, if any +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.IFreebaseObject.GetRequiredPropertyByIdTyped``1(System.String,System.String)"> +<summary> + Get a property by identifier, with a strong type, where the property is known to be populated +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.IFreebaseObject.GetRequiredPropertyById(System.String,System.String)"> +<summary> + Get a property by identifier, where the property is known to be populated +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.IFreebaseObject.GetPropertyByIdTyped``1(System.String,System.String)"> +<summary> + Get a property by identifier, with a strong type +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.IFreebaseObject.GetPropertyById(System.String,System.String)"> +<summary> + Get a property by identifier +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.IFreebaseObject.GetImages"> +<summary> + Images associated with this item. +</summary> +</member> +<member name="T:FSharp.Data.Runtime.Freebase.IFreebaseObject"> +<summary> + [omit] + Represents a single object drawn from Freebase. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseRequests.Utilities"> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseRequests"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="F:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.typeIdToType"> +<summary> + Cache policy for type properties. This will be used at runtime. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetTypeByTypeId(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId)"> +<summary> + Get the types that correspond to type id. The properties of the type are filled in. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetDomainStructure"> +<summary> + Query the structure of common domains and all the type types in that domain. Design-time only. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetDomainCategories"> +<summary> + Query the structure of common domains and all the type types in that domain. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetBlurbByMachineId(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseMachineId)"> +<summary> + Get the 'blurb' text for this topic ID +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetBlurbById(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId)"> +<summary> + Get the 'blurb' text for this topic ID +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetAllTypesInDomainSansProperties(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseId)"> +<summary> + Return all typesin a domain. Design-time only. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetAllTypesInAllDomainsSansProperties"> +<summary> + Return all types. Design-time only. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection.GetAllObjectsOfType(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseType,System.Int32,Microsoft.FSharp.Core.FSharpOption{System.String})"> +<summary> + Get property bags for all the objects of the given type, at the given type +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseDomainCategory"> +<summary> + The element type returned by GetDomainCategories +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseDomainStructure"> +<summary> + The element type returned by GetDomainStructure. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="F:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty.UnitOfMeasureId"> +<summary> + The unit of measure for the property, if any. e.g. /en/kilometer +</summary> +</member> +<member name=""> + +</member> +<member name="F:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty.EnumerationId"> +<summary> + Name of the enumeration type. Like /authority/gnis +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty.FSharpPropertyType(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection,Microsoft.FSharp.Core.FSharpFunc{FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty,Microsoft.FSharp.Core.FSharpOption{System.Tuple{System.Type,System.Boolean}}},Microsoft.FSharp.Core.FSharpFunc{FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseType,Microsoft.FSharp.Core.FSharpOption{System.Type}},Microsoft.FSharp.Core.FSharpFunc{System.Type,System.Type},Microsoft.FSharp.Core.FSharpFunc{System.Type,System.Type},System.Boolean)"> +<summary> + Compute the provided or erased runtime type corresponding to the Freebase property. + 'typeReprFunction' indicates if erasure is happening or not. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty.FSharpPropertyElementType(FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseSchemaConnection,Microsoft.FSharp.Core.FSharpFunc{FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseProperty,Microsoft.FSharp.Core.FSharpOption{System.Tuple{System.Type,System.Boolean}}},Microsoft.FSharp.Core.FSharpFunc{FSharp.Data.Runtime.Freebase.FreebaseSchema.FreebaseType,Microsoft.FSharp.Core.FSharpOption{System.Type}})"> +<summary> + Compute the provided or erased runtime type corresponding to the Freebase property. + 'typeReprFunction' indicates if erasure is happening or not. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.FreebaseSchema.units"> +<summary> + This table of data was downloaded from www.freebase.com itself. + See www.freebase.com for term and conditions of use. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.FreebaseSchema.Utilities.dictionaryFromJson(FSharp.Data.JsonValue)"> +<summary> + Represents one object's values for all the properties of one type id. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSchema.Utilities"> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.FreebaseSchema"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.QueryImplementation.FreebasePropAccess"> +<summary> + The algebra of different supported qualifications +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.QueryImplementation.formatQueryData(FSharp.Data.Runtime.Freebase.FreebaseDataConnection,FSharp.Data.Runtime.Freebase.QueryImplementation.FreebaseQueryData)"> +<summary> + Format as query text for MQL +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Freebase.QueryImplementation.formatPropAccessCx``1(FSharp.Data.Runtime.Freebase.FreebaseDataConnection,Microsoft.FSharp.Collections.FSharpList{System.Tuple{``0,System.String}},System.String,System.String)"> +<summary> + with all the non-compound fields filled in. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.Freebase.QueryImplementation.evaluateOnClientSideWhereNecessary"> +<summary> + TODO: make this a parameter +</summary> +</member> +<member name="T:FSharp.Data.Runtime.Freebase.QueryImplementation"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Freebase.RuntimeConversion"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.Helpers.asOption``1(System.Boolean,``0)"> +<summary> + Convert the result of TryParse to option type +</summary> +</member> +<member name="T:FSharp.Data.Runtime.Helpers"> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.HttpUtils"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.IO.UriResolver.Resolve(System.Uri)"> +<summary> + Resolve the absolute location of a file (or web URL) according to the rules + used by standard F# type providers as described here: + https://github.com/fsharp/fsharpx/issues/195#issuecomment-12141785 + + * if it is web resource, just return it + * if it is full path, just return it + * otherwise. + + At design-time: + * if the user specified resolution folder, use that + * otherwise use the default resolution folder + At run-time: + * if the user specified resolution folder, use that + * if it is running in F# interactive (config.IsHostedExecution) + use the default resolution folder + * otherwise, use 'CurrentDomain.BaseDirectory' + returns an absolute uri * isWeb flag +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.IO.asyncReadTextAtRuntimeWithDesignTimeRules(System.String,System.String,System.String,System.String)"> +<summary> + Returns a TextReader for the uri using the designtime resolution rules +</summary> +</member> +<member name="M:FSharp.Data.Runtime.IO.asyncReadTextAtRuntime(System.Boolean,System.String,System.String,System.String,System.String)"> +<summary> + Returns a TextReader for the uri using the runtime resolution rules +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.IO.asyncReadText(Microsoft.FSharp.Core.FSharpOption{System.Tuple{FSharp.Data.Runtime.IO.IDisposableTypeProvider,System.String}},FSharp.Data.Runtime.IO.UriResolver,System.String,System.Uri)"> +<summary> + Opens a stream to the uri using the uriResolver resolution rules + It the uri is a file, uses shared read, so it works when the file locked by Excel or similar tools, + and sets up a filesystem watcher that calls the invalidate function whenever the file changes +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.IO"> +<summary> + Helper functions called from the generated code for working with files +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.singularize(System.String)"> +<summary> + Return the singular of an English word +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.pluralize(System.String)"> +<summary> + Return the plural of an English word +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.trimHtml(System.String)"> +<summary> + Trim HTML tags from a given string and replace all of them with spaces + Multiple tags are replaced with just a single space. (This is a recursive + implementation that is somewhat faster than regular expression.) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.uniqueGenerator``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.String})"> +<summary> + Given a function to format names (such as `niceCamelName` or `nicePascalName`) + returns a name generator that never returns duplicate name (by appending an + index to already used names) + + This function is curried and should be used with partial function application: + + let makeUnique = uniqueGenerator nicePascalName + let n1 = makeUnique "sample-name" + let n2 = makeUnique "sample-name" + +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.niceCamelName(System.String)"> +<summary> + Turns a given non-empty string into a nice 'camelCase' identifier +</summary> +</member> +<member name="M:FSharp.Data.Runtime.NameUtils.nicePascalName(System.String)"> +<summary> + Turns a given non-empty string into a nice 'PascalCase' identifier +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.NameUtils"> +<summary> + Tools for generating nice member names that follow F# & .NET naming conventions +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.Pluralizer"> + +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.getInferedTypeFromString(System.Globalization.CultureInfo,System.String,Microsoft.FSharp.Core.FSharpOption{System.Type})"> +<summary> + Infers the type of a simple string value +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.inferPrimitiveType(System.Globalization.CultureInfo,System.String)"> +<summary> + Infers the type of a simple string value + Returns one of null|typeof<Bit0>|typeof<Bit1>|typeof<bool>|typeof<int>|typeof<int64>|typeof<decimal>|typeof<float>|typeof<Guid>|typeof<DateTime>|typeof<string> +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.inferCollectionType(System.Boolean,System.Collections.Generic.IEnumerable{FSharp.Data.Runtime.StructuralTypes.InferedType})"> +<summary> + Infer the type of the collection based on multiple sample types + (group the types by tag, count their multiplicity) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.unionRecordTypes(System.Boolean,Microsoft.FSharp.Collections.FSharpList{FSharp.Data.Runtime.StructuralTypes.InferedProperty},Microsoft.FSharp.Collections.FSharpList{FSharp.Data.Runtime.StructuralTypes.InferedProperty})"> +<summary> + Get the union of record types (merge their properties) + This matches the corresponding members and marks them as `Optional` + if one may be missing. It also returns subtype of their types. +</summary> +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.unionCollectionTypes(System.Boolean,Microsoft.FSharp.Collections.FSharpMap{FSharp.Data.Runtime.StructuralTypes.InferedTypeTag,System.Tuple{FSharp.Data.Runtime.StructuralTypes.InferedMultiplicity,FSharp.Data.Runtime.StructuralTypes.InferedType}},Microsoft.FSharp.Collections.FSharpMap{FSharp.Data.Runtime.StructuralTypes.InferedTypeTag,System.Tuple{FSharp.Data.Runtime.StructuralTypes.InferedMultiplicity,FSharp.Data.Runtime.StructuralTypes.InferedType}})"> +<summary> + A collection can contain multiple types - in that case, we do keep + the multiplicity for each different type tag to generate better types + (this is essentially the same as `unionHeterogeneousTypes`, but + it also handles the multiplicity) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.unionHeterogeneousTypes(System.Boolean,Microsoft.FSharp.Collections.FSharpMap{FSharp.Data.Runtime.StructuralTypes.InferedTypeTag,FSharp.Data.Runtime.StructuralTypes.InferedType},Microsoft.FSharp.Collections.FSharpMap{FSharp.Data.Runtime.StructuralTypes.InferedTypeTag,FSharp.Data.Runtime.StructuralTypes.InferedType})"> +<summary> + Given two heterogeneous types, get a single type that can represent all the + types that the two heterogeneous types can. + Heterogeneous types already handle optionality on their own, so we drop + optionality from all its inner types +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.subtypeInfered(System.Boolean,FSharp.Data.Runtime.StructuralTypes.InferedType,FSharp.Data.Runtime.StructuralTypes.InferedType)"> +<summary> + Find common subtype of two infered types: + + * If the types are both primitive, then we find common subtype of the primitive types + * If the types are both records, then we union their fields (and mark some as optional) + * If the types are both collections, then we take subtype of their elements + (note we do not generate heterogeneous types in this case!) + * If one type is the Top type, then we return the other without checking + * If one of the types is the Null type and the other is not a value type + (numbers or booleans, but not string) then we return the other type. + Otherwise, we return bottom. + + The contract that should hold about the function is that given two types with the + same `InferedTypeTag`, the result also has the same `InferedTypeTag`. + +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.|SubtypePrimitives|_|(System.Boolean,FSharp.Data.Runtime.StructuralTypes.InferedType,FSharp.Data.Runtime.StructuralTypes.InferedType)"> +<summary> + Active pattern that calls `subtypePrimitives` on two primitive types +</summary> +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.StructuralInference.conversionTable"> +<summary> + Find common subtype of two primitive types or `Bottom` if there is no such type. + The numeric types are ordered as below, other types are not related in any way. + + float :> decimal :> int64 :> int :> bit :> bit0 + float :> decimal :> int64 :> int :> bit :> bit1 + bool :> bit :> bit0 + bool :> bit :> bit1 + + This means that e.g. `int` is a subtype of `decimal` and so all `int` values + are also `decimal` (and `float`) values, but not the other way round. +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.typeTag(FSharp.Data.Runtime.StructuralTypes.InferedType)"> +<summary> + Returns a tag of a type - a tag represents a 'kind' of type + (essentially it describes the different bottom types we have) +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.supportsUnitsOfMeasure(System.Type)"> +<summary> + Checks whether a type supports unit of measure +</summary> +</member> +<member name="P:FSharp.Data.Runtime.StructuralInference.primitiveTypes"> +<summary> + List of primitive types that can be returned as a result of the inference +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralInference.Helpers"> + +</member> +<member name="M:FSharp.Data.Runtime.StructuralInference.List.pairBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``0})"> +<summary> + Merge two sequences by pairing elements for which + the specified predicate returns the same key + + (If the inputs contain the same keys, then the order + of the elements is preserved.) +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralInference.List"> +<summary> + [omit] +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralInference"> +<summary> + Implements type inference for unstructured documents like XML or JSON +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.TypeWrapper.Nullable"> +<summary> + The type T will be converter to type Nullable<T> +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.TypeWrapper.Option"> +<summary> + The type T will be converter to type T option +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.TypeWrapper.None"> +<summary> + No transformation will be made to the type +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.TypeWrapper"> +<summary> + Represents a transformation of a type +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.PrimitiveInferedProperty"> +<summary> + Represents type information about a primitive property (used mainly in the CSV provider) + This type captures the type, unit of measure and handling of missing values (if we + infer that the value may be missing, we can generate option<T> or nullable<T>) +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.Bit"> +<summary> + Dummy type to represent that only one of "0" and "1" were found + Will be generated as a 'bool', unless it's converted to another numerical type +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.Bit1"> +<summary> + Dummy type to represent that only "1" was found + Will be generated as 'int', unless it's converted to Bit +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.Bit0"> +<summary> + Dummy type to represent that only "0" was found. + Will be generated as 'int', unless it's converted to Bit. +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.StructuralTypes.InferedType.EnsuresHandlesMissingValues(System.Boolean)"> +<summary> + When allowEmptyValues is true, we allow "" and double.NaN, otherwise + we make the type optional and use None instead. + It's currently only true in CsvProvider when PreferOptionals is set to false +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.InferedType"> +<summary> + Represents inferred structural type. A type may be either primitive type + (one of those listed by `primitiveTypes`) or it can be collection, + (named) record and heterogeneous type. We also have `Null` type (which is + a subtype of all non-primitive types) and universal `Top` type. + + * For collection, we infer the types of different things that appear in + the collection and how many times they do. + + * A heterogeneous type (sum type) is simply a choice containing one + of multiple different possibilities + + Why is collection not simply a list of Heterogeneous types? If we used that + we would lose information about multiplicity and so we would not be able + to generate nicer types! +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.StructuralTypes.InferedTypeTag.Code"> +<summary> + Converts tag to string code that can be passed to generated code +</summary> +</member> +<member name="M:FSharp.Data.Runtime.StructuralTypes.InferedTypeTag.ParseCode(System.String)"> +<summary> + Parses code returned by 'Code' member (to be used in provided code) +</summary> +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.InferedTypeTag"> +<summary> + For heterogeneous types, this represents the tag that defines the form + (that is either primitive type, collection, named record etc.) +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.InferedMultiplicity"> +<summary> + For heterogeneous types (types that have multiple possible forms + such as differently named XML nodes or records and arrays mixed together) + this type represents the number of occurrences of individual forms +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.StructuralTypes.InferedProperty"> +<summary> + A property of a record has a name and type and may be optional +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.UriUtils"> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.WorldBankData"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IWorldBankData"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.TopicCollection`1"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.ITopicCollection"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Topic.Name"> +<summary> + Get the name of the topic +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Topic.Description"> +<summary> + Get the description of the topic +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Topic.Code"> +<summary> + Get the WorldBank code of the topic +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Topic"> +<summary> + Metadata for a Topic +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.ITopic"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.RegionCollection`1"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IRegionCollection"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Region.RegionCode"> +<summary> + Get the WorldBank code for the region +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Region.Name"> +<summary> + Get the name of the region +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Region"> +<summary> + Metadata for a Region +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IRegion"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.CountryCollection`1"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.ICountryCollection"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Country.Region"> +<summary> + Get the region of the country +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Country.Name"> +<summary> + Get the name of the country +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Country.Code"> +<summary> + Get the WorldBank code of the country +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Country.CapitalCity"> +<summary> + Get the capital city of the country +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Country"> +<summary> + Metadata for a Country +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.ICountry"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IndicatorsDescriptions"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IIndicatorsDescriptions"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Indicators"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IIndicators"> +<summary> + [omit] +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.IndicatorDescription.Source"> +<summary> + Get the source of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.IndicatorDescription.Name"> +<summary> + Get the name of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.IndicatorDescription.IndicatorCode"> +<summary> + Get the code for the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.IndicatorDescription.Description"> +<summary> + Get the description of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.IndicatorDescription.Code"> +<summary> + Get the code for the topic of the indicator +</summary> +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.IndicatorDescription"> +<summary> + Metadata for an Indicator +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Years"> +<summary> + Get the years for which the indicator has values +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Values"> +<summary> + Get the values for the indicator (without years) +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Source"> +<summary> + Get the source of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Name"> +<summary> + Get the name of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Item(System.Int32)"> +<summary> + Get the indicator value for the given year. If there's no data for that year, NaN is returned +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.IndicatorCode"> +<summary> + Get the code for the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Description"> +<summary> + Get the description of the indicator +</summary> +</member> +<member name="P:FSharp.Data.Runtime.WorldBank.Indicator.Code"> +<summary> + Get the code for the country or region of the indicator +</summary> +</member> +<member name="M:FSharp.Data.Runtime.WorldBank.Indicator.TryGetValueAt(System.Int32)"> +<summary> + Get the indicator value for the given year, if present +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Indicator"> +<summary> + Indicator data +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="F:FSharp.Data.Runtime.WorldBank.Implementation.ServiceConnection.topics"> +<summary> + At compile time, download the schema +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="M:FSharp.Data.Runtime.WorldBank.Implementation.ServiceConnection.GetDataAsync(System.String,System.String)"> +<summary> + At runtime, download the data +</summary> +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name=""> + +</member> +<member name="T:FSharp.Data.Runtime.WorldBank.Implementation"> +<summary> + [omit] +</summary> +</member> +<member name="M:FSharp.Data.XElementExtensions.XElement.RequestAsync(System.Xml.Linq.XElement,System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}})"> +<summary> + Sends the XML to the specified uri. Defaults to a POST request. +</summary> +</member> +<member name="M:FSharp.Data.XElementExtensions.XElement.Request(System.Xml.Linq.XElement,System.String,Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}}})"> +<summary> + Sends the XML to the specified uri. Defaults to a POST request. +</summary> +</member> +<member name="T:FSharp.Data.XElementExtensions"> +<summary> + Extension methods for XElement. It is auto opened. +</summary> +</member> +<member name=""> + +</member> +<member name="T:System.AssemblyVersionInformation"> + +</member> +</members> +</doc>