예제 #1
0
 public virtual bool WriteLowestLevelHashs(FileDataIO fileDataOut, uint wHashIdent, bool bNoIdent, bool b32BitIdent)
 {
     wHashIdent <<= 1;
     wHashIdent  |= (IsLeftBranch) ? (uint)1 : (uint)0;
     if (LeftTree == null && RightTree == null)
     {
         if (DataSize <= BaseSize && HashValid)
         {
             if (!bNoIdent && !b32BitIdent)
             {
                 fileDataOut.WriteUInt16((ushort)wHashIdent);
             }
             else if (!bNoIdent && b32BitIdent)
             {
                 fileDataOut.WriteUInt32(wHashIdent);
             }
             Hash.Write(fileDataOut);
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else if (LeftTree == null || RightTree == null)
     {
         return(false);
     }
     else
     {
         return(LeftTree.WriteLowestLevelHashs(fileDataOut, wHashIdent, bNoIdent, b32BitIdent) &&
                RightTree.WriteLowestLevelHashs(fileDataOut, wHashIdent, bNoIdent, b32BitIdent));
     }
 }
예제 #2
0
        public void WriteCollectionInfo(FileDataIO out_data)
        {
            out_data.WriteUInt32(Convert.ToUInt32(tagList_.Count));

            foreach (Tag tag in tagList_)
            {
                tag.WriteNewEd2kTag(out_data, Utf8StrEnum.utf8strRaw);
            }
        }
예제 #3
0
        public void WriteHash(FileDataIO fileDataOut, uint wHashIdent, bool b32BitIdent)
        {
            wHashIdent <<= 1;
            wHashIdent  |= (IsLeftBranch) ? (uint)1 : (uint)0;

            if (!b32BitIdent)
            {
                fileDataOut.WriteUInt16((ushort)wHashIdent);
            }
            else
            {
                fileDataOut.WriteUInt32(wHashIdent);
            }

            Hash.Write(fileDataOut);
        }