System.Xml.BufferBuilder.BufferBuilder.wstrcpy C# (CSharp) Méthode

wstrcpy() static private méthode

static private wstrcpy ( char dmem, char smem, int charCount ) : void
dmem char
smem char
charCount int
Résultat void
        internal static unsafe void wstrcpy( char *dmem, char *smem, int charCount ) {
            if ( charCount > 0 ) {
                if ( ( ( (int)dmem ^ (int)smem ) & 3 ) == 0 ) {
                    while ( ( (int) dmem & 3 ) != 0 && charCount > 0) {
                        dmem[0] = smem[0];
                        dmem += 1;
                        smem += 1;
                        charCount -= 1;
                    }
                    if ( charCount >= 8 ) {
                        charCount -= 8;
                        do {
                            ((uint*)dmem)[0] = ((uint*)smem)[0];
                            ((uint*)dmem)[1] = ((uint*)smem)[1];
                            ((uint*)dmem)[2] = ((uint*)smem)[2];
                            ((uint*)dmem)[3] = ((uint*)smem)[3];
                            dmem += 8;
                            smem += 8;
                            charCount -= 8;
                        } while ( charCount >= 0 );
                    }
                    if ( ( charCount & 4 ) != 0 ) {
                        ((uint*)dmem)[0] = ((uint*)smem)[0];
                        ((uint*)dmem)[1] = ((uint*)smem)[1];
                        dmem += 4;
                        smem += 4;
                    }
                    if ( ( charCount & 2 ) != 0) {
                        ((uint*)dmem)[0] = ((uint*)smem)[0];
                        dmem += 2;
                        smem += 2;
                    }
                } 
                else {
                    if ( charCount >= 8 ) {
                        charCount -= 8;
                        do {
                            dmem[0] = smem[0];
                            dmem[1] = smem[1];
                            dmem[2] = smem[2];
                            dmem[3] = smem[3];
                            dmem[4] = smem[4];
                            dmem[5] = smem[5];
                            dmem[6] = smem[6];
                            dmem[7] = smem[7];
                            dmem += 8;
                            smem += 8;
                            charCount -= 8;
                        }
                        while ( charCount >= 0 );
                    }
                    if ( ( charCount & 4) != 0 ) {
                        dmem[0] = smem[0];
                        dmem[1] = smem[1];
                        dmem[2] = smem[2];
                        dmem[3] = smem[3];
                        dmem += 4;
                        smem += 4;
                    }
                    if ( ( charCount & 2 ) != 0 ) {
                        dmem[0] = smem[0];
                        dmem[1] = smem[1];
                        dmem += 2;
                        smem += 2;
                    }
                }

                if ( ( charCount & 1 ) != 0 ) {
                    dmem[0] = smem[0];
                }
            }
        }