예제 #1
0
        public virtual Token Next()
        {
            if (tokenWrapper == null)
            {
                throw new System.NotSupportedException("This TokenStream only supports the new Attributes API.");
            }

            Token nextToken;

            if (supportedMethods.hasIncrementToken)
            {
                Token savedDelegate = tokenWrapper.delegate_Renamed;
                tokenWrapper.delegate_Renamed = new Token();
                nextToken = IncrementToken()?tokenWrapper.delegate_Renamed:null;
                tokenWrapper.delegate_Renamed = savedDelegate;
            }
            else
            {
                System.Diagnostics.Debug.Assert(supportedMethods.hasReusableNext);
                nextToken = Next(new Token());
            }

            if (nextToken != null)
            {
                Mono.Lucene.Net.Index.Payload p = nextToken.GetPayload();
                if (p != null)
                {
                    nextToken.SetPayload((Mono.Lucene.Net.Index.Payload)p.Clone());
                }
            }
            return(nextToken);
        }
예제 #2
0
파일: Token.cs 프로젝트: vernon016/mono
        public override System.Object Clone()
        {
            Token t = (Token)base.Clone();

            // Do a deep clone
            if (termBuffer != null)
            {
                t.termBuffer = new char[termBuffer.Length];
                termBuffer.CopyTo(t.termBuffer, 0);
            }
            if (payload != null)
            {
                t.payload = (Payload)payload.Clone();
            }
            return(t);
        }
예제 #3
0
        public override void  CopyTo(AttributeImpl target)
        {
            PayloadAttribute t = (PayloadAttribute)target;

            t.SetPayload((payload == null)?null:(Payload)payload.Clone());
        }