Example #1
0
        public static byte[] TryParseData(string text, HexDataKind dataKind, bool isBigEndian)
        {
            switch (dataKind)
            {
            case HexDataKind.Bytes:                 return(TryParseBytes(text));

            case HexDataKind.Utf8String:    return(TryParseUtf8String(text));

            case HexDataKind.Utf16String:   return(TryParseUtf16String(text, isBigEndian));

            case HexDataKind.Byte:                  return(TryParseByte(text));

            case HexDataKind.SByte:                 return(TryParseSByte(text));

            case HexDataKind.Int16:                 return(TryParseInt16(text, isBigEndian));

            case HexDataKind.UInt16:                return(TryParseUInt16(text, isBigEndian));

            case HexDataKind.Int32:                 return(TryParseInt32(text, isBigEndian));

            case HexDataKind.UInt32:                return(TryParseUInt32(text, isBigEndian));

            case HexDataKind.Int64:                 return(TryParseInt64(text, isBigEndian));

            case HexDataKind.UInt64:                return(TryParseUInt64(text, isBigEndian));

            case HexDataKind.Single:                return(TryParseSingle(text, isBigEndian));

            case HexDataKind.Double:                return(TryParseDouble(text, isBigEndian));

            default:                                                return(null);
            }
        }
Example #2
0
		public override bool IsSearchDataValid(HexDataKind dataKind, string searchString, bool matchCase, bool isBigEndian) {
			if (searchString == string.Empty)
				return false;

			switch (dataKind) {
			case HexDataKind.Bytes:
				return hexSearchServiceProvider.IsValidByteSearchString(searchString);

			case HexDataKind.Utf8String:
			case HexDataKind.Utf16String:
				return true;

			case HexDataKind.Byte:
			case HexDataKind.SByte:
			case HexDataKind.Int16:
			case HexDataKind.UInt16:
			case HexDataKind.Int32:
			case HexDataKind.UInt32:
			case HexDataKind.Int64:
			case HexDataKind.UInt64:
			case HexDataKind.Single:
			case HexDataKind.Double:
				return DataParser.TryParseData(searchString, dataKind, isBigEndian) != null;

			default:
				throw new InvalidOperationException();
			}
		}
Example #3
0
        public override bool IsSearchDataValid(HexDataKind dataKind, string searchString, bool matchCase, bool isBigEndian)
        {
            if (searchString == string.Empty)
            {
                return(false);
            }

            switch (dataKind)
            {
            case HexDataKind.Bytes:
                return(hexSearchServiceProvider.IsValidByteSearchString(searchString));

            case HexDataKind.Utf8String:
            case HexDataKind.Utf16String:
                return(true);

            case HexDataKind.Byte:
            case HexDataKind.SByte:
            case HexDataKind.Int16:
            case HexDataKind.UInt16:
            case HexDataKind.Int32:
            case HexDataKind.UInt32:
            case HexDataKind.Int64:
            case HexDataKind.UInt64:
            case HexDataKind.Single:
            case HexDataKind.Double:
                return(DataParser.TryParseData(searchString, dataKind, isBigEndian) != null);

            default:
                throw new InvalidOperationException();
            }
        }
Example #4
0
 public override void SaveSettings(string searchString, string replaceString, bool matchCase, bool bigEndian, HexDataKind dataKind)
 {
     this.searchString  = searchString ?? throw new ArgumentNullException(nameof(searchString));
     this.replaceString = replaceString ?? throw new ArgumentNullException(nameof(replaceString));
     this.matchCase     = matchCase;
     this.bigEndian     = bigEndian;
     this.dataKind      = dataKind;
 }
Example #5
0
		public override void SaveSettings(string searchString, string replaceString, bool matchCase, bool bigEndian, HexDataKind dataKind) {
			if (searchString == null)
				throw new ArgumentNullException(nameof(searchString));
			if (replaceString == null)
				throw new ArgumentNullException(nameof(replaceString));
			this.searchString = searchString;
			this.replaceString = replaceString;
			this.matchCase = matchCase;
			this.bigEndian = bigEndian;
			this.dataKind = dataKind;
		}
Example #6
0
        public override HexSearchService TryCreateHexSearchService(HexDataKind dataKind, string searchString, bool matchCase, bool isBigEndian)
        {
            if (searchString == string.Empty)
            {
                return(null);
            }

            byte[] data;
            switch (dataKind)
            {
            case HexDataKind.Bytes:
                if (!hexSearchServiceProvider.IsValidByteSearchString(searchString))
                {
                    return(null);
                }
                return(hexSearchServiceProvider.CreateByteSearchService(searchString));

            case HexDataKind.Utf8String:
                return(hexSearchServiceProvider.CreateUtf8StringSearchService(searchString, matchCase));

            case HexDataKind.Utf16String:
                return(hexSearchServiceProvider.CreateUtf16StringSearchService(searchString, matchCase, isBigEndian));

            case HexDataKind.Byte:
            case HexDataKind.SByte:
            case HexDataKind.Int16:
            case HexDataKind.UInt16:
            case HexDataKind.Int32:
            case HexDataKind.UInt32:
            case HexDataKind.Int64:
            case HexDataKind.UInt64:
            case HexDataKind.Single:
            case HexDataKind.Double:
                data = DataParser.TryParseData(searchString, dataKind, isBigEndian);
                if (data == null)
                {
                    return(null);
                }
                return(hexSearchServiceProvider.CreateByteSearchService(data));

            default:
                throw new InvalidOperationException();
            }
        }
Example #7
0
		public override HexSearchService TryCreateHexSearchService(HexDataKind dataKind, string searchString, bool matchCase, bool isBigEndian) {
			if (searchString == string.Empty)
				return null;

			byte[] data;
			switch (dataKind) {
			case HexDataKind.Bytes:
				if (!hexSearchServiceProvider.IsValidByteSearchString(searchString))
					return null;
				return hexSearchServiceProvider.CreateByteSearchService(searchString);

			case HexDataKind.Utf8String:
				return hexSearchServiceProvider.CreateUtf8StringSearchService(searchString, matchCase);

			case HexDataKind.Utf16String:
				return hexSearchServiceProvider.CreateUtf16StringSearchService(searchString, matchCase, isBigEndian);

			case HexDataKind.Byte:
			case HexDataKind.SByte:
			case HexDataKind.Int16:
			case HexDataKind.UInt16:
			case HexDataKind.Int32:
			case HexDataKind.UInt32:
			case HexDataKind.Int64:
			case HexDataKind.UInt64:
			case HexDataKind.Single:
			case HexDataKind.Double:
				data = DataParser.TryParseData(searchString, dataKind, isBigEndian);
				if (data == null)
					return null;
				return hexSearchServiceProvider.CreateByteSearchService(data);

			default:
				throw new InvalidOperationException();
			}
		}
Example #8
0
		public abstract HexSearchService TryCreateHexSearchService(HexDataKind dataKind, string searchString, bool matchCase, bool isBigEndian);
Example #9
0
		public abstract bool IsSearchDataValid(HexDataKind dataKind, string searchString, bool matchCase, bool isBigEndian);
 public abstract HexSearchService?TryCreateHexSearchService(HexDataKind dataKind, string searchString, bool matchCase, bool isBigEndian);
 public abstract bool IsSearchDataValid(HexDataKind dataKind, string searchString, bool matchCase, bool isBigEndian);
Example #12
0
 public abstract void SaveSettings(string searchString, string replaceString, bool matchCase, bool bigEndian, HexDataKind dataKind);
Example #13
0
		public abstract void SaveSettings(string searchString, string replaceString, bool matchCase, bool bigEndian, HexDataKind dataKind);
Example #14
0
		public static byte[] TryParseData(string text, HexDataKind dataKind, bool isBigEndian) {
			switch (dataKind) {
			case HexDataKind.Bytes:			return TryParseBytes(text);
			case HexDataKind.Utf8String:	return TryParseUtf8String(text);
			case HexDataKind.Utf16String:	return TryParseUtf16String(text, isBigEndian);
			case HexDataKind.Byte:			return TryParseByte(text);
			case HexDataKind.SByte:			return TryParseSByte(text);
			case HexDataKind.Int16:			return TryParseInt16(text, isBigEndian);
			case HexDataKind.UInt16:		return TryParseUInt16(text, isBigEndian);
			case HexDataKind.Int32:			return TryParseInt32(text, isBigEndian);
			case HexDataKind.UInt32:		return TryParseUInt32(text, isBigEndian);
			case HexDataKind.Int64:			return TryParseInt64(text, isBigEndian);
			case HexDataKind.UInt64:		return TryParseUInt64(text, isBigEndian);
			case HexDataKind.Single:		return TryParseSingle(text, isBigEndian);
			case HexDataKind.Double:		return TryParseDouble(text, isBigEndian);
			default:						return null;
			}
		}
Example #15
0
		public DataKindVM(HexDataKind dataKind, string displayName, string inputGestureText = null) {
			DataKind = dataKind;
			DisplayName = displayName;
			InputGestureText = inputGestureText == null ? string.Empty : "(" + inputGestureText + ")";
		}
Example #16
0
			public SearchOptions(HexBufferSpan searchRange, HexBufferPoint startingPosition, HexDataKind dataKind, string searchString, OurFindOptions findOptions, bool isBigEndian) {
				SearchRange = searchRange;
				StartingPosition = startingPosition;
				DataKind = dataKind;
				SearchString = searchString;
				FindOptions = findOptions;
				IsBigEndian = isBigEndian;
			}