tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Error.h (7580B)


      1 /*  GRAPHITE2 LICENSING
      2 
      3    Copyright 2013, SIL International
      4    All rights reserved.
      5 
      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.
     10 
     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.
     15 
     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.
     21 
     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
     28 
     29 // numbers are explicitly assigned for future proofing
     30 
     31 namespace graphite2
     32 {
     33 
     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); }
     42 
     43 private:
     44    int _e;
     45 };
     46 
     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 };
     58 
     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    E_BADACOLLISION = 53,   // Bad Silf table collision attribute number (too high)
    115    E_BADEMPTYPASS = 54,    // Can't have empty passes (no rules) except for collision passes
    116    E_BADSILFVERSION = 55,  // The Silf table has a bad version (probably too high)
    117    E_BADCOLLISIONPASS = 56,    // Collision flags set on a non positioning pass
    118    E_BADNUMCOLUMNS = 57,   // Arbitrarily limit number of columns in fsm
    119 // Code errors
    120    E_CODEFAILURE = 60,     // Base code error. The following subcodes must align with Machine::Code::status_t in Code.h
    121    E_CODEALLOC = 61,       // Out of memory
    122    E_INVALIDOPCODE = 62,   // Invalid op code
    123    E_UNIMPOPCODE = 63,     // Unimplemented op code encountered
    124    E_OUTOFRANGECODE = 64,  // Code argument out of range
    125    E_BADJUMPCODE = 65,     // Code jumps past end of op codes
    126    E_CODEBADARGS = 66,     // Code arguments exhausted
    127    E_CODENORETURN = 67,    // Missing return type op code at end of code
    128    E_CODENESTEDCTXT = 68,   // Nested context encountered in code
    129 // Compression errors
    130    E_BADSCHEME = 69,
    131    E_SHRINKERFAILED = 70,
    132 };
    133 
    134 }