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 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 ); }
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; }