CacheAttr() 공개 메소드

public CacheAttr ( MidExp exp, MidType type ) : MidAttributeDecl
exp MidExp
type MidType
리턴 MidAttributeDecl
예제 #1
0
        private FieldInfo CreateField(
            MidPipelineDecl pipeline,
            MidElementDecl element,
            MidAttributeDecl attribute,
            MidFieldDecl field)
        {
            var midExp = _exps.FieldRef(
                attribute.Range,
                _exps.AttributeRef(attribute.Range, attribute),
                field);

            var name = _identifiers.unique(
                string.Format("{0}_{1}", attribute.Name, field.Name));

            var newAttr = element.CacheAttr(
                midExp,
                field.Type);

            newAttr.TrySetName(name, attribute.Range);

            return(new FieldInfo {
                AttrDecl = newAttr,
                FieldDecl = field
            });
        }
예제 #2
0
        private MidVal EmitValToElementImpl(
            IResExp resExp,
            MidElementDecl element,
            MidEmitEnv parentEnv)
        {
            var midExp = EmitLocalExp(resExp, parentEnv, element);

            if (midExp is MidVal)
            {
                return((MidVal)midExp);
            }

            var midType = EmitTypeExp(resExp.Type, parentEnv);
            var attr    = element.CacheAttr(
                midExp,
                midType);

            return(_exps.AttributeRef(resExp.Range, attr));
        }
        private FieldInfo CreateField(
            MidPipelineDecl pipeline,
            MidElementDecl element,
            MidAttributeDecl attribute,
            MidFieldDecl field)
        {
            var midExp = _exps.FieldRef(
                    attribute.Range,
                    _exps.AttributeRef( attribute.Range, attribute ),
                    field );

            var name = _identifiers.unique(
                string.Format( "{0}_{1}", attribute.Name, field.Name ) );

            var newAttr = element.CacheAttr(
                midExp,
                field.Type);
            newAttr.TrySetName(name, attribute.Range);

            return new FieldInfo{
                AttrDecl = newAttr,
                FieldDecl = field};
        }