Esempio n. 1
0
            public MidExp PreTransform(
                MidFieldRef fieldRef)
            {
                var attrFetch = fieldRef.Obj as MidAttributeFetch;

                if (attrFetch == null)
                {
                    return(fieldRef);
                }


                AttributeInfo info;

                if (!_attrInfos.TryGetValue(attrFetch.Attribute, out info))
                {
                    return(fieldRef);
                }

                var fieldAttr = (from f in info.Fields
                                 where f.FieldDecl == fieldRef.Decl
                                 select f.AttrDecl).First();

                fieldAttr.IsOutput = true;

                return(_exps.AttributeFetch(
                           fieldRef.Range,
                           attrFetch.Obj,
                           fieldAttr));
            }
Esempio n. 2
0
 private static void DumpExpImpl(
     MidFieldRef fieldRef,
     Span span)
 {
     span.Write("{0}.{1}", fieldRef.Obj.Dump(), fieldRef.Decl.Name);
 }
        private EmitValHLSL EmitExpImpl(MidFieldRef fieldRef, Span span)
        {
            var obj = EmitExp(fieldRef.Obj, span);

            var fieldDecl = fieldRef.Decl;
            var fieldName = fieldDecl.Name.ToString();
            var fieldType = EmitType(fieldDecl.Type);
            var fieldIndex = -1;

            var aggType = (IAggTypeHLSL) obj.Type;
            int fieldCount = aggType.GetFieldCount();
            for (int ff = 0; ff < fieldCount; ++ff)
            {
                if (aggType.GetFieldName(ff) != fieldName)
                    continue;

                fieldIndex = ff;
                break;
            }

            return GetField(
                obj,
                fieldType,
                fieldName,
                fieldIndex,
                span );
        }
Esempio n. 4
0
 private void TransformChildrenImpl(
     MidFieldRef fetch)
 {
     fetch.Obj = (MidPath)Transform(fetch.Obj);
 }
 private void TransformChildrenImpl(
     MidFieldRef fetch)
 {
     fetch.Obj = (MidPath) Transform(fetch.Obj);
 }
            public MidExp PreTransform(
                MidFieldRef fieldRef)
            {
                var attrFetch = fieldRef.Obj as MidAttributeFetch;
                if (attrFetch == null)
                    return fieldRef;

                AttributeInfo info;
                if (!_attrInfos.TryGetValue(attrFetch.Attribute, out info))
                    return fieldRef;

                var fieldAttr = (from f in info.Fields
                                 where f.FieldDecl == fieldRef.Decl
                                 select f.AttrDecl).First();

                fieldAttr.IsOutput = true;

                return _exps.AttributeFetch(
                    fieldRef.Range,
                    attrFetch.Obj,
                    fieldAttr);
            }
        private AttributeInfo DecomposeAttrImpl(
            SourceRange range,
            MidFieldRef midFieldRef)
        {
            var structAttrInfo = (StructInfo)DecomposeAttr(midFieldRef.Range, midFieldRef.Obj);

            var fieldInfo = (from f in structAttrInfo.Fields
                             where f.Field == midFieldRef.Decl
                             select f.Info).First();

            return fieldInfo;
        }