summaryrefslogtreecommitdiff
path: root/rsc/inc/rscerror.h
blob: 7cab3d52cefea09e90a2c5154ce63b7bf666f0cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */

#include <sal/types.h>

#ifndef INCLUDED_RSC_INC_RSCERROR_H
#define INCLUDED_RSC_INC_RSCERROR_H

// Return errors
#define ERR_OK              0xFFFFFFFF

#define ERR_ERROR           0x0100
#define ERR_UNKNOWN_METHOD  0x0101  // Return
#define ERR_OPENFILE        0x0102  // Return
#define ERR_NOCHAR          0x0103  // Return
#define ERR_NORSCINST       0x0104  // Return
#define ERR_USAGE           0x0105
#define ERR_NOINPUT         0x0106  // Return
#define ERR_UNKNOWNSW       0x0107
#define ERR_REFTODEEP       0x0108  // Return
#define ERR_FILEFORMAT      0x0109  // Return
#define ERR_FILESIZE        0x010A  // Return
#define ERR_RENAMEFILE      0x010B  // Return
#define ERR_NOIMAGE         0x010C  // Return

#define ERR_RSCRANGE        0x0200  // Return
#define ERR_RSCRANGE_OUTDEFSET  (ERR_RSCRANGE +1 )

#define ERR_RSCENUM         0x0210  // Return
#define ERR_RSCFLAG         0x0220  // Return
#define ERR_RSCCONT         0x0240  // Return
#define ERR_CONT_INVALIDPOS     (ERR_RSCCONT +1 ) // Return
#define ERR_CONT_INVALIDTYPE    (ERR_RSCCONT +2 ) // Return

#define ERR_RSCCMPED        0x0250
#define ERR_RSCINST         0x0260
#define ERR_RSCINST_NOVARNAME   (ERR_RSCINST +1 ) // Return
#define ERR_RSCINST_RESERVEDNAME (ERR_RSCINST +2 ) // Return

#define ERR_LEX             0x0270
#define ERR_YACC            0x0280
#define ERR_DOUBLEID            (ERR_YACC    +1 )
#define ERR_FALSETYPE           (ERR_YACC    +2 )
#define ERR_NOVARIABLENAME      (ERR_YACC    +3 )
#define ERR_USHORTRANGE         (ERR_YACC    +4 )
#define ERR_IDRANGE             (ERR_YACC    +5 )
#define ERR_NOCOPYOBJ           (ERR_YACC    +6 )
#define ERR_REFNOTALLOWED       (ERR_YACC    +7 ) // Return
#define ERR_DOUBLEDEFINE        (ERR_YACC    +8 )
#define ERR_COPYNOTALLOWED      (ERR_YACC    +9 )
#define ERR_IDEXPECTED          (ERR_YACC    +10)
#define ERR_ZERODIVISION        (ERR_YACC    +11)
#define ERR_PRAGMA              (ERR_YACC    +12)
#define ERR_DECLAREDEFINE       (ERR_YACC    +13)
#define ERR_NOTUPELNAME         (ERR_YACC    +14)
#define ERR_NOTYPE              (ERR_YACC    +15)

#define ERR_RSCARRAY         0x02A0  // Return
#define ERR_ARRAY_INVALIDINDEX  (ERR_RSCARRAY +1 ) // Return

#define ERR_ERROREND                0x1000

#define ERR_WARNINGSTART        0x1001
#define WRN_LOCALID             (ERR_WARNINGSTART +1 )
#define WRN_GLOBALID            (ERR_WARNINGSTART +2 )
#define WRN_SUBINMEMBER         (ERR_WARNINGSTART +3 )
#define WRN_CONT_NOID           (ERR_WARNINGSTART +4 )
#define WRN_STR_REFNOTFOUND     (ERR_WARNINGSTART +5 )
#define WRN_MGR_REFNOTFOUND     (ERR_WARNINGSTART +6 )
#define WRN_CONT_DOUBLEID       (ERR_WARNINGSTART +7 )

#define ERR_WARNINGEND      0x2000

class ERRTYPE
{
    sal_uInt32  nError;
public:
    ERRTYPE()                { nError = ERR_OK; }
    ERRTYPE( sal_uInt32 nErr )   { nError = nErr; }
    ERRTYPE( const ERRTYPE & rErr ) { nError = rErr.nError; }
    ERRTYPE& operator = ( const ERRTYPE & rError );
    operator sal_uInt32() const { return( nError ); }
    bool IsError() const     { return nError <= ERR_ERROREND; }
    bool IsOk() const        { return !IsError(); }
    bool IsWarning() const   { return nError >= ERR_WARNINGSTART && nError <= ERR_WARNINGEND;}
    void Clear(){ nError = ERR_OK; }
};

// Rsc Error
class RscId;
class RscTop;

enum RscVerbosity
{
    RscVerbositySilent = 0,
    RscVerbosityNormal = 1,
    RscVerbosityVerbose = 2
};

class RscError
{
    FILE *  fListing;
    RscVerbosity m_verbosity;

    void WriteError( const ERRTYPE& rError, const char * pMessage );
    void StdLstOut( const char * pStr );
    void StdLstErr( const char * pStr );
    void ErrorFormat( const ERRTYPE& rError, RscTop * pClass,
                      const RscId & aId );
public:
    virtual ~RscError() {}

    sal_uInt32  nErrors;// Anzahl der Fehler
                    RscError( RscVerbosity _verbosity )
                        {
                            fListing = NULL;
                            nErrors = 0;
                            m_verbosity = _verbosity;
                        }
    void            SetListFile( FILE * fList ){ fListing = fList; }
    FILE *          GetListFile(){ return fListing; }
    RscVerbosity    GetVerbosity() const { return m_verbosity; }
    virtual void    StdOut( const char *, const RscVerbosity _verbosityLevel = RscVerbosityNormal );
    virtual void    StdErr( const char * );
    virtual void    LstOut( const char * );
    virtual void    Error( const ERRTYPE& rError, RscTop* pClass, const RscId &aId,
                           const char * pMessage = NULL );
    // Dieser Fehler sollte nur im Compilermodus auftreten,
    // das Programm wird mit exit() verlassen
    virtual void    FatalError( const ERRTYPE& rError, const RscId &aId,
                                const char * pMessage = NULL );
};

#endif // INCLUDED_RSC_INC_RSCERROR_H

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