Bump for 3.6-28
[LibreOffice.git] / autodoc / source / ary / kernel / qualiname.cxx
blob8db4ea07919bce6f463cad5939c772b33e645fc1
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*************************************************************************
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6 * Copyright 2000, 2010 Oracle and/or its affiliates.
8 * OpenOffice.org - a multi-platform office productivity suite
10 * This file is part of OpenOffice.org.
12 * OpenOffice.org is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License version 3
14 * only, as published by the Free Software Foundation.
16 * OpenOffice.org is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License version 3 for more details
20 * (a copy is included in the LICENSE file that accompanied this code).
22 * You should have received a copy of the GNU Lesser General Public License
23 * version 3 along with OpenOffice.org. If not, see
24 * <http://www.openoffice.org/license.html>
25 * for a copy of the LGPLv3 License.
27 ************************************************************************/
29 #include <precomp.h>
30 #include <ary/qualiname.hxx>
33 // NOT FULLY DECLARED SERVICES
36 namespace ary
40 QualifiedName::QualifiedName( uintt i_nSize )
41 : aNamespace(),
42 sLocalName(),
43 bIsAbsolute(false),
44 bIsFunction()
46 if (i_nSize > 0)
47 aNamespace.reserve(i_nSize);
50 QualifiedName::QualifiedName( const char * i_sText,
51 const char * i_sSeparator )
52 : aNamespace(),
53 sLocalName(),
54 bIsAbsolute(false),
55 bIsFunction()
57 AssignText(i_sText,i_sSeparator);
60 QualifiedName::~QualifiedName()
64 void
65 QualifiedName::AssignText( const char * i_sText,
66 const char * i_sSeparator )
68 csv_assert(NOT csv::no_str(i_sText) AND NOT csv::no_str(i_sSeparator));
69 bIsAbsolute = false;
70 bIsFunction = false;
71 csv::erase_container( aNamespace );
73 uintt nSepLen = strlen(i_sSeparator);
74 const char * sNext = i_sText;
76 const char * ps = strstr( i_sText, i_sSeparator );
77 if (ps == i_sText)
79 bIsAbsolute = true;
80 sNext = ps + nSepLen;
83 for ( ps = strstr(sNext, i_sSeparator);
84 ps != 0;
85 ps = strstr(sNext, i_sSeparator) )
87 String sPart(sNext, ps - sNext);
88 aNamespace.push_back(sPart);
89 sNext = ps + nSepLen;
92 uintt sNameLen = strlen(sNext);
93 if ( sNameLen > 2 )
95 ps = sNext + sNameLen - 2;
96 if (*ps == '(' AND *(ps+1) == ')')
98 sNameLen -= 2;
99 bIsFunction = true;
102 sLocalName = String(sNext,sNameLen);
106 } // namespace ary
108 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */