------------------------------------------------------------------------------
| 647 | |
| 648 | //------------------------------------------------------------------------------ |
| 649 | vtkSmartPointer<vtkURI> vtkURI::Parse(const char* uri, std::size_t size) |
| 650 | { |
| 651 | if (size != 0 && !uri) |
| 652 | { |
| 653 | vtkErrorWithObjectMacro(nullptr, "Null string with non-null size"); |
| 654 | return nullptr; |
| 655 | } |
| 656 | |
| 657 | const auto end = uri + size; |
| 658 | |
| 659 | vtkURIComponent scheme; |
| 660 | uri = ExtractScheme(uri, end, scheme); |
| 661 | vtkURIComponent auth; |
| 662 | uri = ExtractAuthority(uri, end, auth); |
| 663 | vtkURIComponent path; |
| 664 | uri = ExtractPath(uri, end, path); |
| 665 | vtkURIComponent query; |
| 666 | uri = ExtractQuery(uri, end, query); |
| 667 | vtkURIComponent frag; |
| 668 | uri = ExtractFragment(uri, end, frag); |
| 669 | |
| 670 | return vtkURI::Make( |
| 671 | std::move(scheme), std::move(auth), std::move(path), std::move(query), std::move(frag)); |
| 672 | } |
| 673 | |
| 674 | //------------------------------------------------------------------------------ |
| 675 | vtkSmartPointer<vtkURI> vtkURI::Resolve(const vtkURI* baseURI, const vtkURI* uri) |