コード例 #1
0
 internal static IEnumerable <ILanguageType> Types(this GMacFrame parentFrame)
 {
     return
         (Enumerable
          .Repeat(parentFrame.MultivectorType as ILanguageType, 1)
          .Concat(parentFrame.Structures));
 }
コード例 #2
0
 internal GMacMultivectorTransform(string transformName, LanguageScope parentScope, GMacFrame sourceFrame, GMacFrame targetFrame, GaLinearTransform symbolicTransform)
     : base(transformName, parentScope, RoleNames.Transform)
 {
     SourceFrame = sourceFrame;
     TargetFrame = targetFrame;
     AssociatedSymbolicTransform = symbolicTransform;
 }
コード例 #3
0
        internal GMacAstSymbolsCache(GMacFrame rootSymbol)
        {
            GMacRootAst = rootSymbol.GMacRootAst;

            RootSymbol = rootSymbol;

            InitializeDictionaries(rootSymbol.MainSymbols());
        }
コード例 #4
0
ファイル: GMacFrameBasisVector.cs プロジェクト: phreed/GMac
        internal GMacFrameBasisVector(string basisVectorName, GMacFrame parentFrame, int basisVectorIndex, MathematicaScalar signature)
            : base(basisVectorName, parentFrame.ChildScope, RoleNames.FrameBasisVector, parentFrame.MultivectorType)
        {
            BasisVectorIndex = basisVectorIndex;

            Signature = signature;

            MultivectorValue = GMacValueMultivector.CreateBasisBlade(ParentFrame.MultivectorType, BasisVectorId);
        }
コード例 #5
0
        /// <summary>
        /// Create a child frame
        /// </summary>
        /// <param name="frameName"></param>
        /// <param name="basisVectorsNames"></param>
        /// <param name="attachedSymbolicFrame"></param>
        /// <returns></returns>
        internal GMacFrame DefineFrame(string frameName, string[] basisVectorsNames, GaSymFrame attachedSymbolicFrame)
        {
            var newFrame = new GMacFrame(frameName, ChildSymbolScope, attachedSymbolicFrame);

            GMacRootAst.FramesCount++;

            newFrame.DefineFrameMultivector();

            newFrame.DefineBasisVectors(basisVectorsNames);

            return(newFrame);
        }
コード例 #6
0
        internal static IEnumerable <LanguageSymbol> MainSymbols(this GMacFrame parentFrame)
        {
            var roleNames = new[]
            {
                RoleNames.FrameMultivector,
                RoleNames.FrameSubspace,
                RoleNames.Constant,
                RoleNames.Macro,
                RoleNames.Structure,
                RoleNames.Transform
            };

            return(parentFrame.ChildScope.Symbols(roleNames));
        }
コード例 #7
0
 /// <summary>
 /// Set the basis frame and transformations between frames for this derived frame
 /// </summary>
 /// <param name="baseFrame"></param>
 /// <param name="d2BOm"></param>
 /// <param name="b2DOm"></param>
 internal void SetDfs(GMacFrame baseFrame, GMacMultivectorTransform d2BOm, GMacMultivectorTransform b2DOm)
 {
     BaseFrame = baseFrame;
     DerivedToBaseTransform = d2BOm;
     BaseToDerivedTransform = b2DOm;
 }
コード例 #8
0
 internal bool LookupFrame(string symbolName, out GMacFrame outSymbol)
 {
     return(ChildSymbolScope.LookupSymbol(symbolName, RoleNames.Frame, out outSymbol));
 }
コード例 #9
0
 /// <summary>
 /// Create a child transform
 /// </summary>
 /// <param name="transformName"></param>
 /// <param name="sourceFrame"></param>
 /// <param name="targetFrame"></param>
 /// <param name="baseTransform"></param>
 /// <returns></returns>
 internal GMacMultivectorTransform DefineTransform(string transformName, GMacFrame sourceFrame, GMacFrame targetFrame, GaSymMapUnilinear baseTransform)
 {
     return(new GMacMultivectorTransform(transformName, ChildSymbolScope, sourceFrame, targetFrame, baseTransform));
 }
コード例 #10
0
 //TODO: Make more overloads for other GMacAST symbols
 internal static void SetSymbolicMathName(this GMacFrame frame, string mathName)
 {
     frame.GMacRootAst.SymbolicMathNames[frame] = mathName;
 }
コード例 #11
0
 internal static IEnumerable <GMacMacro> Macros(this GMacFrame parentFrame)
 {
     return
         (parentFrame.ChildMacros
          .Concat(parentFrame.Structures.SelectMany(s => s.Macros)));
 }
コード例 #12
0
 internal static IEnumerable <SymbolNamedValue> NamedValues(this GMacFrame parentFrame)
 {
     return
         (parentFrame.FrameBasisVectors.Cast <SymbolNamedValue>()
          .Concat(parentFrame.ChildConstants));
 }