Example #1
0
        internal static Expression FromPtr(IntPtr expr, NativeGU.NativeMemoryPool pool)
        {
            var Tag = (PgfExprTag)NativeGU.gu_variant_open(expr).Tag;

            if (factories.ContainsKey(Tag))
            {
                return(factories[Tag](expr, pool));
            }
            else
            {
                return(new UnsupportedExpression(expr, pool));
            }
        }
Example #2
0
        internal new static Expression FromPtr(IntPtr expr, NativeGU.NativeMemoryPool pool)
        {
            var dataPtr    = NativeGU.gu_variant_open(expr).Data; // PgfExprLit*
            var data       = Marshal.PtrToStructure <NativePgfExprLit>(dataPtr);
            var literalTag = (PgfLiteralTag)NativeGU.gu_variant_open(data.lit).Tag;

            switch (literalTag)
            {
            case PgfLiteralTag.PGF_LITERAL_STR:
                return(new LiteralStringExpression(expr, pool));

            case PgfLiteralTag.PGF_LITERAL_INT:
                return(new LiteralIntExpression(expr, pool));

            case PgfLiteralTag.PGF_LITERAL_FLT:
                return(new LiteralFloatExpression(expr, pool));

            default:
                throw new ArgumentException();
            }
        }