/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */
#ifndef __com_sun_star_util_URL_idl__
#define __com_sun_star_util_URL_idl__



module com {  module sun {  module star {  module util {


/** represents the structure of an Uniform Resource Locator.

    <p>
    If the structure represents a valid URL or not depends on prior usage of
    the functions of XURLTransformer. Only after one of the functions
    returned `TRUE` this can be assumed.<br>
    It is not necessary to set all of the fields; either URL::Complete
    or (some of) the others are set. Additionally, most of the other
    fields, like URL::Host, URL::Port,
    URL::User, URL::Password,
    or URL::Mark, are optional.

    @see XURLTransformer

    </p>
 */
published struct URL
{
    /** contains the string representation of the complete URL, for example,
        http://www.sun.de:8080/pub/test/foo.txt?a=b#xyz

        <p>
        It is used as a central input/output or input parameter for the interfaces of
        XURLTransformer. The usage of one of the XURLTransformer
        function is mandatory to validate the URL. It cannot be assumed that
        URL::Complete represents always a valid URL!
        </p>
     */
    string Complete;

    /** contains the URL without a mark and without arguments, for example,
        http://www.sun.de:8080/pub/test/foo.txt
     */
    string Main;

    /** contains the protocol (scheme) of the URL, for example, "http"
     */
    string Protocol;

    /** contains the user-identifier of the URL, for example, "me"
     */
    string User;

    /** contains the users password of the URL, for example, "pass"
     */
    string Password;

    /** contains the server part of the URL, for example, "www.sun.de"
     */
    string Server;

    /** contains the port at the server of the URL, for example, "8080"
     */
    short Port;

    /** contains all segments but the last one of the hierarchical path of the URL, for example, "/pub/test/"
     */
    string Path;

    /** contains the last segment of the hierarchical path of the URL, for the above example, "foo.txt"
        <p>
        <strong>Attention:</strong>A service implementing the XURLTransformer interface
        will normally not detect if the last segment is a folder or a file. So it is possible that
        the last segment describes a folder. If you want to be sure that a file URL that references
        a folder will be correctly put into the URL fields you should append a "/" at the end of the
        hierarchical path.
        </p>
     */
    string Name;

    /** contains the arguments part of the URL, for example, "a=b"
     */
    string Arguments;

    /** contains the mark part of the URL, for example, "xyz"
     */
    string Mark;

};


}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
