LibreOffice Module xmlreader (master) 1
span.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#pragma once
21
22#include <sal/config.h>
23
24#include <cstddef>
25#include <cstring>
26
27#include <sal/types.h>
29
30namespace rtl { class OUString; }
31
32namespace xmlreader {
33
35 char const * begin;
36 sal_Int32 length;
37
38 Span(): begin(nullptr), length(0) {}
39 // init length to avoid compiler warnings
40
41 Span(char const * theBegin, sal_Int32 theLength):
42 begin(theBegin), length(theLength) {}
43
44 template< std::size_t N > explicit Span(char const (& literal)[N]):
45 begin(literal), length(N - 1)
46 {}
47
48 void clear() noexcept { begin = nullptr; }
49
50 bool is() const { return begin != nullptr; }
51
52 bool operator==(Span const & text) const {
53 return length == text.length
54 && std::memcmp(begin, text.begin, text.length) == 0;
55 }
56
57 bool operator!=(Span const & text) const {
58 return !(operator==(text));
59 }
60
61 bool equals(char const * textBegin, sal_Int32 textLength) const {
62 return operator==(Span(textBegin, textLength));
63 }
64
65 template< std::size_t N > bool operator==(char const (& literal)[N])
66 const
67 {
68 return operator==(Span(literal, N - 1));
69 }
70
71 template< std::size_t N > bool operator!=(char const (& literal)[N])
72 const
73 {
74 return operator!=(Span(literal, N - 1));
75 }
76
77 rtl::OUString convertFromUtf8() const;
78};
79
80}
81
82/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
def text(shape, orig_st)
enumrange< T >::Iterator begin(enumrange< T >)
#define N
bool operator!=(Span const &text) const
Definition: span.hxx:57
void clear() noexcept
Definition: span.hxx:48
char const * begin
Definition: span.hxx:35
Span(char const *theBegin, sal_Int32 theLength)
Definition: span.hxx:41
bool is() const
Definition: span.hxx:50
bool operator!=(char const (&literal)[N]) const
Definition: span.hxx:71
sal_Int32 length
Definition: span.hxx:36
bool operator==(char const (&literal)[N]) const
Definition: span.hxx:65
Span(char const (&literal)[N])
Definition: span.hxx:44
bool equals(char const *textBegin, sal_Int32 textLength) const
Definition: span.hxx:61
bool operator==(Span const &text) const
Definition: span.hxx:52
#define SAL_WARN_UNUSED
bool operator!=(const XclExpString &rLeft, const XclExpString &rRight)
bool operator==(const XclFontData &rLeft, const XclFontData &rRight)
#define OOO_DLLPUBLIC_XMLREADER