csharpfftfsharpintegrationinterpolationlinear-algebramathdifferentiationmatrixnumericsrandomregressionstatisticsmathnet
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
4.2 KiB
112 lines
4.2 KiB
|
|
// (c) Microsoft Corporation. All rights reserved
|
|
|
|
#light
|
|
|
|
/// Code to pickle out quotations in the quotation binary format.
|
|
module (* internal *) Microsoft.FSharp.Compiler.Sreflect
|
|
|
|
open Internal.Utilities
|
|
open Internal.Utilities.Pervasives
|
|
open Microsoft.FSharp.Compiler.AbstractIL
|
|
open Microsoft.FSharp.Compiler.AbstractIL.Internal
|
|
open Microsoft.FSharp.Compiler
|
|
|
|
open Microsoft.FSharp.Compiler.Lib
|
|
open Bytes
|
|
|
|
type TypeData
|
|
type TypeVarData = { tvName: string }
|
|
type NamedTypeData = { tcName: string; tcAssembly: string }
|
|
|
|
val mkVarTy : int -> TypeData
|
|
val mkFunTy : (TypeData * TypeData) -> TypeData
|
|
val mkArrayTy : (int * TypeData ) -> TypeData
|
|
val mkNamedTy : (NamedTypeData * TypeData list) -> TypeData
|
|
|
|
type ExprData
|
|
|
|
type VarData
|
|
|
|
type CtorData =
|
|
{ ctorParent: NamedTypeData;
|
|
ctorArgTypes: TypeData list; }
|
|
|
|
type MethodData =
|
|
{ methParent: NamedTypeData;
|
|
methName: string;
|
|
methArgTypes: TypeData list;
|
|
methRetType: TypeData;
|
|
numGenericArgs: int }
|
|
|
|
type ModuleDefnData =
|
|
{ Module: NamedTypeData;
|
|
Name: string;
|
|
IsProperty: bool }
|
|
|
|
type MethodBaseData =
|
|
| ModuleDefn of ModuleDefnData
|
|
| Method of MethodData
|
|
| Ctor of CtorData
|
|
|
|
type FieldData = NamedTypeData * string
|
|
type RecdFieldData = NamedTypeData * string
|
|
type PropInfoData = NamedTypeData * string * TypeData * TypeData list
|
|
|
|
val mkVar : int -> ExprData
|
|
val mkHole : TypeData * int -> ExprData
|
|
val mkApp : ExprData * ExprData -> ExprData
|
|
val mkLambda : VarData * ExprData -> ExprData
|
|
val mkQuote : ExprData -> ExprData
|
|
val mkCond : ExprData * ExprData * ExprData -> ExprData
|
|
val mkModuleValueApp : NamedTypeData * string * bool * TypeData list * ExprData list list -> ExprData
|
|
val mkLetRec : (VarData * ExprData) list * ExprData -> ExprData
|
|
val mkLet : (VarData * ExprData) * ExprData -> ExprData
|
|
val mkRecdMk : NamedTypeData * TypeData list * ExprData list -> ExprData
|
|
val mkRecdGet : RecdFieldData * TypeData list * ExprData list -> ExprData
|
|
val mkRecdSet : RecdFieldData * TypeData list * ExprData list -> ExprData
|
|
val mkSum : (NamedTypeData * string) * TypeData list * ExprData list -> ExprData
|
|
val mkSumFieldGet : (NamedTypeData * string * int) * TypeData list * ExprData -> ExprData
|
|
val mkSumTagTest : (NamedTypeData * string) * TypeData list * ExprData -> ExprData
|
|
val mkTuple : TypeData * ExprData list -> ExprData
|
|
val mkTupleGet : TypeData * int * ExprData -> ExprData
|
|
val mkCoerce : TypeData * ExprData -> ExprData
|
|
val mkNewArray : TypeData * ExprData list -> ExprData
|
|
val mkTypeTest : TypeData * ExprData -> ExprData
|
|
val mkAddressSet : ExprData * ExprData -> ExprData
|
|
val mkUnit : unit -> ExprData
|
|
val mkNull : TypeData -> ExprData
|
|
val mkBool : bool -> ExprData
|
|
val mkString : string -> ExprData
|
|
val mkSingle : float32 -> ExprData
|
|
val mkDouble : float -> ExprData
|
|
val mkChar : char -> ExprData
|
|
val mkSByte : sbyte -> ExprData
|
|
val mkByte : byte -> ExprData
|
|
val mkInt16 : int16 -> ExprData
|
|
val mkUInt16 : uint16 -> ExprData
|
|
val mkInt32 : int32 -> ExprData
|
|
val mkUInt32 : uint32 -> ExprData
|
|
val mkInt64 : int64 -> ExprData
|
|
val mkUInt64 : uint64 -> ExprData
|
|
val mkAddressOf : ExprData -> ExprData
|
|
val mkSequential : ExprData * ExprData -> ExprData
|
|
val mkForLoop : ExprData * ExprData * ExprData -> ExprData
|
|
val mkWhileLoop : ExprData * ExprData -> ExprData
|
|
val mkTryFinally : ExprData * ExprData -> ExprData
|
|
val mkTryWith : ExprData * VarData * ExprData * VarData * ExprData -> ExprData
|
|
val mkDelegate : TypeData * ExprData -> ExprData
|
|
val mkPropGet : PropInfoData * TypeData list * ExprData list -> ExprData
|
|
val mkPropSet : PropInfoData * TypeData list * ExprData list -> ExprData
|
|
val mkFieldGet : FieldData * TypeData list * ExprData list -> ExprData
|
|
val mkFieldSet : FieldData * TypeData list * ExprData list -> ExprData
|
|
val mkCtorCall : CtorData * TypeData list * ExprData list -> ExprData
|
|
val mkMethodCall : MethodData * TypeData list * ExprData list -> ExprData
|
|
val mkAttributedExpression : ExprData * ExprData -> ExprData
|
|
val pickle : (ExprData -> byte[])
|
|
|
|
|
|
val PickleDefns : ((MethodBaseData * ExprData) list -> byte[])
|
|
val pickledDefinitionsResourceNameBase : string
|
|
val freshVar : string * TypeData -> VarData
|
|
|
|
|