private string MethodBase(TypeSourceArgs source, string nextMethodInvoke)
        {
            var node = new CodeNodeBuilder();

            node.If($"{(_isInverted ? "!" : "")}({_condition.GetEvalString(source.ToString(), Type, _expression)})", node => {
                node.Return(nextMethodInvoke);
            });
            node.Return(DeserializeResult.Success.ToDisplayString());

            return(node.ToString());
        }
        public string GetMethodBody(string methodId, IChainMethodArgsProvider provider, IComponentProvider components, IThrowCollection throwCollection)
        {
            var node = new CodeNodeBuilder();

            node.If($"{IsInvert()}({GetConditionString(provider)})", node => {
                node.Return(provider.InvokeNextMethod());
            });
            node.Return(DeserializeResult.Success.ToDisplayString());

            return(node.ToString());

            string IsInvert() => _isInverted ? "!" : "";
        }
Ejemplo n.º 3
0
        /// <returns>Next state arg name</returns>
        private string LoadNextWriteState <TChainedMethod>(CodeNodeBuilder node, TChainedMethod chainedMethod) where TChainedMethod : MemberChainedMethods <TChainedMethod>
        {
            const string nextState = "nextState";

            var tstateTypeName = TypeName.FromGenericArgument(SerializeWriterChainedMethods.T_STATE);
            var state          = chainedMethod[tstateTypeName];
            var tsource        = chainedMethod[TypeName.FromType(_member.ContainingFullType.Symbol)];

            node.If($"!{state}.Write({tsource}, out var {nextState})", node => {
                node.Return();
            });

            return(nextState);
        }
 public override void TrySerialize(CodeNodeBuilder node, InArgs <object> target, BufferArgs readOnlySpan, OutArgs <int> outWrittenBytes)
 => node.Return($"{MemberMethod.TrySerializeState(0)} ({parent}, {target}, {readOnlySpan}, out {outWrittenBytes})");
 public override void TryDeserializeSpan(CodeNodeBuilder node, BufferArgs readOnlySpan, OutArgs <int> outReadBytes, OutArgs <object> outResult)
 => node.Return($"{MemberMethod.TryDeserializeState(0)}({parent}, {readOnlySpan}, out {outReadBytes}, out {outResult})");
 public override void TryDeserializeSequence(CodeNodeBuilder node, BufferArgs refSequenceCursor, OutArgs <object> outResult)
 => node.Return($"{MemberMethod.TryDeserializeState(0)}({parent}, ref {refSequenceCursor}, out {outResult})");
 public override void Serialize(CodeNodeBuilder node, InArgs <object> target, BufferArgs readOnlySpan)
 => node.Return($"{MemberMethod.SerializeState(0)}({parent}, {target}, {readOnlySpan})");
 public override void GetLength(CodeNodeBuilder node, InArgs <object> target)
 => node.Return($"{MemberMethod.GetLengthState(0)}({parent}, {target} )");