2010-10-14 08:27:31 +02:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2012-07-11 09:51:50 +01:00
|
|
|
/*
|
|
|
|
* 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 .
|
|
|
|
*/
|
2007-04-11 19:21:17 +00:00
|
|
|
#ifndef _URLOBJ_HXX
|
|
|
|
#define _URLOBJ_HXX
|
|
|
|
|
|
|
|
#include "tools/toolsdllapi.h"
|
|
|
|
#include "com/sun/star/uno/Reference.hxx"
|
|
|
|
#include "rtl/string.h"
|
|
|
|
#include "rtl/ustrbuf.hxx"
|
|
|
|
#include "rtl/textenc.h"
|
|
|
|
#include "sal/types.h"
|
|
|
|
|
|
|
|
namespace com { namespace sun { namespace star { namespace util {
|
|
|
|
class XStringWidth;
|
|
|
|
} } } }
|
|
|
|
|
|
|
|
// Special tokens:
|
|
|
|
#define INET_PATH_TOKEN '/'
|
|
|
|
#define INET_MARK_TOKEN '#'
|
|
|
|
#define INET_HEX_ESCAPE '%'
|
|
|
|
|
|
|
|
// Common URL prefixes for various schemes:
|
|
|
|
#define INET_FTP_SCHEME "ftp://"
|
|
|
|
#define INET_HTTP_SCHEME "http://"
|
|
|
|
#define INET_HTTPS_SCHEME "https://"
|
|
|
|
#define INET_FILE_SCHEME "file://"
|
|
|
|
#define INET_MAILTO_SCHEME "mailto:"
|
|
|
|
#define INET_NEWS_SCHEME "news:"
|
2010-07-15 15:25:53 +02:00
|
|
|
#define INET_HID_SCHEME "hid:"
|
2007-04-11 19:21:17 +00:00
|
|
|
|
|
|
|
#define URL_PREFIX_PRIV_SOFFICE "private:"
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
URL_PREFIX_PRIV_SOFFICE_LEN
|
|
|
|
= RTL_CONSTASCII_LENGTH(URL_PREFIX_PRIV_SOFFICE)
|
|
|
|
};
|
|
|
|
|
|
|
|
#define URL_PREFIX_PRIV_OBSOLETE URL_PREFIX_PRIV_SOFFICE
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
URL_PREFIX_PRIV_OBSOLETE_LEN
|
|
|
|
= RTL_CONSTASCII_LENGTH(URL_PREFIX_PRIV_OBSOLETE)
|
|
|
|
};
|
|
|
|
|
|
|
|
#define URL_PREFIX_PRIV_EXTERN "staroffice:"
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
URL_PREFIX_PRIV_EXTERN_LEN = RTL_CONSTASCII_LENGTH(URL_PREFIX_PRIV_EXTERN)
|
|
|
|
};
|
|
|
|
|
|
|
|
// Schemes:
|
|
|
|
enum INetProtocol
|
|
|
|
{
|
|
|
|
INET_PROT_NOT_VALID = 0,
|
|
|
|
INET_PROT_FTP = 1,
|
|
|
|
INET_PROT_HTTP = 2,
|
|
|
|
INET_PROT_FILE = 3,
|
|
|
|
INET_PROT_MAILTO = 4,
|
|
|
|
INET_PROT_VND_SUN_STAR_WEBDAV = 5,
|
|
|
|
INET_PROT_NEWS = 6,
|
|
|
|
INET_PROT_PRIV_SOFFICE = 7,
|
|
|
|
INET_PROT_PRIVATE = INET_PROT_PRIV_SOFFICE, // obsolete
|
|
|
|
INET_PROT_VND_SUN_STAR_HELP = 8,
|
|
|
|
INET_PROT_HTTPS = 9,
|
|
|
|
INET_PROT_SLOT = 10,
|
|
|
|
INET_PROT_MACRO = 11,
|
|
|
|
INET_PROT_JAVASCRIPT = 12,
|
|
|
|
INET_PROT_IMAP = 13,
|
|
|
|
INET_PROT_POP3 = 14,
|
|
|
|
INET_PROT_DATA = 15,
|
|
|
|
INET_PROT_CID = 16,
|
|
|
|
INET_PROT_OUT = 17,
|
2010-01-19 12:50:17 +01:00
|
|
|
INET_PROT_VND_SUN_STAR_HIER = 18,
|
|
|
|
INET_PROT_VIM = 19,
|
|
|
|
INET_PROT_UNO = 20,
|
|
|
|
INET_PROT_COMPONENT = 21,
|
|
|
|
INET_PROT_VND_SUN_STAR_PKG = 22,
|
|
|
|
INET_PROT_LDAP = 23,
|
|
|
|
INET_PROT_DB = 24,
|
|
|
|
INET_PROT_VND_SUN_STAR_CMD = 25,
|
|
|
|
INET_PROT_TELNET = 27,
|
|
|
|
INET_PROT_VND_SUN_STAR_EXPAND = 28,
|
|
|
|
INET_PROT_VND_SUN_STAR_TDOC = 29,
|
|
|
|
INET_PROT_GENERIC = 30,
|
|
|
|
INET_PROT_SMB = 31,
|
2010-07-15 15:25:53 +02:00
|
|
|
INET_PROT_HID = 32,
|
Merge commit 'ooo/DEV300_m101' into intm101
The following builds for me:
basebmp, basegfx, comphelper, dtrans, i18npool, i18nutil, l10ntools, o3tl,
psprint_config, regexp, rsc, sax, sot, tools, ucbhelper, unotools, vcl
The rest still needs fixing ;-)
Conflicts:
canvas/prj/build.lst
canvas/source/cairo/cairo_textlayout.cxx
canvas/source/directx/dx_winstuff.hxx
canvas/source/tools/image.cxx
canvas/source/vcl/canvashelper.cxx
comphelper/inc/comphelper/documentconstants.hxx
comphelper/inc/comphelper/optionalvalue.hxx
comphelper/inc/comphelper/querydeep.hxx
comphelper/prj/build.lst
comphelper/qa/complex/makefile.mk
comphelper/qa/string/test_string_noadditional.cxx
comphelper/source/misc/componentmodule.cxx
comphelper/source/misc/mimeconfighelper.cxx
comphelper/source/misc/querydeep.cxx
comphelper/source/misc/uieventslogger.cxx
comphelper/source/property/TypeGeneration.cxx
comphelper/test/uno_iterators/uno_iterators.cxx
comphelper/util/makefile.mk
cppcanvas/source/mtfrenderer/implrenderer.cxx
dtrans/prj/build.lst
dtrans/source/generic/dtrans.cxx
dtrans/source/win32/dtobj/FmtFilter.cxx
i18npool/prj/build.lst
i18npool/source/localedata/data/localedata_others.map
i18npool/source/localedata/data/makefile.mk
i18npool/source/localedata/localedata.cxx
i18npool/source/localedata/saxparser.cxx
i18npool/source/registerservices/registerservices.cxx
i18npool/source/search/textsearch.cxx
l10ntools/inc/cfgmerge.hxx
l10ntools/inc/export.hxx
l10ntools/inc/gsicheck.hxx
l10ntools/inc/l10ntools/vosapp.hxx
l10ntools/inc/tagtest.hxx
l10ntools/inc/xmlparse.hxx
l10ntools/layout/layoutparse.cxx
l10ntools/layout/tralay.cxx
l10ntools/source/cfgmerge.cxx
l10ntools/source/export.cxx
l10ntools/source/export2.cxx
l10ntools/source/gsicheck.cxx
l10ntools/source/help/HelpLinker.cxx
l10ntools/source/lngex.cxx
l10ntools/source/lngmerge.cxx
l10ntools/source/merge.cxx
l10ntools/source/tagtest.cxx
l10ntools/source/xmlparse.cxx
padmin/source/fontentry.cxx
padmin/source/padialog.cxx
padmin/source/padialog.src
padmin/source/pamain.cxx
rsc/inc/rscarray.hxx
rsc/inc/rscclass.hxx
rsc/inc/rscclobj.hxx
rsc/inc/rsccont.hxx
rsc/inc/rscdb.hxx
rsc/inc/rscdef.hxx
rsc/inc/rscmgr.hxx
rsc/inc/rscrange.hxx
rsc/inc/rsctop.hxx
rsc/inc/vclrsc.hxx
rsc/source/parser/rscdb.cxx
rsc/source/parser/rscicpx.cxx
rsc/source/parser/rscinit.cxx
rsc/source/prj/start.cxx
rsc/source/res/rscarray.cxx
rsc/source/res/rscclass.cxx
rsc/source/res/rscclobj.cxx
rsc/source/res/rsccont.cxx
rsc/source/res/rscmgr.cxx
rsc/source/res/rscrange.cxx
rsc/source/res/rsctop.cxx
rsc/source/rsc/rsc.cxx
rsc/source/tools/rscdef.cxx
rsc/source/tools/rsctools.cxx
sax/source/expatwrap/sax_expat.cxx
sax/source/fastparser/facreg.cxx
sax/source/tools/fastserializer.cxx
sot/inc/sot/filelist.hxx
sot/inc/sot/object.hxx
sot/source/base/factory.cxx
sot/source/base/filelist.cxx
sot/source/sdstor/stg.cxx
sot/source/sdstor/stgcache.cxx
sot/source/sdstor/stgole.cxx
sot/source/sdstor/stgstrms.cxx
sot/source/sdstor/storage.cxx
sot/source/sdstor/ucbstorage.cxx
svl/inc/svl/cenumitm.hxx
svl/inc/svl/cintitem.hxx
svl/inc/svl/cntwall.hxx
svl/inc/svl/ctypeitm.hxx
svl/inc/svl/custritm.hxx
svl/inc/svl/dateitem.hxx
svl/inc/svl/filerec.hxx
svl/inc/svl/globalnameitem.hxx
svl/inc/svl/ilstitem.hxx
svl/inc/svl/imageitm.hxx
svl/inc/svl/intitem.hxx
svl/inc/svl/itempool.hxx
svl/inc/svl/itemset.hxx
svl/inc/svl/lckbitem.hxx
svl/inc/svl/poolitem.hxx
svl/inc/svl/ptitem.hxx
svl/inc/svl/rectitem.hxx
svl/inc/svl/sfontitm.hxx
svl/inc/svl/slstitm.hxx
svl/inc/svl/srchitem.hxx
svl/inc/svl/svarray.hxx
svl/inc/svl/svdde.hxx
svl/inc/svl/svstdarr.hxx
svl/inc/svl/szitem.hxx
svl/inc/svl/visitem.hxx
svl/inc/svl/zforlist.hxx
svl/inc/svl/zformat.hxx
svl/prj/build.lst
svl/qa/complex/ConfigItems/helper/ConfigItemTest.cxx
svl/qa/complex/ConfigItems/helper/makefile.mk
svl/qa/makefile.mk
svl/source/filepicker/pickerhelper.cxx
svl/source/filerec/filerec.cxx
svl/source/items/cenumitm.cxx
svl/source/items/cintitem.cxx
svl/source/items/cntwall.cxx
svl/source/items/ctypeitm.cxx
svl/source/items/custritm.cxx
svl/source/items/dateitem.cxx
svl/source/items/globalnameitem.cxx
svl/source/items/ilstitem.cxx
svl/source/items/imageitm.cxx
svl/source/items/intitem.cxx
svl/source/items/itempool.cxx
svl/source/items/itemprop.cxx
svl/source/items/itemset.cxx
svl/source/items/lckbitem.cxx
svl/source/items/poolio.cxx
svl/source/items/poolitem.cxx
svl/source/items/ptitem.cxx
svl/source/items/rectitem.cxx
svl/source/items/slstitm.cxx
svl/source/items/srchitem.cxx
svl/source/items/style.cxx
svl/source/items/szitem.cxx
svl/source/items/visitem.cxx
svl/source/items/whiter.cxx
svl/source/memtools/svarray.cxx
svl/source/misc/PasswordHelper.cxx
svl/source/misc/adrparse.cxx
svl/source/misc/lngmisc.cxx
svl/source/notify/brdcst.cxx
svl/source/notify/listener.cxx
svl/source/notify/listenerbase.cxx
svl/source/numbers/makefile.mk
svl/source/numbers/nbdll.cxx
svl/source/numbers/zforfind.cxx
svl/source/numbers/zforlist.cxx
svl/source/numbers/zformat.cxx
svl/source/numbers/zforscan.cxx
svl/source/passwordcontainer/passwordcontainer.cxx
svl/source/svdde/ddecli.cxx
svl/source/svdde/ddeimp.hxx
svl/source/svdde/ddemlos2.h
svl/source/svdde/ddesvr.cxx
svl/source/undo/undo.cxx
svl/source/uno/registerservices.cxx
svl/util/makefile.mk
svtools/bmpmaker/bmpsum.cxx
svtools/bmpmaker/g2g.cxx
svtools/bmpmaker/makefile.mk
svtools/inc/borderhelper.hxx
svtools/inc/svtools/accessiblefactory.hxx
svtools/inc/svtools/apearcfg.hxx
svtools/inc/svtools/brwbox.hxx
svtools/inc/svtools/ctrlbox.hxx
svtools/inc/svtools/ctrltool.hxx
svtools/inc/svtools/editbrowsebox.hxx
svtools/inc/svtools/ehdl.hxx
svtools/inc/svtools/embedhlp.hxx
svtools/inc/svtools/filter.hxx
svtools/inc/svtools/ivctrl.hxx
svtools/inc/svtools/parhtml.hxx
svtools/inc/svtools/printdlg.hxx
svtools/inc/svtools/rtftoken.h
svtools/inc/svtools/ruler.hxx
svtools/inc/svtools/svicnvw.hxx
svtools/inc/svtools/svlbitm.hxx
svtools/inc/svtools/svlbox.hxx
svtools/inc/svtools/svtreebx.hxx
svtools/inc/svtools/tabbar.hxx
svtools/inc/svtools/table/abstracttablecontrol.hxx
svtools/inc/svtools/taskbar.hxx
svtools/inc/svtools/textview.hxx
svtools/inc/svtools/valueset.hxx
svtools/source/brwbox/brwbox1.cxx
svtools/source/brwbox/brwbox2.cxx
svtools/source/brwbox/datwin.cxx
svtools/source/brwbox/datwin.hxx
svtools/source/brwbox/makefile.mk
svtools/source/config/apearcfg.cxx
svtools/source/config/htmlcfg.cxx
svtools/source/config/menuoptions.cxx
svtools/source/config/miscopt.cxx
svtools/source/contnr/cont_pch.cxx
svtools/source/contnr/ctrdll.cxx
svtools/source/contnr/fileview.cxx
svtools/source/contnr/imivctl1.cxx
svtools/source/contnr/ivctrl.cxx
svtools/source/contnr/makefile.mk
svtools/source/contnr/svcontnr.src
svtools/source/contnr/svicnvw.cxx
svtools/source/contnr/svimpbox.cxx
svtools/source/contnr/svimpicn.cxx
svtools/source/contnr/svlbitm.cxx
svtools/source/contnr/svtreebx.cxx
svtools/source/contnr/templwin.cxx
svtools/source/contnr/templwin.hxx
svtools/source/control/asynclink.cxx
svtools/source/control/ctrlbox.cxx
svtools/source/control/ctrldll.cxx
svtools/source/control/ctrltool.cxx
svtools/source/control/filectrl.cxx
svtools/source/control/filectrl.src
svtools/source/control/headbar.cxx
svtools/source/control/inettbc.cxx
svtools/source/control/makefile.mk
svtools/source/control/prgsbar.cxx
svtools/source/control/roadmap.cxx
svtools/source/control/ruler.cxx
svtools/source/control/scriptedtext.cxx
svtools/source/control/stdmenu.cxx
svtools/source/control/tabbar.cxx
svtools/source/control/taskbar.cxx
svtools/source/control/taskbox.cxx
svtools/source/control/taskmisc.cxx
svtools/source/control/taskstat.cxx
svtools/source/control/valueacc.cxx
svtools/source/control/valueset.cxx
svtools/source/dialogs/addresstemplate.cxx
svtools/source/dialogs/addresstemplate.src
svtools/source/dialogs/colrdlg.src
svtools/source/dialogs/filedlg2.cxx
svtools/source/dialogs/filedlg2.hxx
svtools/source/dialogs/makefile.mk
svtools/source/dialogs/printdlg.cxx
svtools/source/dialogs/printdlg.src
svtools/source/dialogs/propctrl.cxx
svtools/source/dialogs/propctrl.hxx
svtools/source/dialogs/property.cxx
svtools/source/edit/makefile.mk
svtools/source/edit/sychconv.cxx
svtools/source/edit/syntaxhighlight.cxx
svtools/source/edit/textdoc.cxx
svtools/source/edit/texteng.cxx
svtools/source/edit/textundo.cxx
svtools/source/edit/textview.cxx
svtools/source/filter.vcl/filter/SvFilterOptionsDialog.cxx
svtools/source/filter.vcl/filter/dlgejpg.cxx
svtools/source/filter.vcl/filter/dlgejpg.hxx
svtools/source/filter.vcl/filter/dlgejpg.src
svtools/source/filter.vcl/filter/dlgepng.cxx
svtools/source/filter.vcl/filter/dlgepng.hxx
svtools/source/filter.vcl/filter/dlgepng.src
svtools/source/filter.vcl/filter/dlgexpor.cxx
svtools/source/filter.vcl/filter/dlgexpor.hxx
svtools/source/filter.vcl/filter/dlgexpor.src
svtools/source/filter.vcl/filter/filter2.cxx
svtools/source/filter.vcl/filter/makefile.mk
svtools/source/filter.vcl/filter/sgfbram.cxx
svtools/source/filter.vcl/filter/sgvmain.cxx
svtools/source/filter.vcl/filter/sgvspln.cxx
svtools/source/filter.vcl/filter/strings.src
svtools/source/filter.vcl/jpeg/makefile.mk
svtools/source/filter.vcl/wmf/emfwr.cxx
svtools/source/filter.vcl/wmf/emfwr.hxx
svtools/source/filter.vcl/wmf/enhwmf.cxx
svtools/source/filter.vcl/wmf/winmtf.hxx
svtools/source/filter.vcl/wmf/wmfwr.cxx
svtools/source/filter.vcl/wmf/wmfwr.hxx
svtools/source/graphic/grfcache.cxx
svtools/source/graphic/grfcache.hxx
svtools/source/graphic/grfmgr.cxx
svtools/source/graphic/makefile.mk
svtools/source/inc/accessibletableimp.hxx
svtools/source/inc/svimpbox.hxx
svtools/source/java/patchjavaerror.src
svtools/source/misc/ehdl.cxx
svtools/source/misc/errtxt.src
svtools/source/misc/helpagentwindow.cxx
svtools/source/misc/imagemgr.cxx
svtools/source/misc/imagemgr.src
svtools/source/misc/imageresourceaccess.cxx
svtools/source/misc/imap.cxx
svtools/source/misc/langtab.src
svtools/source/misc/makefile.mk
svtools/source/misc/svtdata.cxx
svtools/source/misc/templatefoldercache.cxx
svtools/source/misc/transfer2.cxx
svtools/source/misc/undo.src
svtools/source/plugapp/commtest.cxx
svtools/source/plugapp/commtest.src
svtools/source/plugapp/makefile.mk
svtools/source/plugapp/testtool.src
svtools/source/productregistration/productregistration.cxx
svtools/source/svhtml/htmlkywd.cxx
svtools/source/svhtml/parhtml.cxx
svtools/source/svrtf/rtfkey2.cxx
svtools/source/svrtf/rtfkeywd.cxx
svtools/source/table/defaultinputhandler.cxx
svtools/source/table/makefile.mk
svtools/source/table/tablecontrol.cxx
svtools/source/table/tablecontrol_impl.cxx
svtools/source/table/tablecontrol_impl.hxx
svtools/source/table/tabledatawindow.cxx
svtools/source/table/tablegeometry.cxx
svtools/source/table/tablegeometry.hxx
svtools/source/toolpanel/makefile.mk
svtools/source/toolpanel/toolpaneldrawer.cxx
svtools/source/uno/addrtempuno.cxx
svtools/source/uno/miscservices.cxx
svtools/source/uno/svtxgridcontrol.cxx
svtools/source/uno/svtxgridcontrol.hxx
svtools/source/uno/toolboxcontroller.cxx
svtools/source/uno/treecontrolpeer.cxx
svtools/source/uno/unocontroltablemodel.cxx
svtools/source/uno/unocontroltablemodel.hxx
svtools/source/uno/unoimap.cxx
svtools/source/urlobj/inetimg.cxx
svtools/util/makefile.mk
svtools/workben/browser.cxx
svtools/workben/cui/makefile.mk
svtools/workben/makefile.mk
svtools/workben/stest.cxx
svtools/workben/toolpanel/makefile.mk
svtools/workben/urange.cxx
toolkit/inc/toolkit/awt/vclxdevice.hxx
toolkit/inc/toolkit/awt/vclxgraphics.hxx
toolkit/inc/toolkit/awt/vclxwindows.hxx
toolkit/inc/toolkit/controls/dialogcontrol.hxx
toolkit/inc/toolkit/helper/property.hxx
toolkit/inc/toolkit/helper/servicenames.hxx
toolkit/inc/toolkit/helper/throbberimpl.hxx
toolkit/qa/complex/toolkit/accessibility/_XAccessibleComponent.java
toolkit/source/awt/asynccallback.cxx
toolkit/source/awt/vclxgraphics.cxx
toolkit/source/awt/vclxtoolkit.cxx
toolkit/source/awt/vclxwindow.cxx
toolkit/source/awt/xsimpleanimation.cxx
toolkit/source/awt/xthrobber.cxx
toolkit/source/controls/dialogcontrol.cxx
toolkit/source/controls/grid/defaultgridcolumnmodel.cxx
toolkit/source/controls/grid/defaultgriddatamodel.cxx
toolkit/source/controls/grid/gridcontrol.cxx
toolkit/source/controls/grid/initguard.hxx
toolkit/source/controls/unocontrol.cxx
toolkit/source/controls/unocontrolcontainer.cxx
toolkit/source/controls/unocontrols.cxx
toolkit/source/helper/listenermultiplexer.cxx
toolkit/source/helper/property.cxx
toolkit/source/helper/registerservices.cxx
toolkit/source/helper/servicenames.cxx
toolkit/source/helper/throbberimpl.cxx
toolkit/source/helper/tkresmgr.cxx
tools/StaticLibrary_ooopathutils.mk
tools/bootstrp/addexes/makefile.mk
tools/bootstrp/addexes2/makefile.mk
tools/bootstrp/addexes2/mkfilt.cxx
tools/bootstrp/command.cxx
tools/bootstrp/cppdep.cxx
tools/bootstrp/iserver.cxx
tools/bootstrp/makefile.mk
tools/bootstrp/mkcreate.cxx
tools/bootstrp/prj.cxx
tools/bootstrp/rscdep.cxx
tools/bootstrp/sstring.cxx
tools/inc/bootstrp/command.hxx
tools/inc/bootstrp/mkcreate.hxx
tools/inc/bootstrp/prj.hxx
tools/inc/bootstrp/sstring.hxx
tools/inc/tools/agapi.hxx
tools/inc/tools/agitem.hxx
tools/inc/tools/chapi.hxx
tools/inc/tools/download.hxx
tools/inc/tools/eacopier.hxx
tools/inc/tools/fract.hxx
tools/inc/tools/fsys.hxx
tools/inc/tools/geninfo.hxx
tools/inc/tools/globname.hxx
tools/inc/tools/inetmime.hxx
tools/inc/tools/multisel.hxx
tools/inc/tools/poly.hxx
tools/inc/tools/postsys.h
tools/inc/tools/postwin.h
tools/inc/tools/presys.h
tools/inc/tools/prewin.h
tools/inc/tools/pstm.hxx
tools/inc/tools/ref.hxx
tools/inc/tools/simplerm.hxx
tools/inc/tools/solar.h
tools/inc/tools/table.hxx
tools/inc/tools/urlkeys.hxx
tools/inc/tools/urlobj.hxx
tools/prj/build.lst
tools/prj/d.lst
tools/qa/makefile.mk
tools/source/communi/geninfo.cxx
tools/source/debug/debug.cxx
tools/source/fsys/dirent.cxx
tools/source/fsys/tdir.cxx
tools/source/fsys/unx.cxx
tools/source/fsys/urlobj.cxx
tools/source/generic/color.cxx
tools/source/generic/config.cxx
tools/source/generic/fract.cxx
tools/source/inet/inetmime.cxx
tools/source/memtools/multisel.cxx
tools/source/memtools/table.cxx
tools/source/rc/resmgr.cxx
tools/source/ref/globname.cxx
tools/source/ref/pstm.cxx
tools/source/solar/solar.c
tools/source/stream/strmos2.cxx
tools/source/stream/strmunx.cxx
tools/source/stream/strmwnt.cxx
tools/source/string/makefile.mk
tools/source/testtoolloader/testtoolloader.cxx
tools/test/makefile.mk
tools/util/makefile.mk
tools/win/inc/dll.hxx
tools/win/inc/parser.hxx
tools/win/inc/shellex.h
tools/win/inc/shutil.h
tools/win/inc/toolsdll.hxx
tools/win/inc/winshell.hxx
tools/workben/makefile.mk
ucbhelper/source/client/proxydecider.cxx
ucbhelper/workben/ucbexplorer/ucbexplorer.hrc
unotools/inc/unotools/unotunnelhelper.hxx
unotools/source/config/fltrcfg.cxx
unotools/source/config/lingucfg.cxx
unotools/source/config/misccfg.cxx
unotools/source/config/pathoptions.cxx
unotools/source/config/searchopt.cxx
unotools/source/i18n/localedatawrapper.cxx
unotools/source/ucbhelper/localfilehelper.cxx
unotools/source/ucbhelper/ucbhelper.cxx
unotools/source/ucbhelper/xtempfile.cxx
vcl/aqua/inc/salbmp.h
vcl/aqua/inc/salgdi.h
vcl/aqua/inc/salinst.h
vcl/aqua/source/app/salinst.cxx
vcl/aqua/source/gdi/aquaprintaccessoryview.mm
vcl/aqua/source/gdi/salgdi.cxx
vcl/aqua/source/gdi/salprn.cxx
vcl/aqua/source/window/salframeview.mm
vcl/aqua/source/window/salobj.cxx
vcl/inc/vcl/bitmap.hxx
vcl/inc/vcl/brdwin.hxx
vcl/inc/vcl/button.hxx
vcl/inc/vcl/cmdevt.hxx
vcl/inc/vcl/cvtgrf.hxx
vcl/inc/vcl/dialog.hxx
vcl/inc/vcl/dockwin.hxx
vcl/inc/vcl/event.hxx
vcl/inc/vcl/fixed.hxx
vcl/inc/vcl/fldunit.hxx
vcl/inc/vcl/floatwin.hxx
vcl/inc/vcl/gdimtf.hxx
vcl/inc/vcl/glyphcache.hxx
vcl/inc/vcl/graphite_adaptors.hxx
vcl/inc/vcl/graphite_features.hxx
vcl/inc/vcl/graphite_layout.hxx
vcl/inc/vcl/ilstbox.hxx
vcl/inc/vcl/image.h
vcl/inc/vcl/imgctrl.hxx
vcl/inc/vcl/impbmpconv.hxx
vcl/inc/vcl/impprn.hxx
vcl/inc/vcl/jobset.h
vcl/inc/vcl/keycodes.hxx
vcl/inc/vcl/lstbox.hxx
vcl/inc/vcl/mapunit.hxx
vcl/inc/vcl/menu.hxx
vcl/inc/vcl/msgbox.hxx
vcl/inc/vcl/outdev.hxx
vcl/inc/vcl/prndlg.hxx
vcl/inc/vcl/salatype.hxx
vcl/inc/vcl/salbmp.hxx
vcl/inc/vcl/salgdi.hxx
vcl/inc/vcl/salinst.hxx
vcl/inc/vcl/seleng.hxx
vcl/inc/vcl/settings.hxx
vcl/inc/vcl/smartid.hxx
vcl/inc/vcl/status.hxx
vcl/inc/vcl/strhelper.hxx
vcl/inc/vcl/svapp.hxx
vcl/inc/vcl/svdata.hxx
vcl/inc/vcl/syschild.hxx
vcl/inc/vcl/sysdata.hxx
vcl/inc/vcl/taskpanelist.hxx
vcl/inc/vcl/toolbox.hxx
vcl/inc/vcl/vclevent.hxx
vcl/inc/vcl/windata.hxx
vcl/inc/vcl/window.hxx
vcl/inc/vcl/wintypes.hxx
vcl/os2/source/app/salinst.cxx
vcl/os2/source/gdi/salgdi.cxx
vcl/os2/source/window/salmenu.cxx
vcl/os2/source/window/salobj.cxx
vcl/prj/build.lst
vcl/source/app/dbggui.cxx
vcl/source/app/help.cxx
vcl/source/app/idlemgr.cxx
vcl/source/app/settings.cxx
vcl/source/app/svapp.cxx
vcl/source/app/svdata.cxx
vcl/source/app/svmain.cxx
vcl/source/app/svmainhook.cxx
vcl/source/app/unohelp.cxx
vcl/source/app/vclevent.cxx
vcl/source/control/button.cxx
vcl/source/control/combobox.cxx
vcl/source/control/edit.cxx
vcl/source/control/field.cxx
vcl/source/control/fixed.cxx
vcl/source/control/ilstbox.cxx
vcl/source/control/imgctrl.cxx
vcl/source/control/makefile.mk
vcl/source/control/tabctrl.cxx
vcl/source/gdi/bitmap.cxx
vcl/source/gdi/bitmap2.cxx
vcl/source/gdi/bitmap4.cxx
vcl/source/gdi/bmpconv.cxx
vcl/source/gdi/cvtsvm.cxx
vcl/source/gdi/font.cxx
vcl/source/gdi/gdimtf.cxx
vcl/source/gdi/image.cxx
vcl/source/gdi/impimage.cxx
vcl/source/gdi/jobset.cxx
vcl/source/gdi/makefile.mk
vcl/source/gdi/metaact.cxx
vcl/source/gdi/outdev.cxx
vcl/source/gdi/outdev3.cxx
vcl/source/gdi/outdev4.cxx
vcl/source/gdi/outdevnative.cxx
vcl/source/gdi/pdfwriter.cxx
vcl/source/gdi/pdfwriter_impl.cxx
vcl/source/gdi/print3.cxx
vcl/source/gdi/salmisc.cxx
vcl/source/glyphs/gcach_ftyp.cxx
vcl/source/glyphs/gcach_ftyp.hxx
vcl/source/glyphs/glyphcache.cxx
vcl/source/glyphs/graphite_cache.cxx
vcl/source/glyphs/graphite_layout.cxx
vcl/source/glyphs/graphite_textsrc.hxx
vcl/source/helper/canvasbitmap.cxx
vcl/source/helper/smartid.cxx
vcl/source/helper/xconnection.cxx
vcl/source/src/btntext.src
vcl/source/src/images.src
vcl/source/src/print.src
vcl/source/window/accel.cxx
vcl/source/window/accmgr.cxx
vcl/source/window/brdwin.cxx
vcl/source/window/btndlg.cxx
vcl/source/window/dlgctrl.cxx
vcl/source/window/javachild.cxx
vcl/source/window/menu.cxx
vcl/source/window/msgbox.cxx
vcl/source/window/printdlg.cxx
vcl/source/window/status.cxx
vcl/source/window/syschild.cxx
vcl/source/window/toolbox.cxx
vcl/source/window/toolbox2.cxx
vcl/source/window/window.cxx
vcl/source/window/window2.cxx
vcl/source/window/wrkwin.cxx
vcl/unx/gtk/app/gtkdata.cxx
vcl/unx/gtk/app/gtkinst.cxx
vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
vcl/unx/gtk/window/gtkframe.cxx
vcl/unx/gtk/window/gtkobject.cxx
vcl/unx/headless/svpbmp.hxx
vcl/unx/headless/svpgdi.cxx
vcl/unx/headless/svpgdi.hxx
vcl/unx/headless/svpinst.cxx
vcl/unx/headless/svpinst.hxx
vcl/unx/headless/svpprn.cxx
vcl/unx/headless/svpprn.hxx
vcl/unx/headless/svppspgraphics.cxx
vcl/unx/headless/svppspgraphics.hxx
vcl/unx/headless/svptext.cxx
vcl/unx/inc/dtint.hxx
vcl/unx/inc/plugins/gtk/gtkdata.hxx
vcl/unx/inc/pspgraphics.h
vcl/unx/inc/salbmp.h
vcl/unx/inc/saldata.hxx
vcl/unx/inc/saldisp.hxx
vcl/unx/inc/salgdi.h
vcl/unx/inc/salinst.h
vcl/unx/inc/xfont.hxx
vcl/unx/kde/kdedata.cxx
vcl/unx/kde4/KDESalGraphics.cxx
vcl/unx/source/app/keysymnames.cxx
vcl/unx/source/app/saldata.cxx
vcl/unx/source/app/saldisp.cxx
vcl/unx/source/app/salinst.cxx
vcl/unx/source/app/wmadaptor.cxx
vcl/unx/source/dtrans/X11_selection.cxx
vcl/unx/source/dtrans/X11_service.cxx
vcl/unx/source/gdi/makefile.mk
vcl/unx/source/gdi/pspgraphics.cxx
vcl/unx/source/gdi/salgdi.cxx
vcl/unx/source/gdi/salgdi3.cxx
vcl/unx/source/gdi/salprnpsp.cxx
vcl/unx/source/gdi/xfont.cxx
vcl/unx/source/gdi/xlfd_attr.cxx
vcl/unx/source/gdi/xlfd_attr.hxx
vcl/unx/source/gdi/xlfd_extd.cxx
vcl/unx/source/gdi/xlfd_extd.hxx
vcl/unx/source/gdi/xlfd_smpl.cxx
vcl/unx/source/gdi/xlfd_smpl.hxx
vcl/unx/source/printer/ppdparser.cxx
vcl/unx/source/printer/printerinfomanager.cxx
vcl/unx/source/window/salframe.cxx
vcl/unx/source/window/salmenu.cxx
vcl/unx/source/window/salobj.cxx
vcl/util/makefile2.pmk
vcl/win/inc/salbmp.h
vcl/win/inc/saldata.hxx
vcl/win/inc/salgdi.h
vcl/win/inc/salinst.h
vcl/win/source/app/saldata.cxx
vcl/win/source/app/salinst.cxx
vcl/win/source/gdi/salgdi.cxx
vcl/win/source/gdi/salgdi3.cxx
vcl/win/source/gdi/salprn.cxx
vcl/win/source/gdi/winlayout.cxx
vcl/win/source/window/salframe.cxx
vcl/win/source/window/salobj.cxx
vcl/workben/outdevgrind.cxx
vos/inc/vos/execabl.hxx
vos/inc/vos/macros.hxx
vos/inc/vos/pipe.hxx
vos/inc/vos/process.hxx
vos/inc/vos/refernce.hxx
vos/inc/vos/signal.hxx
vos/inc/vos/socket.hxx
vos/inc/vos/stream.hxx
vos/inc/vos/thread.hxx
vos/source/pipe.cxx
vos/source/process.cxx
vos/source/signal.cxx
vos/source/thread.cxx
vos/source/timer.cxx
2011-03-11 14:24:23 +01:00
|
|
|
INET_PROT_SFTP = 33,
|
2012-10-16 12:53:31 +02:00
|
|
|
INET_PROT_CMIS = 34,
|
2011-09-29 22:46:39 +02:00
|
|
|
INET_PROT_END = 35
|
2007-04-11 19:21:17 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class TOOLS_DLLPUBLIC INetURLObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
// Get- and Set-Methods:
|
|
|
|
|
|
|
|
/** The way input strings that represent (parts of) URIs are interpreted
|
|
|
|
in set-methods.
|
|
|
|
|
2013-07-29 08:26:29 +02:00
|
|
|
@descr UTF-32 characters in the range 0x80--0x10FFFF are replaced by
|
|
|
|
sequences of escape sequences, representing the UTF-8 coded characters.
|
2007-04-11 19:21:17 +00:00
|
|
|
|
|
|
|
@descr Along with an EncodeMechanism parameter, the set-methods all
|
|
|
|
take an rtl_TextEncoding parameter, which is ignored unless the
|
|
|
|
EncodeMechanism is WAS_ENCODED.
|
|
|
|
*/
|
|
|
|
enum EncodeMechanism
|
|
|
|
{
|
|
|
|
/** All escape sequences that are already present are ignored, and are
|
|
|
|
interpreted as literal sequences of three characters.
|
|
|
|
*/
|
|
|
|
ENCODE_ALL,
|
|
|
|
|
|
|
|
/** Sequences of escape sequences, that represent characters from the
|
|
|
|
specified character set and that can be converted to UTF-32
|
|
|
|
characters, are first decoded. If they have to be encoded, they
|
|
|
|
are converted to UTF-8 characters and are than translated into
|
|
|
|
(sequences of) escape sequences. Other escape sequences are
|
|
|
|
copied verbatim (but using upper case hex digits).
|
|
|
|
*/
|
|
|
|
WAS_ENCODED,
|
|
|
|
|
|
|
|
/** All escape sequences that are already present are copied verbatim
|
|
|
|
(but using upper case hex digits).
|
|
|
|
*/
|
|
|
|
NOT_CANONIC
|
|
|
|
};
|
|
|
|
|
|
|
|
/** The way strings that represent (parts of) URIs are returned from get-
|
|
|
|
methods.
|
|
|
|
|
|
|
|
@descr Along with a DecodeMechanism parameter, the get-methods all
|
|
|
|
take an rtl_TextEncoding parameter, which is ignored unless the
|
|
|
|
DecodeMechanism is DECODE_WITH_CHARSET or DECODE_UNAMBIGUOUS.
|
|
|
|
*/
|
|
|
|
enum DecodeMechanism
|
|
|
|
{
|
|
|
|
/** The (part of the) URI is returned unchanged. Since URIs are
|
|
|
|
written using a subset of US-ASCII, the returned string is
|
|
|
|
guaranteed to contain only US-ASCII characters.
|
|
|
|
*/
|
|
|
|
NO_DECODE,
|
|
|
|
|
|
|
|
/** All sequences of escape sequences that represent UTF-8 coded
|
|
|
|
UTF-32 characters with a numerical value greater than 0x7F, are
|
|
|
|
replaced by the respective UTF-16 characters. All other escape
|
|
|
|
sequences are not decoded.
|
|
|
|
*/
|
|
|
|
DECODE_TO_IURI,
|
|
|
|
|
|
|
|
/** All (sequences of) escape sequences that represent characters from
|
|
|
|
the specified character set, and that can be converted to UTF-32,
|
|
|
|
are replaced by the respective UTF-16 characters. All other
|
|
|
|
escape sequences are not decoded.
|
|
|
|
*/
|
|
|
|
DECODE_WITH_CHARSET,
|
|
|
|
|
|
|
|
/** All (sequences of) escape sequences that represent characters from
|
|
|
|
the specified character set, that can be converted to UTF-32, and
|
|
|
|
that (in the case of ASCII characters) can safely be decoded
|
|
|
|
without altering the meaning of the (part of the) URI, are
|
|
|
|
replaced by the respective UTF-16 characters. All other escape
|
|
|
|
sequences are not decoded.
|
|
|
|
*/
|
|
|
|
DECODE_UNAMBIGUOUS
|
|
|
|
};
|
|
|
|
|
|
|
|
// General Structure:
|
|
|
|
|
|
|
|
inline INetURLObject():
|
|
|
|
m_eScheme(INET_PROT_NOT_VALID), m_eSmartScheme(INET_PROT_HTTP) {}
|
|
|
|
|
|
|
|
inline bool HasError() const { return m_eScheme == INET_PROT_NOT_VALID; }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString GetMainURL(DecodeMechanism eMechanism,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const
|
|
|
|
{ return decode(m_aAbsURIRef, getEscapePrefix(), eMechanism, eCharset); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString GetURLNoPass(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
const;
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString GetURLNoMark(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
const;
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString
|
2007-04-11 19:21:17 +00:00
|
|
|
getAbbreviated(com::sun::star::uno::Reference<
|
|
|
|
com::sun::star::util::XStringWidth > const &
|
|
|
|
rStringWidth,
|
|
|
|
sal_Int32 nWidth,
|
|
|
|
DecodeMechanism eMechanism = DECODE_TO_IURI,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
const;
|
|
|
|
|
|
|
|
bool operator ==(INetURLObject const & rObject) const;
|
|
|
|
|
|
|
|
inline bool operator !=(INetURLObject const & rObject) const
|
|
|
|
{ return !(*this == rObject); }
|
|
|
|
|
|
|
|
bool operator <(INetURLObject const & rObject) const;
|
|
|
|
|
|
|
|
inline bool operator >(INetURLObject const & rObject) const
|
|
|
|
{ return rObject < *this; }
|
|
|
|
|
|
|
|
// Strict Parsing:
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline INetURLObject(OUString const & rTheAbsURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool SetURL(OUString const & rTheAbsURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
bool ConcatData(INetProtocol eTheScheme, OUString const & rTheUser,
|
|
|
|
OUString const & rThePassword,
|
|
|
|
OUString const & rTheHost, sal_uInt32 nThePort,
|
|
|
|
OUString const & rThePath,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
// Smart Parsing:
|
|
|
|
|
|
|
|
/** The supported notations for file system paths.
|
|
|
|
*/
|
|
|
|
enum FSysStyle
|
|
|
|
{
|
|
|
|
/** VOS notation (e.g., "//server/dir/file").
|
|
|
|
*/
|
|
|
|
FSYS_VOS = 0x1,
|
|
|
|
|
|
|
|
/** Unix notation (e.g., "/dir/file").
|
|
|
|
*/
|
|
|
|
FSYS_UNX = 0x2,
|
|
|
|
|
|
|
|
/** DOS notation (e.g., "a:\dir\file" and "\\server\dir\file").
|
|
|
|
*/
|
|
|
|
FSYS_DOS = 0x4,
|
|
|
|
|
|
|
|
/** Mac notation (e.g., "dir:file").
|
|
|
|
*/
|
|
|
|
FSYS_MAC = 0x8,
|
|
|
|
|
|
|
|
/** Detect the used notation.
|
|
|
|
|
|
|
|
@descr For the following descriptions, please note that
|
|
|
|
whereas FSYS_DEFAULT includes all style bits, combinations of only
|
|
|
|
a few style bits are also possible, and are also described.
|
|
|
|
|
|
|
|
@descr When used to translate a file system path to a file URL,
|
|
|
|
the subset of the following productions for which the appropriate
|
|
|
|
style bit is set are checked in order (using the conventions of
|
|
|
|
RFC 2234, RFC 2396, and RFC 2732; UCS4 stands for any UCS4
|
|
|
|
character):
|
|
|
|
|
|
|
|
Production T1 (VOS local; FSYS_VOS only):
|
|
|
|
"//." ["/" *UCS4]
|
|
|
|
becomes
|
|
|
|
"file:///" *UCS4
|
|
|
|
|
|
|
|
Production T2 (VOS host; FSYS_VOS only):
|
|
|
|
"//" [host] ["/" *UCS4]
|
|
|
|
becomes
|
|
|
|
"file://" host "/" *UCS4
|
|
|
|
|
|
|
|
Production T3 (UNC; FSYS_DOS only):
|
|
|
|
"\\" [host] ["\" *UCS4]
|
|
|
|
becomes
|
|
|
|
"file://" host "/" *UCS4
|
|
|
|
replacing "\" by "/" within <*UCS4>
|
|
|
|
|
|
|
|
Production T4 (Unix-like DOS; FSYS_DOS only):
|
|
|
|
ALPHA ":" ["/" *UCS4]
|
|
|
|
becomes
|
|
|
|
"file:///" ALPHA ":/" *UCS4
|
|
|
|
replacing "\" by "/" within <*UCS4>
|
|
|
|
|
|
|
|
Production T5 (DOS; FSYS_DOS only):
|
|
|
|
ALPHA ":" ["\" *UCS4]
|
|
|
|
becomes
|
|
|
|
"file:///" ALPHA ":/" *UCS4
|
|
|
|
replacing "\" by "/" within <*UCS4>
|
|
|
|
|
|
|
|
Production T6 (any):
|
|
|
|
*UCS4
|
|
|
|
becomes
|
|
|
|
"file:///" *UCS4
|
|
|
|
replacing the delimiter by "/" within <*UCS4>. The delimiter is
|
|
|
|
that character from the set { "/", "\", ":" } which appears most
|
|
|
|
often in <*UCS4> (if FSYS_UNX is not among the style bits, "/"
|
|
|
|
is removed from the set; if FSYS_DOS is not among the style
|
|
|
|
bits, "\" is removed from the set; if FSYS_MAC is not among the
|
|
|
|
style bits, ":" is removed from the set). If two or more
|
|
|
|
characters appear the same number of times, the character
|
|
|
|
mentioned first in that set is chosen. If the first character
|
|
|
|
of <*UCS4> is the delimiter, that character is not copied.
|
|
|
|
|
|
|
|
@descr When used to translate a file URL to a file system path,
|
|
|
|
the following productions are checked in order (using the
|
|
|
|
conventions of RFC 2234, RFC 2396, and RFC 2732):
|
|
|
|
|
|
|
|
Production F1 (VOS; FSYS_VOS):
|
|
|
|
"file://" host "/" fpath ["#" fragment]
|
|
|
|
becomes
|
|
|
|
"//" host "/" fpath
|
|
|
|
|
|
|
|
Production F2 (DOS; FSYS_DOS):
|
|
|
|
"file:///" ALPHA ":" ["/" fpath] ["#" fragment]
|
|
|
|
becomes
|
|
|
|
ALPHA ":" ["\" fpath]
|
|
|
|
replacing "/" by "\" in <fpath>
|
|
|
|
|
|
|
|
Production F3 (Unix; FSYS_UNX):
|
|
|
|
"file:///" fpath ["#" fragment]
|
|
|
|
becomes
|
|
|
|
"/" fpath
|
|
|
|
*/
|
|
|
|
FSYS_DETECT = FSYS_VOS | FSYS_UNX | FSYS_DOS
|
|
|
|
};
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline INetURLObject(OUString const & rTheAbsURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
INetProtocol eTheSmartScheme,
|
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8,
|
|
|
|
FSysStyle eStyle = FSYS_DETECT);
|
|
|
|
|
|
|
|
inline void SetSmartProtocol(INetProtocol eTheSmartScheme)
|
|
|
|
{ m_eSmartScheme = eTheSmartScheme; }
|
|
|
|
|
|
|
|
inline bool
|
2013-04-07 12:06:47 +02:00
|
|
|
SetSmartURL(OUString const & rTheAbsURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8,
|
|
|
|
FSysStyle eStyle = FSYS_DETECT);
|
|
|
|
|
|
|
|
inline INetURLObject
|
2013-04-07 12:06:47 +02:00
|
|
|
smartRel2Abs(OUString const & rTheRelURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
bool & rWasAbsolute,
|
|
|
|
bool bIgnoreFragment = false,
|
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8,
|
|
|
|
bool bRelativeNonURIs = false,
|
|
|
|
FSysStyle eStyle = FSYS_DETECT) const;
|
|
|
|
|
|
|
|
// Relative URLs:
|
|
|
|
|
|
|
|
inline bool
|
2013-04-07 12:06:47 +02:00
|
|
|
GetNewAbsURL(OUString const & rTheRelURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
INetURLObject * pTheAbsURIRef,
|
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8,
|
|
|
|
FSysStyle eStyle = FSYS_DETECT, bool bIgnoreFragment = false)
|
|
|
|
const;
|
|
|
|
|
|
|
|
/** @descr If rTheRelURIRef cannot be converted to an absolute URL
|
|
|
|
(because of syntactic reasons), either rTheRelURIRef or an empty
|
|
|
|
string is returned: If all of the parameters eEncodeMechanism,
|
|
|
|
eDecodeMechanism and eCharset have their respective default values,
|
|
|
|
then rTheRelURIRef is returned unmodified; otherwise, an empty string
|
|
|
|
is returned.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
static OUString
|
|
|
|
GetAbsURL(OUString const & rTheBaseURIRef,
|
|
|
|
OUString const & rTheRelURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
bool bIgnoreFragment = false,
|
|
|
|
EncodeMechanism eEncodeMechanism = WAS_ENCODED,
|
|
|
|
DecodeMechanism eDecodeMechanism = DECODE_TO_IURI,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8,
|
|
|
|
FSysStyle eStyle = FSYS_DETECT);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
static inline OUString
|
|
|
|
GetRelURL(OUString const & rTheBaseURIRef,
|
|
|
|
OUString const & rTheAbsURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eEncodeMechanism = WAS_ENCODED,
|
|
|
|
DecodeMechanism eDecodeMechanism = DECODE_TO_IURI,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8,
|
|
|
|
FSysStyle eStyle = FSYS_DETECT);
|
|
|
|
|
|
|
|
// External URLs:
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString getExternalURL(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const;
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
static inline bool translateToExternal(OUString const & rTheIntURIRef,
|
|
|
|
OUString & rTheExtURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
DecodeMechanism eDecodeMechanism
|
|
|
|
= DECODE_TO_IURI,
|
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
static inline bool translateToInternal(OUString const & rTheExtURIRef,
|
|
|
|
OUString & rTheIntURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
DecodeMechanism eDecodeMechanism
|
|
|
|
= DECODE_TO_IURI,
|
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
// Scheme:
|
|
|
|
|
|
|
|
struct SchemeInfo;
|
|
|
|
|
|
|
|
inline INetProtocol GetProtocol() const { return m_eScheme; }
|
|
|
|
|
|
|
|
/** Return the URL 'prefix' for a given scheme.
|
|
|
|
|
|
|
|
@param eTheScheme One of the supported URL schemes.
|
|
|
|
|
|
|
|
@return The 'prefix' of URLs of the given scheme.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
static OUString GetScheme(INetProtocol eTheScheme);
|
2007-04-11 19:21:17 +00:00
|
|
|
|
2013-04-30 20:13:30 +02:00
|
|
|
/** Return the a human-readable name for a given scheme.
|
|
|
|
|
|
|
|
@param eTheScheme One of the supported URL schemes.
|
|
|
|
|
|
|
|
@return The protocol name of URLs of the given scheme.
|
|
|
|
*/
|
|
|
|
static OUString GetSchemeName(INetProtocol eTheScheme);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
static INetProtocol CompareProtocolScheme(OUString const &
|
2007-04-11 19:21:17 +00:00
|
|
|
rTheAbsURIRef);
|
|
|
|
|
|
|
|
// User Info:
|
|
|
|
|
|
|
|
inline bool HasUserData() const { return m_aUser.isPresent(); }
|
|
|
|
|
|
|
|
inline bool IsEmptyUser() const
|
|
|
|
{ return m_aUser.isPresent() && m_aUser.isEmpty(); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString GetUser(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const
|
|
|
|
{ return decode(m_aUser, getEscapePrefix(), eMechanism, eCharset); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString GetPass(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const
|
|
|
|
{ return decode(m_aAuth, getEscapePrefix(), eMechanism, eCharset); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool SetUser(OUString const & rTheUser,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
{ return setUser(rTheUser, false, eMechanism, eCharset); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool SetPass(OUString const & rThePassword,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool SetUserAndPass(OUString const & rTheUser,
|
|
|
|
OUString const & rThePassword,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
// Host and Port:
|
|
|
|
|
|
|
|
inline bool HasPort() const { return m_aPort.isPresent(); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString GetHost(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const
|
|
|
|
{ return decode(m_aHost, getEscapePrefix(), eMechanism, eCharset); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString GetHostPort(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
sal_uInt32 GetPort() const;
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool SetHost(OUString const & rTheHost,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
{ return setHost(rTheHost, false, eMechanism, eCharset); }
|
|
|
|
|
|
|
|
bool SetPort(sal_uInt32 nThePort);
|
|
|
|
|
|
|
|
// Path:
|
|
|
|
|
|
|
|
inline bool HasURLPath() const { return !m_aPath.isEmpty(); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString GetURLPath(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const
|
|
|
|
{ return decode(m_aPath, getEscapePrefix(), eMechanism, eCharset); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool SetURLPath(OUString const & rThePath,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
{ return setPath(rThePath, false, eMechanism, eCharset); }
|
|
|
|
|
|
|
|
// Hierarchical Path:
|
|
|
|
|
|
|
|
/** A constant to address the last segment in various methods dealing with
|
|
|
|
hierarchical paths.
|
|
|
|
|
|
|
|
@descr It is often more efficient to address the last segment using
|
|
|
|
this constant, than to determine its ordinal value using
|
|
|
|
getSegmentCount().
|
|
|
|
*/
|
|
|
|
enum { LAST_SEGMENT = -1 };
|
|
|
|
|
|
|
|
/** The number of segments in the hierarchical path.
|
|
|
|
|
|
|
|
@descr Using RFC 2396 and RFC 2234, a hierarchical path is of the
|
|
|
|
form
|
|
|
|
|
|
|
|
hierarchical-path = 1*("/" segment)
|
|
|
|
|
|
|
|
segment = name *(";" param)
|
|
|
|
|
|
|
|
name = [base ["." extension]]
|
|
|
|
|
|
|
|
base = 1*pchar
|
|
|
|
|
|
|
|
extension = *<any pchar except ".">
|
|
|
|
|
|
|
|
param = *pchar
|
|
|
|
|
|
|
|
@param bIgnoreFinalSlash If true, a final slash at the end of the
|
|
|
|
hierarchical path does not denote an empty segment, but is ignored.
|
|
|
|
|
|
|
|
@return The number of segments in the hierarchical path. If the path
|
|
|
|
is not hierarchical, 0 is returned.
|
|
|
|
*/
|
|
|
|
sal_Int32 getSegmentCount(bool bIgnoreFinalSlash = true) const;
|
|
|
|
|
|
|
|
/** Remove a segment from the hierarchical path.
|
|
|
|
|
|
|
|
@param nIndex The non-negative index of the segment, or LAST_SEGMENT
|
|
|
|
if addressing the last segment.
|
|
|
|
|
|
|
|
@param bIgnoreFinalSlash If true, a final slash at the end of the
|
|
|
|
hierarchical path does not denote an empty segment, but is ignored.
|
|
|
|
|
|
|
|
@return True if the segment has successfully been removed (and the
|
|
|
|
resulting URI is still valid). If the path is not hierarchical, or
|
|
|
|
the specified segment does not exist, false is returned. If false is
|
|
|
|
returned, the object is not modified.
|
|
|
|
*/
|
|
|
|
bool removeSegment(sal_Int32 nIndex = LAST_SEGMENT,
|
|
|
|
bool bIgnoreFinalSlash = true);
|
|
|
|
|
|
|
|
/** Insert a new segment into the hierarchical path.
|
|
|
|
|
|
|
|
@param rTheName The name part of the new segment. The new segment
|
|
|
|
will contain no parameters.
|
|
|
|
|
|
|
|
@param bAppendFinalSlash If the new segment is appended at the end of
|
|
|
|
the hierarchical path, this parameter specifies whether to add a final
|
|
|
|
slash after it or not.
|
|
|
|
|
|
|
|
@param nIndex The non-negative index of the segment before which
|
|
|
|
to insert the new segment. LAST_SEGMENT or an nIndex that equals
|
|
|
|
getSegmentCount() inserts the new segment at the end of the
|
|
|
|
hierarchical path.
|
|
|
|
|
|
|
|
@param bIgnoreFinalSlash If true, a final slash at the end of the
|
|
|
|
hierarchical path does not denote an empty segment, but is ignored.
|
|
|
|
|
|
|
|
@param eMechanism See the general discussion for set-methods.
|
|
|
|
|
|
|
|
@param eCharset See the general discussion for set-methods.
|
|
|
|
|
|
|
|
@return True if the segment has successfully been inserted (and the
|
|
|
|
resulting URI is still valid). If the path is not hierarchical, or
|
|
|
|
the specified place to insert the new segment does not exist, false is
|
|
|
|
returned. If false is returned, the object is not modified.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool insertName(OUString const & rTheName,
|
2007-04-11 19:21:17 +00:00
|
|
|
bool bAppendFinalSlash = false,
|
|
|
|
sal_Int32 nIndex = LAST_SEGMENT,
|
|
|
|
bool bIgnoreFinalSlash = true,
|
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
/** Get the name of a segment of the hierarchical path.
|
|
|
|
|
|
|
|
@param nIndex The non-negative index of the segment, or LAST_SEGMENT
|
|
|
|
if addressing the last segment.
|
|
|
|
|
|
|
|
@param bIgnoreFinalSlash If true, a final slash at the end of the
|
|
|
|
hierarchical path does not denote an empty segment, but is ignored.
|
|
|
|
|
|
|
|
@param eMechanism See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@param eCharset See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@return The name part of the specified segment. If the path is not
|
|
|
|
hierarchical, or the specified segment does not exits, an empty string
|
|
|
|
is returned.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString getName(sal_Int32 nIndex = LAST_SEGMENT,
|
2007-04-11 19:21:17 +00:00
|
|
|
bool bIgnoreFinalSlash = true,
|
|
|
|
DecodeMechanism eMechanism = DECODE_TO_IURI,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
const;
|
|
|
|
|
|
|
|
/** Set the name of a segment (preserving any parameters and any query or
|
|
|
|
fragment part).
|
|
|
|
|
|
|
|
@param rTheName The new name.
|
|
|
|
|
|
|
|
@param nIndex The non-negative index of the segment, or LAST_SEGMENT
|
|
|
|
if addressing the last segment.
|
|
|
|
|
|
|
|
@param bIgnoreFinalSlash If true, a final slash at the end of the
|
|
|
|
hierarchical path does not denote an empty segment, but is ignored.
|
|
|
|
|
|
|
|
@param eMechanism See the general discussion for set-methods.
|
|
|
|
|
|
|
|
@param eCharset See the general discussion for set-methods.
|
|
|
|
|
|
|
|
@return True if the name has successfully been modified (and the
|
|
|
|
resulting URI is still valid). If the path is not hierarchical, or
|
|
|
|
the specified segment does not exist, false is returned. If false is
|
|
|
|
returned, the object is not modified.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
bool setName(OUString const & rTheName,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Int32 nIndex = LAST_SEGMENT,
|
|
|
|
bool bIgnoreFinalSlash = true,
|
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
/** Get the base of the name of a segment.
|
|
|
|
|
|
|
|
@param nIndex The non-negative index of the segment, or LAST_SEGMENT
|
|
|
|
if addressing the last segment.
|
|
|
|
|
|
|
|
@param bIgnoreFinalSlash If true, a final slash at the end of the
|
|
|
|
hierarchical path does not denote an empty segment, but is ignored.
|
|
|
|
|
|
|
|
@param eMechanism See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@param eCharset See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@return The base part of the specified segment. If the path is
|
|
|
|
not hierarchical, or the specified segment does not exits, an empty
|
|
|
|
string is returned.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString getBase(sal_Int32 nIndex = LAST_SEGMENT,
|
2007-04-11 19:21:17 +00:00
|
|
|
bool bIgnoreFinalSlash = true,
|
|
|
|
DecodeMechanism eMechanism = DECODE_TO_IURI,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
const;
|
|
|
|
|
|
|
|
/** Set the base of the name of a segment (preserving the extension).
|
|
|
|
|
|
|
|
@param rTheBase The new base.
|
|
|
|
|
|
|
|
@param nIndex The non-negative index of the segment, or LAST_SEGMENT
|
|
|
|
if addressing the last segment.
|
|
|
|
|
|
|
|
@param bIgnoreFinalSlash If true, a final slash at the end of the
|
|
|
|
hierarchical path does not denote an empty segment, but is ignored.
|
|
|
|
|
|
|
|
@param eMechanism See the general discussion for set-methods.
|
|
|
|
|
|
|
|
@param eCharset See the general discussion for set-methods.
|
|
|
|
|
|
|
|
@return True if the base has successfully been modified (and the
|
|
|
|
resulting URI is still valid). If the path is not hierarchical, or
|
|
|
|
the specified segment does not exist, false is returned. If false is
|
|
|
|
returned, the object is not modified.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
bool setBase(OUString const & rTheBase,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Int32 nIndex = LAST_SEGMENT,
|
|
|
|
bool bIgnoreFinalSlash = true,
|
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
/** Determine whether the name of a segment has an extension.
|
|
|
|
|
|
|
|
@param nIndex The non-negative index of the segment, or LAST_SEGMENT
|
|
|
|
if addressing the last segment.
|
|
|
|
|
|
|
|
@param bIgnoreFinalSlash If true, a final slash at the end of the
|
|
|
|
hierarchical path does not denote an empty segment, but is ignored.
|
|
|
|
|
|
|
|
@return True if the name of the specified segment has an extension.
|
|
|
|
If the path is not hierarchical, or the specified segment does not
|
|
|
|
exist, false is returned.
|
|
|
|
*/
|
|
|
|
bool hasExtension(sal_Int32 nIndex = LAST_SEGMENT,
|
|
|
|
bool bIgnoreFinalSlash = true) const;
|
|
|
|
|
|
|
|
/** Get the extension of the name of a segment.
|
|
|
|
|
|
|
|
@param nIndex The non-negative index of the segment, or LAST_SEGMENT
|
|
|
|
if addressing the last segment.
|
|
|
|
|
|
|
|
@param bIgnoreFinalSlash If true, a final slash at the end of the
|
|
|
|
hierarchical path does not denote an empty segment, but is ignored.
|
|
|
|
|
|
|
|
@param eMechanism See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@param eCharset See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@return The extension part of the specified segment. If the path is
|
|
|
|
not hierarchical, or the specified segment does not exits, an empty
|
|
|
|
string is returned.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString getExtension(sal_Int32 nIndex = LAST_SEGMENT,
|
2007-04-11 19:21:17 +00:00
|
|
|
bool bIgnoreFinalSlash = true,
|
|
|
|
DecodeMechanism eMechanism = DECODE_TO_IURI,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
const;
|
|
|
|
|
|
|
|
/** Set the extension of the name of a segment (replacing an already
|
|
|
|
existing extension).
|
|
|
|
|
|
|
|
@param rTheExtension The new extension.
|
|
|
|
|
|
|
|
@param nIndex The non-negative index of the segment, or LAST_SEGMENT
|
|
|
|
if addressing the last segment.
|
|
|
|
|
|
|
|
@param bIgnoreFinalSlash If true, a final slash at the end of the
|
|
|
|
hierarchical path does not denote an empty segment, but is ignored.
|
|
|
|
|
|
|
|
@param eMechanism See the general discussion for set-methods.
|
|
|
|
|
|
|
|
@param eCharset See the general discussion for set-methods.
|
|
|
|
|
|
|
|
@return True if the extension has successfully been modified (and the
|
|
|
|
resulting URI is still valid). If the path is not hierarchical, or
|
|
|
|
the specified segment does not exist, false is returned. If false is
|
|
|
|
returned, the object is not modified.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
bool setExtension(OUString const & rTheExtension,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Int32 nIndex = LAST_SEGMENT,
|
|
|
|
bool bIgnoreFinalSlash = true,
|
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
/** Remove the extension of the name of a segment.
|
|
|
|
|
|
|
|
@param nIndex The non-negative index of the segment, or LAST_SEGMENT
|
|
|
|
if addressing the last segment.
|
|
|
|
|
|
|
|
@param bIgnoreFinalSlash If true, a final slash at the end of the
|
|
|
|
hierarchical path does not denote an empty segment, but is ignored.
|
|
|
|
|
|
|
|
@return True if the extension has successfully been removed (and the
|
|
|
|
resulting URI is still valid), or if the name did not have an
|
|
|
|
extension. If the path is not hierarchical, or the specified segment
|
|
|
|
does not exist, false is returned. If false is returned, the object
|
|
|
|
is not modified.
|
|
|
|
*/
|
|
|
|
bool removeExtension(sal_Int32 nIndex = LAST_SEGMENT,
|
|
|
|
bool bIgnoreFinalSlash = true);
|
|
|
|
|
|
|
|
/** Determine whether the hierarchical path ends in a final slash.
|
|
|
|
|
|
|
|
@return True if the hierarchical path ends in a final slash. If the
|
|
|
|
path is not hierarchical, false is returned.
|
|
|
|
*/
|
|
|
|
bool hasFinalSlash() const;
|
|
|
|
|
|
|
|
/** Make the hierarchical path end in a final slash (if it does not
|
|
|
|
already do so).
|
|
|
|
|
|
|
|
@return True if a final slash has successfully been appended (and the
|
|
|
|
resulting URI is still valid), or if the hierarchical path already
|
|
|
|
ended in a final slash. If the path is not hierarchical, false is
|
|
|
|
returned. If false is returned, the object is not modified.
|
|
|
|
*/
|
|
|
|
bool setFinalSlash();
|
|
|
|
|
|
|
|
/** Remove a final slash from the hierarchical path.
|
|
|
|
|
|
|
|
@return True if a final slash has successfully been removed (and the
|
|
|
|
resulting URI is still valid), or if the hierarchical path already did
|
|
|
|
not end in a final slash. If the path is not hierarchical, false is
|
|
|
|
returned. If false is returned, the object is not modified.
|
|
|
|
*/
|
|
|
|
bool removeFinalSlash();
|
|
|
|
|
|
|
|
// Query:
|
|
|
|
|
|
|
|
inline bool HasParam() const { return m_aQuery.isPresent(); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString GetParam(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const
|
|
|
|
{ return decode(m_aQuery, getEscapePrefix(), eMechanism, eCharset); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool SetParam(OUString const & rTheQuery,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
// Fragment:
|
|
|
|
|
|
|
|
inline bool HasMark() const { return m_aFragment.isPresent(); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString GetMark(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const
|
|
|
|
{ return decode(m_aFragment, getEscapePrefix(), eMechanism, eCharset); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool SetMark(OUString const & rTheFragment,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
// File URLs:
|
|
|
|
|
|
|
|
/** Create an INetURLObject from a file system path.
|
|
|
|
|
|
|
|
@param rFSysPath A file system path. An URL is not allowed here!
|
|
|
|
|
|
|
|
@param eStyle The notation of rFSysPath.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
inline INetURLObject(OUString const & rFSysPath, FSysStyle eStyle);
|
2007-04-11 19:21:17 +00:00
|
|
|
|
|
|
|
/** Set this INetURLObject to a file URL constructed from a file system
|
|
|
|
path.
|
|
|
|
|
|
|
|
@param rFSysPath A file system path. An URL is not allowed here!
|
|
|
|
|
|
|
|
@param eStyle The notation of rFSysPath.
|
|
|
|
|
|
|
|
@return True if this INetURLObject has successfully been changed. If
|
|
|
|
false is returned, this INetURLObject has not been modified.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
bool setFSysPath(OUString const & rFSysPath, FSysStyle eStyle);
|
2007-04-11 19:21:17 +00:00
|
|
|
|
|
|
|
/** Return the file system path represented by a file URL (ignoring any
|
|
|
|
fragment part).
|
|
|
|
|
|
|
|
@param eStyle The notation of the returned file system path.
|
|
|
|
|
|
|
|
@param pDelimiter Upon successful return, this parameter can return
|
|
|
|
the character that is the 'main' delimiter within the returned file
|
|
|
|
system path (e.g., "/" for Unix, "\" for DOS, ":" for Mac). This is
|
|
|
|
especially useful for routines that later try to shorten the returned
|
|
|
|
file system path at a 'good' position, e.g. to fit it into some
|
|
|
|
limited display space.
|
|
|
|
|
|
|
|
@return The file system path represented by this file URL. If this
|
|
|
|
file URL does not represent a file system path according to the
|
|
|
|
specified notation, or if this is not a file URL at all, an empty
|
|
|
|
string is returned.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString getFSysPath(FSysStyle eStyle, sal_Unicode * pDelimiter = 0)
|
2007-04-11 19:21:17 +00:00
|
|
|
const;
|
|
|
|
|
|
|
|
// POP3 and URLs:
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString GetMsgId(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
const;
|
|
|
|
|
|
|
|
// Coding:
|
|
|
|
|
|
|
|
enum Part
|
|
|
|
{
|
|
|
|
PART_OBSOLETE_NORMAL = 0x001, // Obsolete, do not use!
|
|
|
|
PART_OBSOLETE_FILE = 0x002, // Obsolete, do not use!
|
|
|
|
PART_OBSOLETE_PARAM = 0x004, // Obsolete, do not use!
|
|
|
|
PART_USER_PASSWORD = 0x008,
|
|
|
|
PART_IMAP_ACHAR = 0x010,
|
|
|
|
PART_VIM = 0x020,
|
|
|
|
PART_HOST_EXTRA = 0x040,
|
|
|
|
PART_FPATH = 0x080,
|
|
|
|
PART_AUTHORITY = 0x100,
|
|
|
|
PART_PATH_SEGMENTS_EXTRA = 0x200,
|
|
|
|
PART_REL_SEGMENT_EXTRA = 0x400,
|
|
|
|
PART_URIC = 0x800,
|
|
|
|
PART_HTTP_PATH = 0x1000,
|
|
|
|
PART_FILE_SEGMENT_EXTRA = 0x2000, // Obsolete, do not use!
|
|
|
|
PART_MESSAGE_ID = 0x4000,
|
|
|
|
PART_MESSAGE_ID_PATH = 0x8000,
|
|
|
|
PART_MAILTO = 0x10000,
|
|
|
|
PART_PATH_BEFORE_QUERY = 0x20000,
|
|
|
|
PART_PCHAR = 0x40000,
|
|
|
|
PART_FRAGMENT = 0x80000, // Obsolete, do not use!
|
|
|
|
PART_VISIBLE = 0x100000,
|
|
|
|
PART_VISIBLE_NONSPECIAL = 0x200000,
|
|
|
|
PART_CREATEFRAGMENT = 0x400000,
|
|
|
|
PART_UNO_PARAM_VALUE = 0x800000,
|
|
|
|
PART_UNAMBIGUOUS = 0x1000000,
|
|
|
|
PART_URIC_NO_SLASH = 0x2000000,
|
|
|
|
PART_HTTP_QUERY = 0x4000000, //TODO! unused?
|
|
|
|
PART_NEWS_ARTICLE_LOCALPART = 0x8000000,
|
|
|
|
max_part = 0x80000000
|
|
|
|
// Do not use! Only there to allow compatible changes in the
|
|
|
|
// future.
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EscapeType
|
|
|
|
{
|
|
|
|
ESCAPE_NO,
|
|
|
|
ESCAPE_OCTET,
|
|
|
|
ESCAPE_UTF32
|
|
|
|
};
|
|
|
|
|
|
|
|
/** Encode some text as part of a URI.
|
|
|
|
|
|
|
|
@param rText Some text (for its interpretation, see the general
|
|
|
|
discussion for set-methods).
|
|
|
|
|
|
|
|
@param ePart The part says which characters are 'forbidden' and must
|
|
|
|
be encoded (replaced by escape sequences). Characters outside the US-
|
|
|
|
ASCII range are always 'forbidden.'
|
|
|
|
|
|
|
|
@param cEscapePrefix The first character in an escape sequence
|
|
|
|
(normally '%').
|
|
|
|
|
|
|
|
@param eMechanism See the general discussion for set-methods.
|
|
|
|
|
|
|
|
@param eCharset See the general discussion for set-methods.
|
|
|
|
|
|
|
|
@return The text, encoded according to the given mechanism and
|
|
|
|
charset ('forbidden' characters replaced by escape sequences).
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
static inline OUString encode(OUString const & rText, Part ePart,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Char cEscapePrefix,
|
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
/** Decode some text.
|
|
|
|
|
|
|
|
@param rText Some (encoded) text.
|
|
|
|
|
|
|
|
@param cEscapePrefix The first character in an escape sequence
|
|
|
|
(normally '%').
|
|
|
|
|
|
|
|
@param eMechanism See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@param eCharset See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@return The text, decoded according to the given mechanism and
|
|
|
|
charset (escape sequences replaced by 'raw' characters).
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
static inline OUString decode(OUString const & rText,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Char cEscapePrefix,
|
|
|
|
DecodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
static inline OUString decode(OUStringBuffer const & rText,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Char cEscapePrefix,
|
|
|
|
DecodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
static void appendUCS4Escape(OUStringBuffer & rTheText,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Char cEscapePrefix,
|
|
|
|
sal_uInt32 nUCS4);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
static void appendUCS4(OUStringBuffer & rTheText, sal_uInt32 nUCS4,
|
2007-04-11 19:21:17 +00:00
|
|
|
EscapeType eEscapeType, bool bOctets, Part ePart,
|
|
|
|
sal_Char cEscapePrefix, rtl_TextEncoding eCharset,
|
|
|
|
bool bKeepVisibleEscapes);
|
|
|
|
|
|
|
|
static sal_uInt32 getUTF32(sal_Unicode const *& rBegin,
|
|
|
|
sal_Unicode const * pEnd, bool bOctets,
|
|
|
|
sal_Char cEscapePrefix,
|
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset,
|
|
|
|
EscapeType & rEscapeType);
|
|
|
|
|
|
|
|
// Specialized helpers:
|
|
|
|
|
|
|
|
static sal_uInt32 scanDomain(sal_Unicode const *& rBegin,
|
|
|
|
sal_Unicode const * pEnd,
|
|
|
|
bool bEager = true);
|
|
|
|
|
|
|
|
// OBSOLETE Hierarchical Path:
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString GetPartBeforeLastName(DecodeMechanism eMechanism
|
2007-04-11 19:21:17 +00:00
|
|
|
= DECODE_TO_IURI,
|
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const;
|
|
|
|
|
|
|
|
/** Get the last segment in the path.
|
|
|
|
|
|
|
|
@param eMechanism See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@param eCharset See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@return For a hierarchical URL, the last segment (everything after
|
|
|
|
the last unencoded '/'). Not that this last segment may be empty. If
|
|
|
|
the URL is not hierarchical, an empty string is returned.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString GetLastName(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
const;
|
|
|
|
|
|
|
|
/** Get the 'extension' of the last segment in the path.
|
|
|
|
|
|
|
|
@param eMechanism See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@param eCharset See the general discussion for get-methods.
|
|
|
|
|
|
|
|
@return For a hierarchical URL, everything after the first unencoded
|
|
|
|
'.' in the last segment of the path. Note that this 'extension' may
|
|
|
|
be empty. If the URL is not hierarchical, or if the last segment does
|
|
|
|
not contain an unencoded '.', an empty string is returned.
|
|
|
|
*/
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString GetFileExtension(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const;
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool Append(OUString const & rTheSegment,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8)
|
|
|
|
{ return appendSegment(rTheSegment, false, eMechanism, eCharset); }
|
|
|
|
|
|
|
|
bool CutLastName();
|
|
|
|
|
|
|
|
// OBSOLETE File URLs:
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString PathToFileName() const;
|
2007-04-11 19:21:17 +00:00
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString GetFull() const;
|
2007-04-11 19:21:17 +00:00
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString GetPath() const;
|
2007-04-11 19:21:17 +00:00
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
void SetBase(OUString const & rTheBase);
|
2007-04-11 19:21:17 +00:00
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString GetBase() const;
|
2007-04-11 19:21:17 +00:00
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
void SetName(OUString const & rTheName,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString GetName(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const
|
|
|
|
{ return GetLastName(eMechanism, eCharset); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
void SetExtension(OUString const & rTheExtension,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism = WAS_ENCODED,
|
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString GetExtension(
|
2007-04-11 19:21:17 +00:00
|
|
|
DecodeMechanism eMechanism = DECODE_TO_IURI,
|
|
|
|
rtl_TextEncoding eCharset
|
|
|
|
= RTL_TEXTENCODING_UTF8) const
|
|
|
|
{ return GetFileExtension(eMechanism, eCharset); }
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString CutExtension(DecodeMechanism eMechanism = DECODE_TO_IURI,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
|
|
|
|
|
|
|
|
bool IsCaseSensitive() const;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
// General Structure:
|
|
|
|
|
|
|
|
class SubString
|
|
|
|
{
|
|
|
|
sal_Int32 m_nBegin;
|
|
|
|
sal_Int32 m_nLength;
|
|
|
|
|
|
|
|
public:
|
|
|
|
explicit inline SubString(sal_Int32 nTheBegin = -1,
|
|
|
|
sal_Int32 nTheLength = 0):
|
|
|
|
m_nBegin(nTheBegin), m_nLength(nTheLength) {}
|
|
|
|
|
|
|
|
inline bool isPresent() const { return m_nBegin != -1; }
|
|
|
|
|
|
|
|
inline bool isEmpty() const { return m_nLength == 0; }
|
|
|
|
|
|
|
|
inline sal_Int32 getBegin() const { return m_nBegin; }
|
|
|
|
|
|
|
|
inline sal_Int32 getLength() const { return m_nLength; }
|
|
|
|
|
|
|
|
inline sal_Int32 getEnd() const { return m_nBegin + m_nLength; }
|
|
|
|
|
|
|
|
inline sal_Int32 clear();
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline sal_Int32 set(OUStringBuffer & rString,
|
|
|
|
OUString const & rSubString,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Int32 nTheBegin);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline sal_Int32 set(OUString & rString,
|
|
|
|
OUString const & rSubString);
|
2007-04-11 19:21:17 +00:00
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline sal_Int32 set(OUStringBuffer & rString,
|
|
|
|
OUString const & rSubString);
|
2007-04-11 19:21:17 +00:00
|
|
|
|
|
|
|
inline void operator +=(sal_Int32 nDelta);
|
|
|
|
|
|
|
|
int compare(SubString const & rOther,
|
2013-04-07 12:06:47 +02:00
|
|
|
OUStringBuffer const & rThisString,
|
|
|
|
OUStringBuffer const & rOtherString) const;
|
2007-04-11 19:21:17 +00:00
|
|
|
};
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
OUStringBuffer m_aAbsURIRef;
|
2007-04-11 19:21:17 +00:00
|
|
|
SubString m_aScheme;
|
|
|
|
SubString m_aUser;
|
|
|
|
SubString m_aAuth;
|
|
|
|
SubString m_aHost;
|
|
|
|
SubString m_aPort;
|
|
|
|
SubString m_aPath;
|
|
|
|
SubString m_aQuery;
|
|
|
|
SubString m_aFragment;
|
|
|
|
INetProtocol m_eScheme;
|
|
|
|
INetProtocol m_eSmartScheme;
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE void setInvalid();
|
|
|
|
|
|
|
|
bool setAbsURIRef(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rTheAbsURIRef, bool bOctets,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism, rtl_TextEncoding eCharset, bool bSmart,
|
|
|
|
FSysStyle eStyle);
|
|
|
|
|
|
|
|
// Relative URLs:
|
|
|
|
|
|
|
|
bool convertRelToAbs(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rTheRelURIRef, bool bOctets,
|
2007-04-11 19:21:17 +00:00
|
|
|
INetURLObject & rTheAbsURIRef, bool & rWasAbsolute,
|
|
|
|
EncodeMechanism eMechanism, rtl_TextEncoding eCharset,
|
|
|
|
bool bIgnoreFragment, bool bSmart, bool bRelativeNonURIs,
|
|
|
|
FSysStyle eStyle) const;
|
|
|
|
|
|
|
|
bool convertAbsToRel(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rTheAbsURIRef, bool bOctets,
|
|
|
|
OUString & rTheRelURIRef, EncodeMechanism eEncodeMechanism,
|
2007-04-11 19:21:17 +00:00
|
|
|
DecodeMechanism eDecodeMechanism, rtl_TextEncoding eCharset,
|
|
|
|
FSysStyle eStyle) const;
|
|
|
|
|
|
|
|
// External URLs:
|
|
|
|
|
|
|
|
static bool convertIntToExt(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rTheIntURIRef, bool bOctets,
|
|
|
|
OUString & rTheExtURIRef, DecodeMechanism eDecodeMechanism,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset);
|
|
|
|
|
|
|
|
static bool convertExtToInt(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rTheExtURIRef, bool bOctets,
|
|
|
|
OUString & rTheIntURIRef, DecodeMechanism eDecodeMechanism,
|
2007-04-11 19:21:17 +00:00
|
|
|
rtl_TextEncoding eCharset);
|
|
|
|
|
|
|
|
// Scheme:
|
|
|
|
|
|
|
|
struct PrefixInfo;
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE static inline SchemeInfo const & getSchemeInfo(
|
|
|
|
INetProtocol eTheScheme);
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE inline SchemeInfo const & getSchemeInfo() const;
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE static PrefixInfo const * getPrefix(
|
|
|
|
sal_Unicode const *& rBegin, sal_Unicode const * pEnd);
|
|
|
|
|
|
|
|
// Authority:
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE sal_Int32 getAuthorityBegin() const;
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE SubString getAuthority() const;
|
|
|
|
|
|
|
|
// User Info:
|
|
|
|
|
|
|
|
bool setUser(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rTheUser, bool bOctets,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism, rtl_TextEncoding eCharset);
|
|
|
|
|
|
|
|
bool clearPassword();
|
|
|
|
|
|
|
|
bool setPassword(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rThePassword, bool bOctets,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism, rtl_TextEncoding eCharset);
|
|
|
|
|
|
|
|
// Host and Port:
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE static bool parseHost(
|
|
|
|
sal_Unicode const *& rBegin, sal_Unicode const * pEnd,
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString & rCanonic);
|
2007-04-11 19:21:17 +00:00
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE static bool parseHostOrNetBiosName(
|
|
|
|
sal_Unicode const * pBegin, sal_Unicode const * pEnd, bool bOctets,
|
|
|
|
EncodeMechanism eMechanism, rtl_TextEncoding eCharset,
|
2013-04-07 12:06:47 +02:00
|
|
|
bool bNetBiosName, OUStringBuffer* pCanonic);
|
2007-04-11 19:21:17 +00:00
|
|
|
|
|
|
|
bool setHost(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rTheHost, bool bOctets,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism, rtl_TextEncoding eCharset);
|
|
|
|
|
|
|
|
// Path:
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE static bool parsePath(
|
|
|
|
INetProtocol eScheme, sal_Unicode const ** pBegin,
|
|
|
|
sal_Unicode const * pEnd, bool bOctets, EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset, bool bSkippedInitialSlash,
|
|
|
|
sal_uInt32 nSegmentDelimiter, sal_uInt32 nAltSegmentDelimiter,
|
|
|
|
sal_uInt32 nQueryDelimiter, sal_uInt32 nFragmentDelimiter,
|
2013-04-07 12:06:47 +02:00
|
|
|
OUStringBuffer &rSynPath);
|
2007-04-11 19:21:17 +00:00
|
|
|
|
|
|
|
bool setPath(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rThePath, bool bOctets,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism, rtl_TextEncoding eCharset);
|
|
|
|
|
|
|
|
// Hierarchical Path:
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE bool checkHierarchical() const;
|
|
|
|
|
|
|
|
bool appendSegment(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rTheSegment, bool bOctets,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism, rtl_TextEncoding eCharset);
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE SubString getSegment(
|
|
|
|
sal_Int32 nIndex, bool bIgnoreFinalSlash) const;
|
|
|
|
|
|
|
|
bool insertName(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rTheName, bool bOctets, bool bAppendFinalSlash,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Int32 nIndex, bool bIgnoreFinalSlash, EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset);
|
|
|
|
|
|
|
|
// Query:
|
|
|
|
|
|
|
|
bool clearQuery();
|
|
|
|
|
|
|
|
bool setQuery(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rTheQuery, bool bOctets,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism, rtl_TextEncoding eCharset);
|
|
|
|
|
|
|
|
// Fragment:
|
|
|
|
|
|
|
|
bool clearFragment();
|
|
|
|
|
|
|
|
bool setFragment(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString const & rTheMark, bool bOctets,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism, rtl_TextEncoding eCharset);
|
|
|
|
|
|
|
|
// FILE URLs:
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE bool hasDosVolume(FSysStyle eStyle) const;
|
|
|
|
|
|
|
|
// Coding:
|
|
|
|
|
|
|
|
static inline sal_Char getEscapePrefix(INetProtocol eTheScheme)
|
|
|
|
{ return eTheScheme == INET_PROT_VIM ? '=' : '%'; }
|
|
|
|
|
|
|
|
inline sal_Char getEscapePrefix() const
|
|
|
|
{ return getEscapePrefix(m_eScheme); }
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE static inline void appendEscape(
|
2013-04-07 12:06:47 +02:00
|
|
|
OUStringBuffer & rTheText, sal_Char cEscapePrefix,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_uInt32 nOctet);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
static OUString encodeText(
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Unicode const * pBegin, sal_Unicode const * pEnd, bool bOctets,
|
|
|
|
Part ePart, sal_Char cEscapePrefix, EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset, bool bKeepVisibleEscapes);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
static inline OUString encodeText(
|
|
|
|
OUString const & rTheText, bool bOctets, Part ePart,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Char cEscapePrefix, EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset, bool bKeepVisibleEscapes);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
static OUString decode(
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Unicode const * pBegin, sal_Unicode const * pEnd,
|
|
|
|
sal_Char cEscapePrefix, DecodeMechanism, rtl_TextEncoding eCharset);
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString decode(
|
2007-04-11 19:21:17 +00:00
|
|
|
SubString const & rSubString, sal_Char cEscapePrefix,
|
|
|
|
DecodeMechanism eMechanism, rtl_TextEncoding eCharset) const;
|
|
|
|
|
|
|
|
// Specialized helpers:
|
|
|
|
|
|
|
|
TOOLS_DLLPRIVATE static bool scanIPv6reference(
|
|
|
|
sal_Unicode const *& rBegin, sal_Unicode const * pEnd);
|
2010-11-26 14:40:03 +01:00
|
|
|
|
|
|
|
private:
|
|
|
|
void changeScheme(INetProtocol eTargetScheme);
|
2007-04-11 19:21:17 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
// static
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString INetURLObject::encodeText(OUString const & rTheText,
|
2007-04-11 19:21:17 +00:00
|
|
|
bool bOctets, Part ePart,
|
|
|
|
sal_Char cEscapePrefix,
|
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset,
|
|
|
|
bool bKeepVisibleEscapes)
|
|
|
|
{
|
|
|
|
return encodeText(rTheText.getStr(),
|
|
|
|
rTheText.getStr() + rTheText.getLength(), bOctets, ePart,
|
|
|
|
cEscapePrefix, eMechanism, eCharset,
|
|
|
|
bKeepVisibleEscapes);
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString INetURLObject::decode(SubString const & rSubString,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Char cEscapePrefix,
|
|
|
|
DecodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset) const
|
|
|
|
{
|
|
|
|
return rSubString.isPresent() ?
|
|
|
|
decode(m_aAbsURIRef.getStr() + rSubString.getBegin(),
|
|
|
|
m_aAbsURIRef.getStr() + rSubString.getEnd(),
|
|
|
|
cEscapePrefix, eMechanism, eCharset) :
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString();
|
2007-04-11 19:21:17 +00:00
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline INetURLObject::INetURLObject(OUString const & rTheAbsURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset):
|
|
|
|
m_eScheme(INET_PROT_NOT_VALID), m_eSmartScheme(INET_PROT_HTTP)
|
|
|
|
{
|
|
|
|
setAbsURIRef(rTheAbsURIRef, false, eMechanism, eCharset, false,
|
|
|
|
FSysStyle(0));
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool INetURLObject::SetURL(OUString const & rTheAbsURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset)
|
|
|
|
{
|
|
|
|
return setAbsURIRef(rTheAbsURIRef, false, eMechanism, eCharset, false,
|
|
|
|
FSysStyle(0));
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline INetURLObject::INetURLObject(OUString const & rTheAbsURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
INetProtocol eTheSmartScheme,
|
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset,
|
|
|
|
FSysStyle eStyle):
|
|
|
|
m_eScheme(INET_PROT_NOT_VALID), m_eSmartScheme(eTheSmartScheme)
|
|
|
|
{
|
|
|
|
setAbsURIRef(rTheAbsURIRef, false, eMechanism, eCharset, true, eStyle);
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool INetURLObject::SetSmartURL(OUString const & rTheAbsURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset,
|
|
|
|
FSysStyle eStyle)
|
|
|
|
{
|
|
|
|
return setAbsURIRef(rTheAbsURIRef, false, eMechanism, eCharset, true,
|
|
|
|
eStyle);
|
|
|
|
}
|
|
|
|
|
|
|
|
inline INetURLObject
|
2013-04-07 12:06:47 +02:00
|
|
|
INetURLObject::smartRel2Abs(OUString const & rTheRelURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
bool & rWasAbsolute,
|
|
|
|
bool bIgnoreFragment,
|
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset,
|
|
|
|
bool bRelativeNonURIs,
|
|
|
|
FSysStyle eStyle) const
|
|
|
|
{
|
|
|
|
INetURLObject aTheAbsURIRef;
|
|
|
|
convertRelToAbs(rTheRelURIRef, false, aTheAbsURIRef, rWasAbsolute,
|
|
|
|
eMechanism, eCharset, bIgnoreFragment, true,
|
|
|
|
bRelativeNonURIs, eStyle);
|
|
|
|
return aTheAbsURIRef;
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool INetURLObject::GetNewAbsURL(OUString const & rTheRelURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
INetURLObject * pTheAbsURIRef,
|
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset,
|
|
|
|
FSysStyle eStyle, bool bIgnoreFragment)
|
|
|
|
const
|
|
|
|
{
|
|
|
|
INetURLObject aTheAbsURIRef;
|
|
|
|
bool bWasAbsolute;
|
|
|
|
if (!convertRelToAbs(rTheRelURIRef, false, aTheAbsURIRef, bWasAbsolute,
|
|
|
|
eMechanism, eCharset, bIgnoreFragment, false, false,
|
|
|
|
eStyle))
|
|
|
|
return false;
|
|
|
|
if (pTheAbsURIRef)
|
|
|
|
*pTheAbsURIRef = aTheAbsURIRef;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// static
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString INetURLObject::GetRelURL(OUString const & rTheBaseURIRef,
|
|
|
|
OUString const & rTheAbsURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eEncodeMechanism,
|
|
|
|
DecodeMechanism eDecodeMechanism,
|
|
|
|
rtl_TextEncoding eCharset,
|
|
|
|
FSysStyle eStyle)
|
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString aTheRelURIRef;
|
2007-04-11 19:21:17 +00:00
|
|
|
INetURLObject(rTheBaseURIRef, eEncodeMechanism, eCharset).
|
|
|
|
convertAbsToRel(rTheAbsURIRef, false, aTheRelURIRef, eEncodeMechanism,
|
|
|
|
eDecodeMechanism, eCharset, eStyle);
|
|
|
|
return aTheRelURIRef;
|
|
|
|
}
|
|
|
|
|
|
|
|
// static
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool INetURLObject::translateToExternal(OUString const &
|
2007-04-11 19:21:17 +00:00
|
|
|
rTheIntURIRef,
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString & rTheExtURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
DecodeMechanism
|
|
|
|
eDecodeMechanism,
|
|
|
|
rtl_TextEncoding eCharset)
|
|
|
|
{
|
|
|
|
return convertIntToExt(rTheIntURIRef, false, rTheExtURIRef,
|
|
|
|
eDecodeMechanism, eCharset);
|
|
|
|
}
|
|
|
|
|
|
|
|
// static
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool INetURLObject::translateToInternal(OUString const &
|
2007-04-11 19:21:17 +00:00
|
|
|
rTheExtURIRef,
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString & rTheIntURIRef,
|
2007-04-11 19:21:17 +00:00
|
|
|
DecodeMechanism
|
|
|
|
eDecodeMechanism,
|
|
|
|
rtl_TextEncoding eCharset)
|
|
|
|
{
|
|
|
|
return convertExtToInt(rTheExtURIRef, false, rTheIntURIRef,
|
|
|
|
eDecodeMechanism, eCharset);
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool INetURLObject::SetPass(OUString const & rThePassword,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset)
|
|
|
|
{
|
2011-11-22 17:17:53 +00:00
|
|
|
return rThePassword.isEmpty() ?
|
2007-04-11 19:21:17 +00:00
|
|
|
clearPassword() :
|
|
|
|
setPassword(rThePassword, false, eMechanism, eCharset);
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool INetURLObject::SetUserAndPass(OUString const & rTheUser,
|
|
|
|
OUString const & rThePassword,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset)
|
|
|
|
{
|
|
|
|
return setUser(rTheUser, false, eMechanism, eCharset)
|
2011-11-22 17:17:53 +00:00
|
|
|
&& (rThePassword.isEmpty() ?
|
2007-04-11 19:21:17 +00:00
|
|
|
clearPassword() :
|
|
|
|
setPassword(rThePassword, false, eMechanism, eCharset));
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool INetURLObject::insertName(OUString const & rTheName,
|
2007-04-11 19:21:17 +00:00
|
|
|
bool bAppendFinalSlash,
|
|
|
|
sal_Int32 nIndex,
|
|
|
|
bool bIgnoreFinalSlash,
|
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset)
|
|
|
|
{
|
|
|
|
return insertName(rTheName, false, bAppendFinalSlash, nIndex,
|
|
|
|
bIgnoreFinalSlash, eMechanism, eCharset);
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool INetURLObject::SetParam(OUString const & rTheQuery,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset)
|
|
|
|
{
|
2011-11-22 17:17:53 +00:00
|
|
|
return rTheQuery.isEmpty() ?
|
2007-04-11 19:21:17 +00:00
|
|
|
clearQuery() :
|
|
|
|
setQuery(rTheQuery, false, eMechanism, eCharset);
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline bool INetURLObject::SetMark(OUString const & rTheFragment,
|
2007-04-11 19:21:17 +00:00
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset)
|
|
|
|
{
|
2011-11-22 17:17:53 +00:00
|
|
|
return rTheFragment.isEmpty() ?
|
2007-04-11 19:21:17 +00:00
|
|
|
clearFragment() :
|
|
|
|
setFragment(rTheFragment, false, eMechanism, eCharset);
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline INetURLObject::INetURLObject(OUString const & rFSysPath,
|
2007-04-11 19:21:17 +00:00
|
|
|
FSysStyle eStyle):
|
|
|
|
m_eScheme(INET_PROT_NOT_VALID), m_eSmartScheme(INET_PROT_HTTP)
|
|
|
|
{
|
|
|
|
setFSysPath(rFSysPath, eStyle);
|
|
|
|
}
|
|
|
|
|
|
|
|
// static
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString INetURLObject::encode(OUString const & rText, Part ePart,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Char cEscapePrefix,
|
|
|
|
EncodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset)
|
|
|
|
{
|
|
|
|
return encodeText(rText, false, ePart, cEscapePrefix, eMechanism,
|
|
|
|
eCharset, false);
|
|
|
|
}
|
|
|
|
|
|
|
|
// static
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString INetURLObject::decode(OUString const & rText,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Char cEscapePrefix,
|
|
|
|
DecodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset)
|
|
|
|
{
|
|
|
|
return decode(rText.getStr(), rText.getStr() + rText.getLength(),
|
|
|
|
cEscapePrefix, eMechanism, eCharset);
|
|
|
|
}
|
|
|
|
|
2013-04-07 12:06:47 +02:00
|
|
|
inline OUString INetURLObject::decode(OUStringBuffer const & rText,
|
2007-04-11 19:21:17 +00:00
|
|
|
sal_Char cEscapePrefix,
|
|
|
|
DecodeMechanism eMechanism,
|
|
|
|
rtl_TextEncoding eCharset)
|
|
|
|
{
|
|
|
|
return decode(rText.getStr(), rText.getStr() + rText.getLength(),
|
|
|
|
cEscapePrefix, eMechanism, eCharset);
|
|
|
|
}
|
|
|
|
|
2012-08-13 23:14:08 +02:00
|
|
|
#endif
|
2010-10-14 08:27:31 +02:00
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|