コード例 #1
0
        public void VisitFieldRef(FieldRef fieldRef)
        {
            InstructionDependency[] preds;
            switch (_litMode)
            {
            case ELiteralAcceptMode.Read:
                preds = _storesInCurBB.Get(fieldRef)
                        .Select(_ => new OrderDependency(_, OrderDependency.EKind.BeginAfter))
                        .ToArray();
                _readsInCurBB.Add(fieldRef, NextInstructionIndex);
                Emit(ISet.LoadVar(fieldRef), _curExpr, preds, 0, fieldRef.Type);
                break;

            case ELiteralAcceptMode.Write:
            {
                preds = _storesInCurBB.Get(fieldRef)
                        .Union(_readsInCurBB.Get(fieldRef))
                        .Select(_ => new OrderDependency(_, OrderDependency.EKind.BeginAfter))
                        .ToArray();
                if (preds.Any())
                {
                    int idx = NextInstructionIndex;
                    Emit(DefaultInstructionSet.Instance.Nop(0), _curExpr, preds, 0);
                    preds = new InstructionDependency[] { new OrderDependency(idx, OrderDependency.EKind.BeginAfter) };
                }
                _storesInCurBB.Add(fieldRef, NextInstructionIndex);
                Emit(ISet.StoreVar(fieldRef), _curExpr, preds, 1);
            }
            break;
            }
        }
コード例 #2
0
ファイル: Main.cs プロジェクト: aedenthorn/mytimeatportia
            static void Prefix(PlayerMissionUICtr __instance)
            {
                FieldRef <OtherConfig, int> playerMissionMaxCount = FieldRefAccess <OtherConfig, int>("playerMissionMaxCount");

                playerMissionMaxCount(OtherConfig.Self) = settings.MaxMissions;
                __instance.GetType().GetMethod("FreshNumAccept", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { });
            }
コード例 #3
0
        private static void DoAddRelationship(Actor ao, string animName)
        {
            if (settings.LimitRelationshipPointGain)
            {
                var mBehavior  = FieldRefAccess <Actor, BehaviorTree>(ao, "mBehavior");
                var mITActions = mBehavior.FindTasks <ITDecorator>();
                if (mITActions != null && mITActions.Count > 0)
                {
                    for (int i = 0; i < mITActions.Count; i++)
                    {
                        Dbgl($"{animName} interact id: {mITActions[i].iid.Value}");
                        if (mITActions[i] != null && mITActions[i].iid.Value == InteractIds[animName])
                        {
                            FieldRef <ITDecorator, int> mCurTimesRef = FieldRefAccess <ITDecorator, int>("mCurTimes");
                            if (mCurTimesRef(mITActions[i]) < InteractiveData.GetTimes(mITActions[i].iid.Value))
                            {
                                mCurTimesRef(mITActions[i])++;
                                Module <FavorManager> .Self.GainFavorValue(ao.InstanceId,
                                                                           InteractiveData.GetFavorValue(InteractIds[animName]), true, true);
                            }
                            return;
                        }
                    }
                }
            }

            Module <FavorManager> .Self.GainFavorValue(ao.InstanceId, InteractiveData.GetFavorValue(InteractIds[animName]), true, true);
        }
コード例 #4
0
 public FieldSymbol(string name, TypeProxy type, FieldGetter getter = null, FieldSetter setter = null, FieldRef getref = null)
     : base(name, type)
 {
     this.getter = getter;
     this.setter = setter;
     this.getref = getref;
 }
コード例 #5
0
        private static void UpdateFieldRef(List siteList, Guid fieldId, FieldRef fieldRef)
        {
            // find the field in the list
            var listField = siteList.Fields.GetById(fieldId);

            siteList.Context.Load(listField, f => f.Title, f => f.Hidden, f => f.Required);
            siteList.Context.ExecuteQueryRetry();

            var isDirty = false;

            if (!string.IsNullOrEmpty(fieldRef.DisplayName) && fieldRef.DisplayName != listField.Title)
            {
                listField.Title = fieldRef.DisplayName;
                isDirty         = true;
            }
            if (fieldRef.Hidden != listField.Hidden)
            {
                listField.Hidden = fieldRef.Hidden;
                isDirty          = true;
            }
            if (fieldRef.Required != listField.Required)
            {
                listField.Required = fieldRef.Required;
                isDirty            = true;
            }
            if (isDirty)
            {
                listField.UpdateAndPushChanges(true);
                siteList.Context.ExecuteQueryRetry();
            }
        }
コード例 #6
0
        public static void registerNatives(Type thread)
        {
            _nativeData = new FieldRef <Data>(thread, "__nativeData");
            _run        = new MethodRef <Action>(thread, "run");

            var clrThread = Thread.CurrentThread;

            _sysThreadGroup = (ThreadGroup)Activator.CreateInstance(typeof(ThreadGroup), true);
            var mainThread = (java.lang.Thread)FormatterServices.GetUninitializedObject(thread);

            //_isIniting = true;
            //var mainThread = Activator.CreateInstance(_javaLangThread, _sysThreadGroup, null, "MainThread", 0L);

            lock (_javaThreads)
            {
                _javaThreads.Add(clrThread.ManagedThreadId, mainThread);
            }
            //_isIniting = false;

            mainThread.SetField("name", "Main Thread".ToCharArray());
            mainThread.SetField("group", _sysThreadGroup);
            mainThread.SetField("daemon", false);
            mainThread.SetField("priority", 5);
            mainThread.SetField("threadStatus", 0);
            _nativeData[mainThread] = new Data {
                ClrThread = Thread.CurrentThread, JavaThread = mainThread
            };

            //_javaLangThread.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
            //    .Single(x => x.Name == "init" && x.GetParameters().Length == 4)
            //    .Invoke(mainThread, new object[] { _sysThreadGroup, null, "Main Thread", 0L });
        }
コード例 #7
0
ファイル: OrderBy.cs プロジェクト: nils-a/fluentcamlgen
        /// <summary>
        /// Add a FieldRef
        /// </summary>
        /// <param name="name"></param>
        /// <param name="ascending">true, for ascending</param>
        /// <returns>Fluent <see cref="OrderBy"/></returns>
        public OrderBy AddFieldRef(string name, bool ascending)
        {
            var field = new FieldRef(name);

            field.AddAttribute("Ascending", ascending ? "TRUE" : "FALSE");
            Childs.Add(field);
            return(this);
        }
コード例 #8
0
 protected SingleFieldMultipleValueOperator(string operatorName, string fieldName, IEnumerable <Value <T> > values)
     : base(operatorName, values)
 {
     FieldRef = new FieldRef()
     {
         Name = fieldName
     };
 }
コード例 #9
0
 protected SingleFieldMultipleValueOperator(string operatorName, Guid fieldId, IEnumerable <T> values, SPFieldType type)
     : base(operatorName, values, type)
 {
     FieldRef = new FieldRef()
     {
         FieldId = fieldId
     };
 }
コード例 #10
0
        public static RestField FromFieldRef(FieldRef field, object value, RestFieldParser parser)
        {
            var restField = new RestField();

            restField.Field = parser.Parse(field);
            restField.Value = parser.ParseValue(value);
            return(restField);
        }
コード例 #11
0
 public FieldValue(string fieldName, object fieldValue) : base()
 {
     Field = new FieldRef()
     {
         Name = fieldName
     };
     Value = fieldValue;
 }
コード例 #12
0
 protected SingleFieldValueOperator(string operatorName, Guid fieldId, Value <T> value)
     : base(operatorName, value)
 {
     FieldRef = new FieldRef()
     {
         FieldId = fieldId
     };
 }
コード例 #13
0
 protected SingleFieldValueOperator(string operatorName, Guid fieldId, T value, SPFieldType type)
     : base(operatorName, value, type)
 {
     FieldRef = new FieldRef()
     {
         FieldId = fieldId
     };
 }
コード例 #14
0
 protected SingleFieldValueOperator(string operatorName, string fieldName, Value <T> value)
     : base(operatorName, value)
 {
     FieldRef = new FieldRef()
     {
         Name = fieldName
     };
 }
コード例 #15
0
 protected SingleFieldValueOperator(string operatorName, string fieldName, T value, SPFieldType type)
     : base(operatorName, value, type)
 {
     FieldRef = new FieldRef()
     {
         Name = fieldName
     };
 }
コード例 #16
0
        protected override void OnParsing(XElement existingSingleFieldValueOperator)
        {
            XElement existingFieldRef = existingSingleFieldValueOperator.Elements().SingleOrDefault(el => string.Equals(el.Name.LocalName, "FieldRef", StringComparison.InvariantCultureIgnoreCase));

            if (existingFieldRef != null)
            {
                FieldRef = new FieldRef(existingFieldRef);
            }
        }
コード例 #17
0
        /// <summary>
        /// Get the document builder to insert a REF field, reference a bookmark with it, and add text before and after
        /// </summary>
        private FieldRef InsertFieldRef(DocumentBuilder builder, string bookmarkName, string textBefore, string textAfter)
        {
            builder.Write(textBefore);
            FieldRef field = (FieldRef)builder.InsertField(FieldType.FieldRef, true);

            field.BookmarkName = bookmarkName;
            builder.Write(textAfter);
            return(field);
        }
コード例 #18
0
        protected override void OnParsing(XElement existingSingleFieldValueOperator)
        {
            XElement existingFieldRef = existingSingleFieldValueOperator.Elements().SingleOrDefault(el => string.Equals(el.Name.LocalName, "FieldRef", StringComparison.InvariantCultureIgnoreCase));

            if (existingFieldRef != null)
            {
                FieldRef = new FieldRef(existingFieldRef);
            }
        }
コード例 #19
0
        /// <summary>
        /// Add a &lt;FieldRef>-Attribute
        /// </summary>
        /// <param name="this"></param>
        /// <param name="name"></param>
        /// <param name="action"></param>
        /// <returns></returns>
        public static T AddFieldRef <T>(this T @this, string name, Action <FieldRef> action)
            where T : BaseCoreCompareElement <T>
        {
            var fieldRef = new FieldRef(name);

            action(fieldRef);
            @this.Childs.Add(fieldRef);
            return(@this);
        }
コード例 #20
0
        public void CanUpdateCalculatedFieldRefInListInstance()
        {
            var template = new ProvisioningTemplate();

            template.SiteFields.Add(new Core.Framework.Provisioning.Model.Field()
            {
                SchemaXml = ElementSchema
            });
            template.SiteFields.Add(new Core.Framework.Provisioning.Model.Field()
            {
                SchemaXml = TokenizedCalculatedFieldElementSchema
            });

            var listInstance = new ListInstance();

            listInstance.Url          = string.Format("lists/{0}", listName);
            listInstance.Title        = listName;
            listInstance.TemplateType = (int)ListTemplateType.GenericList;

            var referencedField = new FieldRef();

            referencedField.Id = fieldId;
            listInstance.FieldRefs.Add(referencedField);

            var calculatedFieldRef = new FieldRef();

            calculatedFieldRef.Id = calculatedFieldId;
            listInstance.FieldRefs.Add(calculatedFieldRef);
            template.Lists.Add(listInstance);

            using (var ctx = TestCommon.CreateClientContext())
            {
                var parser = new TokenParser(ctx.Web, template);
                new ObjectField().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation());
                new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation());

                var list = ctx.Web.GetListByUrl(listInstance.Url);
                Assert.IsNotNull(list);

                var rf = list.GetFieldById <FieldText>(fieldId);
                var f1 = list.GetFieldById <FieldCalculated>(calculatedFieldId);

                Assert.IsNotNull(rf, "Referenced field not added");
                Assert.IsNotNull(f1);
                Assert.IsInstanceOfType(f1, typeof(FieldCalculated));
                Assert.IsFalse(f1.Formula.Contains('#') || f1.Formula.Contains('?'), "Calculated field was not provisioned properly the first time");

                new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation());

                var f2 = list.GetFieldById <FieldCalculated>(calculatedFieldId);

                Assert.IsNotNull(f2);
                Assert.IsInstanceOfType(f2, typeof(FieldCalculated));
                Assert.IsFalse(f2.Formula.Contains('#') || f2.Formula.Contains('?'), "Calculated field was not provisioned properly the second time");
            }
        }
コード例 #21
0
 public override void VisitFieldRef(FieldRef fieldRef)
 {
     if (fieldRef.HasAttribute <LocalizeField>())
     {
         SetCurrentLiteral(_f2loc[fieldRef]);
     }
     else
     {
         SetCurrentLiteral(fieldRef);
     }
 }
コード例 #22
0
        public override void Build()
        {
            ns("MyNameSpace");

            declClass(TypePublic, "MyClasss");
            declMethod(MemPublic, "System.Void", "MyMethod");

            FieldRef testField = new FieldRef(my(), "TestField");

            enter(testField);
        }
コード例 #23
0
ファイル: Main.cs プロジェクト: aedenthorn/mytimeatportia
            static void Prefix(PlayerItemBarCtr __instance)
            {
                if (!enabled)
                {
                    return;
                }

                if (KeyDown(settings.ItemBarSwitchKey))
                {
                    for (int index = 0; index < 8; index++)
                    {
                        ItemObject itemObject = Module <Player> .Self.bag.itemBar.itemBarItems[index];
                        ItemObject itemObj    = Module <Player> .Self.bag.GetItems(0).GetItemObj(index);

                        Module <Player> .Self.bag.BagExchangeItemBar(index, index, 0);
                    }

                    MethodInfo dynMethod = __instance.GetType().GetMethod("Unequip", BindingFlags.NonPublic | BindingFlags.Instance);
                    dynMethod.Invoke(__instance, new object[] { });
                }
                else if (KeyDown(settings.OpenStorageKey) && UIStateMgr.Instance.currentState.type == UIStateMgr.StateType.Play)
                {
                    StorageViewer sv = new StorageViewer();
                    FieldRef <StorageViewer, StorageUnit> suRef = FieldRefAccess <StorageViewer, StorageUnit>("storageUnit");
                    suRef(sv) = StorageUnit.GetStorageByGlobalIndex(lastStorageIndex);

                    MethodInfo dynMethod = sv.GetType().GetMethod("InteractStorage", BindingFlags.NonPublic | BindingFlags.Instance);
                    dynMethod.Invoke(sv, new object[] { });
                }
                else if (KeyDown(settings.OpenFactoryKey) && UIStateMgr.Instance.currentState.type == UIStateMgr.StateType.Play)
                {
                    FarmFactory[] factorys = Module <FarmFactoryMgr> .Self.GetAllFactorys();

                    if (factorys.Length == 0)
                    {
                        return;
                    }
                    FarmFactory factory = factorys[0];

                    Action <List <IdCount> > action = delegate(List <IdCount> ls)
                    {
                        factory.SetMatList(ls);
                    };
                    UIStateMgr.Instance.ChangeStateByType(UIStateMgr.StateType.PackageExchangeState, true, new object[]
                    {
                        factory.MatList,
                        TextMgr.GetStr(103440, -1),
                        true,
                        action,
                        103521,
                        300
                    });
                }
            }
コード例 #24
0
 protected void Write(FieldRef fieldRef)
 {
     using (this.Trace("FieldRef"))
     {
         this.writer.Write(!fieldRef.IsEmpty);
         if (!fieldRef.IsEmpty)
         {
             this.Write(fieldRef.DeclaringType);
             this.WriteCompressedMetadataToken(fieldRef.MetadataToken, MetadataTokenType.Field);
         }
     }
 }
コード例 #25
0
 protected void Write(FieldRef fieldRef)
 {
     using (this.Trace(nameof(FieldRef)))
     {
         if (this.TryPrepareSerializeReusableObject(fieldRef))
         {
             this.Write(fieldRef.DeclaringType);
             this.WriteCompressedMetadataToken(fieldRef.MetadataToken, MetadataTokenType.Field);
             this.Write(fieldRef.Name);
         }
     }
 }
コード例 #26
0
        private FieldRef Scramble(FieldRef fieldRef)
        {
            if (fieldRef.IsEmpty)
            {
                return(default(FieldRef));
            }

            return(new FieldRef(
                       this.Scramble(fieldRef.DeclaringType),
                       this.GetScrambledMetadataToken(fieldRef.MetadataToken),
                       fieldRef.Name));
        }
コード例 #27
0
ファイル: Main.cs プロジェクト: aedenthorn/mytimeatportia
            private static void Postfix(ref Actor __instance, ref SkinnedMeshRenderer ___skinnedMeshRenderer)
            {
                FieldRef <Actor, SkinnedMeshRenderer> rendererByRef = FieldRefAccess <Actor, SkinnedMeshRenderer>("skinnedMeshRenderer");

                if (__instance.InstanceId == 4000050)
                {
                    if (___skinnedMeshRenderer != null)
                    {
                        ___skinnedMeshRenderer.sharedMesh = rendererByRef(ActorMgr.Self.Get(4000011)).sharedMesh;
                    }
                }
            }
コード例 #28
0
        /// <summary>
        /// THIS is the method that needs to be what each
        /// thread executes--streams the text to a file.
        /// </summary>
        public static void StreamToFile()
        {
            // buffer size for file IO
            const int BUFFER_SIZE = 5000;

            while (!_writeJobs.IsCompleted)
            {
                WriteJob op;
                bool     success = _writeJobs.TryTake(out op);
                if (!success)
                {
                    Thread.Sleep(100);
                    continue;
                }

                // stream

                // create ref to object
                var relativityObj = new RelativityObjectRef
                {
                    ArtifactID = op.DocumentId
                };

                // create ref to field
                var longTextFieldRef = new FieldRef
                {
                    ArtifactID = op.LongTextFieldId
                };

                // instantiate object manager service
                using (IObjectManager objMgr = ServiceFactory.CreateProxy <IObjectManager>())
                    using (IKeplerStream ks = objMgr.StreamLongTextAsync(
                               op.WorkspaceId, relativityObj, longTextFieldRef).Result)
                        using (Stream s = ks.GetStreamAsync().Result)
                            using (var reader = new StreamReader(s))
                                using (var writer = new StreamWriter(op.Path, append: false))
                                {
                                    char[] buffer = new char[BUFFER_SIZE];

                                    int copied;
                                    do
                                    {
                                        copied = reader.Read(buffer, 0, BUFFER_SIZE);
                                        writer.Write(
                                            copied == BUFFER_SIZE
                            ? buffer
                            : buffer.Take(copied).ToArray());
                                        writer.Flush();
                                    } while (copied > 0);
                                }
            }
        }
コード例 #29
0
        public void CanExtractCalculatedFieldFromListInstance()
        {
            var template     = new ProvisioningTemplate();
            var listInstance = new ListInstance();

            template.SiteFields.Add(new Core.Framework.Provisioning.Model.Field()
            {
                SchemaXml = ElementSchema
            });

            listInstance.Url          = string.Format("lists/{0}", listName);
            listInstance.Title        = listName;
            listInstance.TemplateType = (int)ListTemplateType.GenericList;

            var referencedField = new FieldRef();

            referencedField.Id = fieldId;
            listInstance.FieldRefs.Add(referencedField);

            var calculatedField = new Core.Framework.Provisioning.Model.Field();

            calculatedField.SchemaXml = TokenizedCalculatedFieldElementSchema;
            listInstance.Fields.Add(calculatedField);
            template.Lists.Add(listInstance);

            using (var ctx = TestCommon.CreateClientContext())
            {
                var parser = new TokenParser(ctx.Web, template);
                new ObjectField().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation());
                new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation());

                var list = ctx.Web.GetListByUrl(listInstance.Url);
                Assert.IsNotNull(list);

                var rf = list.GetFieldById <FieldText>(fieldId);
                var f  = list.GetFieldById <FieldCalculated>(calculatedFieldId);

                Assert.IsNotNull(rf, "Referenced field not added");
                Assert.IsNotNull(f);
                Assert.IsInstanceOfType(f, typeof(FieldCalculated));
                Assert.IsFalse(f.Formula.Contains('#') || f.Formula.Contains('?'), "Calculated field was not provisioned properly");

                var extractedTemplate = new ProvisioningTemplate();
                var provisioningTemplateCreationInformation = new ProvisioningTemplateCreationInformation(ctx.Web);
                new ObjectListInstance().ExtractObjects(ctx.Web, extractedTemplate, provisioningTemplateCreationInformation);

                XElement fieldElement = XElement.Parse(extractedTemplate.Lists.First(l => l.Title == listName).Fields.First(cf => Guid.Parse(XElement.Parse(cf.SchemaXml).Attribute("ID").Value).Equals(calculatedFieldId)).SchemaXml);
                var      formula      = fieldElement.Descendants("Formula").FirstOrDefault();

                Assert.AreEqual(@"=[{fieldtitle:DemoField}]&""DemoField""", formula.Value, true, "Calculated field formula is not extracted properly");
            }
        }
コード例 #30
0
        private static FieldValuePair ToFieldPair(FieldValue fieldValue)
        {
            var pair = new FieldValuePair();

            pair.Value = ParseFieldValueValue(fieldValue.Value);
            var field = new FieldRef();

            field.Guids      = fieldValue.Guids?.ToList() ?? new List <Guid>();
            field.ArtifactId = fieldValue.ArtifactID;
            field.Name       = fieldValue.Name;
            pair.Field       = field;
            return(pair);
        }
コード例 #31
0
 private Variable CreateVariableForField(FieldRef fref)
 {
     Variable var = new Variable(fref.Type)
     {
         Name = fref.Name,
         LocalIndex = _nextLocIndex++,
         InitialValue = fref.FieldDesc.ConstantValue
     };
     var.AddAttribute(fref);
     foreach (var attr in fref.Attributes)
         var.AddAttribute(attr);
     DeclareLocal(var);
     return var;
 }
コード例 #32
0
        public override void Build()
        {
            ns("MyNameSpace");
            uses("System");

            FieldRef TestParam = new FieldRef(my(), "TestParameter");

            MethodRef ThisMethod = new MethodRef(my(), "ThisMethod");

            declClass(TypePublic, "Class1");
            declMethod(MemPublic, "System.Void", "ClassMethod");

            enter(ex(ThisMethod, refp(TestParam)));
        }
コード例 #33
0
        public void CanExtractCalculatedFieldFromListInstance()
        {
            var template = new ProvisioningTemplate();
            var listInstance = new ListInstance();

            template.SiteFields.Add(new Core.Framework.Provisioning.Model.Field() { SchemaXml = ElementSchema });

            listInstance.Url = string.Format("lists/{0}", listName);
            listInstance.Title = listName;
            listInstance.TemplateType = (int)ListTemplateType.GenericList;

            var referencedField = new FieldRef();
            referencedField.Id = fieldId;
            listInstance.FieldRefs.Add(referencedField);

            var calculatedField = new Core.Framework.Provisioning.Model.Field();
            calculatedField.SchemaXml = TokenizedCalculatedFieldElementSchema;
            listInstance.Fields.Add(calculatedField);
            template.Lists.Add(listInstance);

            using (var ctx = TestCommon.CreateClientContext())
            {
                var parser = new TokenParser(ctx.Web, template);
                new ObjectField().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation());
                new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation());

                var list = ctx.Web.GetListByUrl(listInstance.Url);
                Assert.IsNotNull(list);

                var rf = list.GetFieldById<FieldText>(fieldId);
                var f = list.GetFieldById<FieldCalculated>(calculatedFieldId);

                Assert.IsNotNull(rf, "Referenced field not added");
                Assert.IsNotNull(f);
                Assert.IsInstanceOfType(f, typeof(FieldCalculated));
                Assert.IsFalse(f.Formula.Contains('#') || f.Formula.Contains('?'), "Calculated field was not provisioned properly");

                var extractedTemplate = new ProvisioningTemplate();
                var provisioningTemplateCreationInformation = new ProvisioningTemplateCreationInformation(ctx.Web);
                new ObjectListInstance().ExtractObjects(ctx.Web, extractedTemplate, provisioningTemplateCreationInformation);

                XElement fieldElement = XElement.Parse(extractedTemplate.Lists.First(l => l.Title == listName).Fields.First(cf => Guid.Parse(XElement.Parse(cf.SchemaXml).Attribute("ID").Value).Equals(calculatedFieldId)).SchemaXml);
                var formula = fieldElement.Descendants("Formula").FirstOrDefault();

                Assert.AreEqual(@"=[{fieldtitle:DemoField}]&""DemoField""", formula.Value, true, "Calculated field formula is not extracted properly");
            }
        }
コード例 #34
0
 /// <summary>
 /// Visits a field reference literal. The default implementation saves it to <c>_tlit</c>.
 /// </summary>
 /// <param name="fieldRef">field reference literal</param>
 public virtual void VisitFieldRef(FieldRef fieldRef)
 {
     _tlit = fieldRef;
 }
コード例 #35
0
ファイル: ReflectionEmitter.cs プロジェクト: furesoft/roslyn
        private FieldInfo ResolveField(Cci.IFieldReference fieldRef)
        {
            var fieldDef = fieldRef.GetResolvedField(_context);
            if (fieldDef != null && IsLocal(fieldRef.GetContainingType(_context)))
            {
                return _fieldBuilders[fieldDef];
            }

            FieldInfo result;
            if (_fieldRefs.TryGetValue(fieldRef, out result))
            {
                return result;
            }

            Type declaringType = ResolveType(fieldRef.GetContainingType(_context));
            Cci.ISpecializedFieldReference specializedRef = fieldRef.AsSpecializedFieldReference;

            if (specializedRef != null)
            {
                if (IsLocal(specializedRef.UnspecializedVersion.GetContainingType(_context)))
                {
                    // declaring type is TypeBuilder or TypeBuilderInstantiation since it's defined in the module being built:
                    FieldBuilder fieldBuilder = _fieldBuilders[(Cci.IFieldDefinition)specializedRef.UnspecializedVersion.AsDefinition(_context)];
                    result = TypeBuilder.GetField(declaringType, fieldBuilder);
                }
                else
                {
                    FieldInfo unspecializedDefinition = ResolveField(specializedRef.UnspecializedVersion);
                    result = new FieldRef(declaringType, fieldRef.Name, unspecializedDefinition.FieldType);
                }
            }
            else
            {
                GenericContext genericContext;
                if (declaringType.IsGenericTypeDefinition)
                {
                    genericContext = new GenericContext(declaringType.GetGenericArguments(), Type.EmptyTypes);
                }
                else
                {
                    genericContext = default(GenericContext);
                }

                // TODO: modifiers?
                Type fieldType = ResolveType(fieldRef.GetType(_context), genericContext);
                result = new FieldRef(declaringType, fieldRef.Name, fieldType);
            }

            _fieldRefs.Add(fieldRef, result);
            return result;
        }
コード例 #36
0
 public GroupBy(Guid fieldId, bool collapse)
     : base("GroupBy")
 {
     FieldRefs = new FieldRef[] { new FieldRef() { FieldId = fieldId } };
     Collapse = collapse;
 }
コード例 #37
0
 protected SingleFieldOperator(string operatorName, FieldRef fieldRef)
     : base(operatorName)
 {
     FieldRef = fieldRef;
 }
コード例 #38
0
ファイル: ReflectionEmitter.cs プロジェクト: furesoft/roslyn
        private CustomAttributeBuilder CreateCustomAttributeBuilder(Cci.ICustomAttribute attribute)
        {
            // TODO (tomat): Use CCI to build the blob?
            // TODO (tomat): The CustomAttributeBuilder has problems with application of an attribute on itself 
            // and other dependencies on unbaked types.
            // e.g. [My]class MyAttribute : Attribute { }

            var ctor = ResolveConstructor(attribute.Constructor(_context));
            var attributeType = ctor.DeclaringType;

            object[] argValues = new object[attribute.ArgumentCount];
            ArrayBuilder<object> propertyValues = null;
            ArrayBuilder<object> fieldValues = null;
            ArrayBuilder<FieldInfo> fields = null;
            ArrayBuilder<PropertyInfo> properties = null;
            try
            {
                int i = 0;
                foreach (Cci.IMetadataExpression arg in attribute.GetArguments(_context))
                {
                    argValues[i++] = GetMetadataExpressionValue(arg);
                }

                foreach (Cci.IMetadataNamedArgument namedArg in attribute.GetNamedArguments(_context))
                {
                    object value = GetMetadataExpressionValue(namedArg.ArgumentValue);
                    string name = namedArg.ArgumentName;

                    Type type = ResolveType(namedArg.Type);

                    if (namedArg.IsField)
                    {
                        if (fields == null)
                        {
                            fields = ArrayBuilder<FieldInfo>.GetInstance();
                            fieldValues = ArrayBuilder<object>.GetInstance();
                        }

                        var field = new FieldRef(attributeType, name, type);
                        fields.Add(field);
                        fieldValues.Add(value);
                    }
                    else
                    {
                        if (properties == null)
                        {
                            properties = ArrayBuilder<PropertyInfo>.GetInstance();
                            propertyValues = ArrayBuilder<object>.GetInstance();
                        }

                        var property = new CustomAttributeProperty(attributeType, name, type);
                        properties.Add(property);
                        propertyValues.Add(value);
                    }
                }

                try
                {
                    return new CustomAttributeBuilder(
                        ctor as ConstructorInfo ?? new ConstructorRef(ctor),
                        argValues,
                        (properties != null) ? properties.ToArray() : SpecializedCollections.EmptyArray<PropertyInfo>(),
                        (properties != null) ? propertyValues.ToArray() : SpecializedCollections.EmptyArray<object>(),
                        (fields != null) ? fields.ToArray() : SpecializedCollections.EmptyArray<FieldInfo>(),
                        (fields != null) ? fieldValues.ToArray() : SpecializedCollections.EmptyArray<object>());
                }
                catch (ArgumentException)
                {
                    throw new NotSupportedException("Ref.Emit limitation");
                }
            }
            finally
            {
                if (properties != null)
                {
                    properties.Free();
                    propertyValues.Free();
                }

                if (fields != null)
                {
                    fields.Free();
                    fieldValues.Free();
                }
            }
        }
コード例 #39
0
 public override void VisitFieldRef(FieldRef fieldRef)
 {
     if (fieldRef.HasAttribute<LocalizeField>())
         SetCurrentLiteral(_f2loc[fieldRef]);
     else
         SetCurrentLiteral(fieldRef);
 }
コード例 #40
0
        private static Field CreateFieldRef(ListInfo listInfo, Field field, FieldRef fieldRef)
        {
            field.EnsureProperty(f => f.SchemaXmlWithResourceTokens);
            XElement element = XElement.Parse(field.SchemaXmlWithResourceTokens);

            element.SetAttributeValue("AllowDeletion", "TRUE");

            field.SchemaXml = element.ToString();

            var createdField = listInfo.SiteList.Fields.Add(field);

            createdField.Context.Load(createdField, cf => cf.Id, cf => cf.Title, cf => cf.Hidden, cf => cf.Required);
            createdField.Context.ExecuteQueryRetry();

            var isDirty = false;
            if (!string.IsNullOrEmpty(fieldRef.DisplayName) && createdField.Title != fieldRef.DisplayName)
            {
                createdField.Title = fieldRef.DisplayName;
                isDirty = true;
            }
            if (createdField.Hidden != fieldRef.Hidden)
            {
                createdField.Hidden = fieldRef.Hidden;
                isDirty = true;
            }
            if (createdField.Required != fieldRef.Required)
            {
                createdField.Required = fieldRef.Required;
                isDirty = true;
            }
            if (isDirty)
            {
                createdField.Update();
                createdField.Context.ExecuteQueryRetry();
            }

            return createdField;
        }
コード例 #41
0
ファイル: MDElements.cs プロジェクト: dbremner/perwapi
 internal static void ReadMember(PEReader buff, TableRow[] members)
 {
     Contract.Requires(buff != null);
     Contract.Requires(members != null);
     for (int i = 0; i < members.Length; i++)
     {
         uint parenIx = buff.GetCodedIndex(CIx.MemberRefParent);
         string memName = buff.GetString();
         uint sigIx = buff.GetBlobIx();
         if (buff.FirstBlobByte(sigIx) == Field.FieldTag) // got a field
             members[i] = new FieldRef(parenIx, memName, sigIx);
         else
             members[i] = new MethodRef(parenIx, memName, sigIx);
     }
 }
コード例 #42
0
        private static void UpdateFieldRef(List siteList, Guid fieldId, FieldRef fieldRef)
        {
            // find the field in the list
            var listField = siteList.Fields.GetById(fieldId);

            siteList.Context.Load(listField, f => f.Title, f => f.Hidden, f => f.Required);
            siteList.Context.ExecuteQueryRetry();

            var isDirty = false;
            if (!string.IsNullOrEmpty(fieldRef.DisplayName) && fieldRef.DisplayName != listField.Title)
            {
                listField.Title = fieldRef.DisplayName;
                isDirty = true;
            }
            if (fieldRef.Hidden != listField.Hidden)
            {
                listField.Hidden = fieldRef.Hidden;
                isDirty = true;
            }
            if (fieldRef.Required != listField.Required)
            {
                listField.Required = fieldRef.Required;
                isDirty = true;
            }
            if (isDirty)
            {
                listField.UpdateAndPushChanges(true);
                siteList.Context.ExecuteQueryRetry();
            }
        }
コード例 #43
0
        private static void CreateFieldRef(ListInfo listInfo, Field field, FieldRef fieldRef)
        {
            XElement element = XElement.Parse(field.SchemaXml);

            element.SetAttributeValue("AllowDeletion", "TRUE");

            field.SchemaXml = element.ToString();

            var createdField = listInfo.SiteList.Fields.Add(field);
            if (!string.IsNullOrEmpty(fieldRef.DisplayName))
            {
                createdField.Title = fieldRef.DisplayName;
            }
            createdField.Hidden = fieldRef.Hidden;
            createdField.Required = fieldRef.Required;

            createdField.Update();
            createdField.Context.ExecuteQueryRetry();
        }
コード例 #44
0
        private static Field UpdateFieldRef(List siteList, Guid fieldId, FieldRef fieldRef)
        {
            // find the field in the list
            var listField = siteList.Fields.GetById(fieldId);

            siteList.Context.Load(listField, f => f.Id, f => f.Title, f => f.Hidden, f => f.Required);
            siteList.Context.ExecuteQueryRetry();

            var isDirty = false;
            if (!string.IsNullOrEmpty(fieldRef.DisplayName) && fieldRef.DisplayName != listField.Title)
            {
                listField.Title = fieldRef.DisplayName;
                isDirty = true;
            }
            // We cannot configure Hidden property for Phonetic fields
            if (!(siteList.BaseTemplate == (int)ListTemplateType.Contacts &&
                (fieldRef.Name.Equals("LastNamePhonetic", StringComparison.InvariantCultureIgnoreCase) ||
                fieldRef.Name.Equals("FirstNamePhonetic", StringComparison.InvariantCultureIgnoreCase) ||
                fieldRef.Name.Equals("CompanyPhonetic", StringComparison.InvariantCultureIgnoreCase))))
            {
                if (fieldRef.Hidden != listField.Hidden)
                {
                    listField.Hidden = fieldRef.Hidden;
                    isDirty = true;
                }
            }

            if (fieldRef.Required != listField.Required)
            {
                listField.Required = fieldRef.Required;
                isDirty = true;
            }

            if (isDirty)
            {
                listField.UpdateAndPushChanges(true);
                siteList.Context.ExecuteQueryRetry();
            }

            return listField;
        }
コード例 #45
0
        public void CanProvisionCalculatedFieldInListInstance()
        {
            var template = new ProvisioningTemplate();
            var listInstance = new ListInstance();
            template.SiteFields.Add(new Core.Framework.Provisioning.Model.Field() { SchemaXml = ElementSchema });

            listInstance.Url = string.Format("lists/{0}", listName);
            listInstance.Title = listName;
            listInstance.TemplateType = (int)ListTemplateType.GenericList;

            var referencedField = new FieldRef();
            referencedField.Id = fieldId;
            listInstance.FieldRefs.Add(referencedField);

            var calculatedField = new Core.Framework.Provisioning.Model.Field();
            calculatedField.SchemaXml = TokenizedCalculatedFieldElementSchema;
            listInstance.Fields.Add(calculatedField);

            template.Lists.Add(listInstance);

            using (var ctx = TestCommon.CreateClientContext())
            {
                var parser = new TokenParser(ctx.Web, template);
                new ObjectField().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation());
                new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation());

                var list = ctx.Web.GetListByUrl(listInstance.Url);
                Assert.IsNotNull(list);

                var rf = list.GetFieldById<FieldText>(fieldId);
                var f = list.GetFieldById<FieldCalculated>(calculatedFieldId);

                Assert.IsNotNull(rf, "Referenced field not added");
                Assert.IsNotNull(f);
                Assert.IsInstanceOfType(f, typeof(FieldCalculated));
                Assert.IsFalse(f.Formula.Contains('#') || f.Formula.Contains('?'), "Calculated field was not provisioned properly");
            }
        }