gdb stacktraces for subsequentchecks
[LibreOffice.git] / binaryurp / source / unmarshal.hxx
blob5d0019c175cd78abef875e87d9ab7467e5730910
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, 2011 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 #ifndef INCLUDED_BINARYURP_SOURCE_UNMARSHAL_HXX
30 #define INCLUDED_BINARYURP_SOURCE_UNMARSHAL_HXX
32 #include "sal/config.h"
34 #include <vector>
36 #include "boost/noncopyable.hpp"
37 #include "com/sun/star/uno/Sequence.hxx"
38 #include "rtl/ref.hxx"
39 #include "sal/types.h"
40 #include "typelib/typedescription.hxx"
42 namespace binaryurp {
43 class BinaryAny;
44 class Bridge;
45 struct ReaderState;
47 namespace com { namespace sun { namespace star { namespace uno {
48 class TypeDescription;
49 } } } }
50 namespace rtl {
51 class ByteSequecne;
52 class OUString;
55 namespace binaryurp {
57 class Unmarshal: private boost::noncopyable {
58 public:
59 Unmarshal(
60 rtl::Reference< Bridge > const & bridge, ReaderState & state,
61 com::sun::star::uno::Sequence< sal_Int8 > const & buffer);
63 ~Unmarshal();
65 sal_uInt8 read8();
67 sal_uInt16 read16();
69 sal_uInt32 read32();
71 com::sun::star::uno::TypeDescription readType();
73 rtl::OUString readOid();
75 rtl::ByteSequence readTid();
77 BinaryAny readValue(com::sun::star::uno::TypeDescription const & type);
79 void done() const;
81 private:
82 void check(sal_Int32 size) const;
84 sal_uInt32 readCompressed();
86 sal_uInt16 readCacheIndex();
88 sal_uInt64 read64();
90 rtl::OUString readString();
92 BinaryAny readSequence(com::sun::star::uno::TypeDescription const & type);
94 void readMemberValues(
95 com::sun::star::uno::TypeDescription const & type,
96 std::vector< BinaryAny > * values);
98 rtl::Reference< Bridge > bridge_;
99 ReaderState & state_;
100 com::sun::star::uno::Sequence< sal_Int8 > buffer_;
101 sal_uInt8 const * data_;
102 sal_uInt8 const * end_;
107 #endif
109 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */