Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ InternalIsWellFormedOriginalString()

unsafe bool System.Uri.InternalIsWellFormedOriginalString ( )
inlinepackage

Definition at line 3964 of file Uri.cs.

3965 {
3967 {
3969 }
3970 fixed (char* ptr = _string)
3971 {
3972 int idx = 0;
3973 if (!IsAbsoluteUri)
3974 {
3976 {
3977 return false;
3978 }
3979 return (CheckCanonical(ptr, ref idx, _string.Length, '\ufffe') & (Check.EscapedCanonical | Check.BackslashInPath)) == Check.EscapedCanonical;
3980 }
3981 if (IsImplicitFile)
3982 {
3983 return false;
3984 }
3986 Flags flags = _flags & (Flags.E_CannotDisplayCanonical | Flags.IriCanonical);
3987 if ((flags & Flags.IriCanonical) != Flags.Zero)
3988 {
3989 if ((flags & (Flags.E_UserNotCanonical | Flags.UserIriCanonical)) == (Flags.E_UserNotCanonical | Flags.UserIriCanonical))
3990 {
3991 flags &= ~(Flags.E_UserNotCanonical | Flags.UserIriCanonical);
3992 }
3993 if ((flags & (Flags.E_PathNotCanonical | Flags.PathIriCanonical)) == (Flags.E_PathNotCanonical | Flags.PathIriCanonical))
3994 {
3995 flags &= ~(Flags.E_PathNotCanonical | Flags.PathIriCanonical);
3996 }
3997 if ((flags & (Flags.E_QueryNotCanonical | Flags.QueryIriCanonical)) == (Flags.E_QueryNotCanonical | Flags.QueryIriCanonical))
3998 {
3999 flags &= ~(Flags.E_QueryNotCanonical | Flags.QueryIriCanonical);
4000 }
4001 if ((flags & (Flags.E_FragmentNotCanonical | Flags.FragmentIriCanonical)) == (Flags.E_FragmentNotCanonical | Flags.FragmentIriCanonical))
4002 {
4003 flags &= ~(Flags.E_FragmentNotCanonical | Flags.FragmentIriCanonical);
4004 }
4005 }
4006 if ((flags & Flags.E_CannotDisplayCanonical & (Flags.E_UserNotCanonical | Flags.E_PathNotCanonical | Flags.E_QueryNotCanonical | Flags.E_FragmentNotCanonical)) != Flags.Zero)
4007 {
4008 return false;
4009 }
4010 if (InFact(Flags.AuthorityFound))
4011 {
4013 if (idx >= _info.Offset.User || _string[idx - 1] == '\\' || _string[idx] == '\\')
4014 {
4015 return false;
4016 }
4017 if (InFact(Flags.DosPath | Flags.UncPath) && ++idx < _info.Offset.User && (_string[idx] == '/' || _string[idx] == '\\'))
4018 {
4019 return false;
4020 }
4021 }
4022 if (InFact(Flags.FirstSlashAbsent) && _info.Offset.Query > _info.Offset.Path)
4023 {
4024 return false;
4025 }
4026 if (InFact(Flags.BackslashInPath))
4027 {
4028 return false;
4029 }
4030 if (IsDosPath && _string[_info.Offset.Path + SecuredPathIndex - 1] == '|')
4031 {
4032 return false;
4033 }
4034 if ((_flags & Flags.CanonicalDnsHost) == Flags.Zero && HostType != Flags.IPv6HostType)
4035 {
4036 idx = _info.Offset.User;
4037 Check check = CheckCanonical(ptr, ref idx, _info.Offset.Path, '/');
4038 if ((check & (Check.EscapedCanonical | Check.BackslashInPath | Check.ReservedFound)) != Check.EscapedCanonical && (!IriParsing || (check & (Check.DisplayCanonical | Check.NotIriCanonical | Check.FoundNonAscii)) != (Check.DisplayCanonical | Check.FoundNonAscii)))
4039 {
4040 return false;
4041 }
4042 }
4043 if ((_flags & (Flags.SchemeNotCanonical | Flags.AuthorityFound)) == (Flags.SchemeNotCanonical | Flags.AuthorityFound))
4044 {
4045 idx = _syntax.SchemeName.Length;
4046 while (ptr[idx++] != ':')
4047 {
4048 }
4049 if (idx + 1 >= _string.Length || ptr[idx] != '/' || ptr[idx + 1] != '/')
4050 {
4051 return false;
4052 }
4053 }
4054 }
4055 return true;
4056 }
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string net_uri_UserDrivenParsing
Definition SR.cs:50
Definition SR.cs:7
string SchemeName
Definition UriParser.cs:81
Offset Offset
Definition Uri.cs:81
UriParser _syntax
Definition Uri.cs:193
bool IriParsing
Definition Uri.cs:215
void EnsureParseRemaining()
Definition Uri.cs:636
bool UserDrivenParsing
Definition Uri.cs:219
int SecuredPathIndex
Definition Uri.cs:222
Flags _flags
Definition Uri.cs:195
bool IsDosPath
Definition Uri.cs:205
bool IsAbsoluteUri
Definition Uri.cs:572
static bool CheckForColonInFirstPathSegment(string uriString)
Definition Uri.cs:1300
bool InFact(Flags flags)
Definition Uri.cs:611
string _string
Definition Uri.cs:189
Flags HostType
Definition Uri.cs:209
unsafe Check CheckCanonical(char *str, ref int idx, int end, char delim)
Definition Uri.cs:2971
UriInfo _info
Definition Uri.cs:197
bool IsImplicitFile
Definition Uri.cs:201
ushort Path
Definition Uri.cs:119
ushort User
Definition Uri.cs:113

References System.Uri._flags, System.Uri._info, System.Uri._string, System.Uri._syntax, System.Uri.CheckCanonical(), System.Uri.CheckForColonInFirstPathSegment(), System.Runtime.Serialization.Dictionary, System.Uri.EnsureParseRemaining(), System.SR.Format(), System.Uri.HostType, System.Uri.InFact(), System.Uri.IriParsing, System.Uri.IsAbsoluteUri, System.Uri.IsDosPath, System.Uri.IsImplicitFile, System.SR.net_uri_UserDrivenParsing, System.Uri.UriInfo.Offset, System.Uri.Offset.Path, System.UriParser.SchemeName, System.Uri.SecuredPathIndex, System.Uri.Offset.User, and System.Uri.UserDrivenParsing.

Referenced by System.Uri.IsWellFormedOriginalString(), and System.UriParser.IsWellFormedOriginalString().