gfx/graphite2/src/inc/Error.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /*  GRAPHITE2 LICENSING
     3     Copyright 2013, SIL International
     4     All rights reserved.
     6     This library is free software; you can redistribute it and/or modify
     7     it under the terms of the GNU Lesser General Public License as published
     8     by the Free Software Foundation; either version 2.1 of License, or
     9     (at your option) any later version.
    11     This program is distributed in the hope that it will be useful,
    12     but WITHOUT ANY WARRANTY; without even the implied warranty of
    13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    14     Lesser General Public License for more details.
    16     You should also have received a copy of the GNU Lesser General Public
    17     License along with this library in the file named "LICENSE".
    18     If not, write to the Free Software Foundation, 51 Franklin Street, 
    19     Suite 500, Boston, MA 02110-1335, USA or visit their web page on the 
    20     internet at http://www.fsf.org/licenses/lgpl.html.
    22 Alternatively, the contents of this file may be used under the terms of the
    23 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
    24 License, as published by the Free Software Foundation, either version 2
    25 of the License or (at your option) any later version.
    26 */
    27 #pragma once
    29 // numbers are explicitly assigned for future proofing
    31 namespace graphite2
    32 {
    34 class Error
    35 {
    36 public:
    37     Error() : _e(0) {};
    38     operator bool() { return (_e != 0); }
    39     int error() { return _e; }
    40     void error(int e) { _e = e; }
    41     bool test(bool pr, int err) { return (_e = int(pr) * err); }
    43 private:
    44     int _e;
    45 };
    47 enum errcontext {
    48     EC_READGLYPHS = 1,      // while reading glyphs
    49     EC_READSILF = 2,        // in Silf table
    50     EC_ASILF = 3,           // in Silf %d
    51     EC_APASS = 4,           // in Silf %d, pass %d
    52     EC_PASSCCODE = 5,       // in pass constraint code for Silf %d, pass %d
    53     EC_ARULE = 6,           // in Silf %d, pass %d, rule %d
    54     EC_ASTARTS = 7,         // in Silf %d, pass %d, start state %d
    55     EC_ATRANS = 8,          // in Silf %d, pass %d, fsm state %d
    56     EC_ARULEMAP = 9         // in Silf %d, pass %d, state %d
    57 };
    59 enum errors {
    60     E_OUTOFMEM = 1,         // Out of memory
    61     E_NOGLYPHS = 2,         // There are no glyphs in the font
    62     E_BADUPEM = 3,          // The units per em for the font is bad (0)
    63     E_BADCMAP = 4,          // The font does not contain any useful cmaps
    64     E_NOSILF = 5,           // Missing Silf table
    65     E_TOOOLD = 6,           // Silf table version is too old
    66     E_BADSIZE = 7,          // context object has the wrong structural size
    67 // Silf Subtable Errors take a Silf subtable number * 256 in the context
    68     E_BADMAXGLYPH = 8,      // Silf max glyph id is too high
    69     E_BADNUMJUSTS = 9,      // Number of Silf justification blocks is too high
    70     E_BADENDJUSTS = 10,     // Silf justification blocks take too much of the Silf table space
    71     E_BADCRITFEATURES = 11, // Critical features section in a Silf table is too big
    72     E_BADSCRIPTTAGS = 12,   // Silf script tags area is too big
    73     E_BADAPSEUDO = 13,      // The pseudo glyph attribute number is too high
    74     E_BADABREAK = 14,       // The linebreak glyph attribute number is too high
    75     E_BADABIDI = 15,        // The bidi glyph attribute number is too high
    76     E_BADAMIRROR = 16,      // The mirrored glyph attribute number is too high
    77     E_BADNUMPASSES = 17,    // The number of passes is > 128
    78     E_BADPASSESSTART = 18,  // The Silf table is too small to hold any passes
    79     E_BADPASSBOUND = 19,    // The positioning pass number is too low or the substitution pass number is too high
    80     E_BADPPASS = 20,        // The positioning pass number is too high
    81     E_BADSPASS = 21,        // the substitution pass number is too high
    82     E_BADJPASSBOUND = 22,   // the justification pass must be higher than the positioning pass
    83     E_BADJPASS = 23,        // the justification pass is too high
    84     E_BADALIG = 24,         // the number of initial ligature component glyph attributes is too high
    85     E_BADBPASS = 25,        // the bidi pass number is specified and is either too high or too low
    86     E_BADNUMPSEUDO = 26,    // The number of pseudo glyphs is too high
    87     E_BADCLASSSIZE = 27,    // The size of the classes block is bad
    88     E_TOOMANYLINEAR = 28,   // The number of linear classes in the silf table is too high
    89     E_CLASSESTOOBIG = 29,   // There are too many classes for the space allocated in the Silf subtable
    90     E_MISALIGNEDCLASSES = 30,   // The class offsets in the class table don't line up with the number of classes
    91     E_HIGHCLASSOFFSET = 31, // The class offsets point out of the class table
    92     E_BADCLASSOFFSET = 32,  // A class offset is less than one following it
    93     E_BADCLASSLOOKUPINFO = 33,  // The search header info for a non-linear class has wrong values in it
    94 // Pass subtable errors. Context has pass number * 65536
    95     E_BADPASSSTART = 34,    // The start offset for a particular pass is bad
    96     E_BADPASSEND = 35,      // The end offset for a particular pass is bad
    97     E_BADPASSLENGTH = 36,   // The length of the pass is too small
    98     E_BADNUMTRANS = 37,     // The number of transition states in the fsm is bad
    99     E_BADNUMSUCCESS = 38,   // The number of success states in the fsm is bad
   100     E_BADNUMSTATES = 39,    // The number of states in the fsm is bad
   101     E_NORANGES = 40,        // There are no columns in the fsm
   102     E_BADRULEMAPLEN = 41,   // The size of the success state to rule mapping is bad
   103     E_BADCTXTLENBOUNDS = 42,    // The precontext maximum is greater than its minimum
   104     E_BADCTXTLENS = 43,     // The lists of rule lengths or pre context lengths is bad
   105     E_BADPASSCCODEPTR = 44, // The pass constraint code position does not align with where the forward reference says it should be
   106     E_BADRULECCODEPTR = 45, // The rule constraint code position does not align with where the forward reference says it should be
   107     E_BADCCODELEN = 46,     // Bad rule/pass constraint code length
   108     E_BADACTIONCODEPTR = 47,    // The action code position does not align with where the forward reference says it should be
   109     E_MUTABLECCODE = 48,    // Constraint code edits slots. It shouldn't.
   110     E_BADSTATE = 49,        // Bad state transition referencing an illegal state
   111     E_BADRULEMAPPING = 50,  // The structure of the rule mapping is bad
   112     E_BADRANGE = 51,        // Bad column range structure including a glyph in more than one column
   113     E_BADRULENUM = 52,      // A reference to a rule is out of range (too high)
   114 // Code errors
   115     E_CODEFAILURE = 60,     // Base code error. The following subcodes must align with Machine::Code::status_t in Code.h
   116         E_CODEALLOC = 61,       // Out of memory
   117         E_INVALIDOPCODE = 62,   // Invalid op code
   118         E_UNIMPOPCODE = 63,     // Unimplemented op code encountered
   119         E_OUTOFRANGECODE = 64,  // Code argument out of range
   120         E_BADJUMPCODE = 65,     // Code jumps past end of op codes
   121         E_CODEBADARGS = 66,     // Code arguments exhausted
   122         E_CODENORETURN = 67,    // Missing return type op code at end of code
   123         E_CODENESTEDCTXT = 68   // Nested context encountered in code
   124 };
   126 }

mercurial