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

◆ CreateHostString()

unsafe void System.Uri.CreateHostString ( )
inlineprivate

Definition at line 1646 of file Uri.cs.

1647 {
1648 if (!_syntax.IsSimple)
1649 {
1650 lock (_info)
1651 {
1652 if (NotAny(Flags.ErrorOrParsingRecursion))
1653 {
1654 _flags |= Flags.ErrorOrParsingRecursion;
1656 _flags &= ~Flags.ErrorOrParsingRecursion;
1657 return;
1658 }
1659 }
1660 }
1661 Flags flags = _flags;
1663 if (text.Length != 0)
1664 {
1665 if (HostType == Flags.BasicHostType)
1666 {
1667 int idx = 0;
1668 Check check;
1669 fixed (char* str = text)
1670 {
1671 check = CheckCanonical(str, ref idx, text.Length, '\uffff');
1672 }
1673 if ((check & Check.DisplayCanonical) == 0 && (NotAny(Flags.ImplicitFile) || (check & Check.ReservedFound) != 0))
1674 {
1675 flags |= Flags.HostNotCanonical;
1676 }
1677 if (InFact(Flags.ImplicitFile) && (check & (Check.EscapedCanonical | Check.ReservedFound)) != 0)
1678 {
1679 check &= ~Check.EscapedCanonical;
1680 }
1681 if ((check & (Check.EscapedCanonical | Check.BackslashInPath)) != Check.EscapedCanonical)
1682 {
1683 flags |= Flags.E_HostNotCanonical;
1684 if (NotAny(Flags.UserEscaped))
1685 {
1686 text = UriHelper.EscapeString(text, !IsImplicitFile, UriHelper.UnreservedReservedTable, '?', '#');
1687 }
1688 }
1689 }
1690 else if (NotAny(Flags.CanonicalDnsHost))
1691 {
1692 if (_info.ScopeId != null)
1693 {
1694 flags |= Flags.HostNotCanonical | Flags.E_HostNotCanonical;
1695 }
1696 else
1697 {
1698 for (int i = 0; i < text.Length; i++)
1699 {
1700 if (_info.Offset.Host + i >= _info.Offset.End || text[i] != _string[_info.Offset.Host + i])
1701 {
1702 flags |= Flags.HostNotCanonical | Flags.E_HostNotCanonical;
1703 break;
1704 }
1705 }
1706 }
1707 }
1708 }
1709 _info.Host = text;
1710 InterlockedSetFlags(flags);
1711 }
string ScopeId
Definition Uri.cs:91
Offset Offset
Definition Uri.cs:81
UriParser _syntax
Definition Uri.cs:193
void InterlockedSetFlags(Flags flags)
Definition Uri.cs:588
unsafe void GetHostViaCustomSyntax()
Definition Uri.cs:1751
Flags _flags
Definition Uri.cs:195
static string CreateHostStringHelper(string str, int idx, int end, ref Flags flags, ref string scopeId)
Definition Uri.cs:1713
bool NotAny(Flags flags)
Definition Uri.cs:606
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 End
Definition Uri.cs:125
ushort Host
Definition Uri.cs:115

References System.Uri._flags, System.Uri._info, System.Uri._string, System.Uri._syntax, System.Uri.CheckCanonical(), System.Uri.CreateHostStringHelper(), System.Runtime.Serialization.Dictionary, System.Uri.Offset.End, System.UriHelper.EscapeString(), System.Uri.GetHostViaCustomSyntax(), System.Uri.Offset.Host, System.Uri.HostType, System.Uri.InFact(), System.Uri.InterlockedSetFlags(), System.Uri.IsImplicitFile, System.UriParser.IsSimple, System.Uri.NotAny(), System.Uri.UriInfo.Offset, System.Uri.Offset.Path, System.Uri.UriInfo.ScopeId, System.str, System.text, and System.UriHelper.UnreservedReservedTable.

Referenced by System.Uri.EnsureHostString().