1 #!/usr/bin/env python 2 3 """ 4 Core objects. 5 6 Copyright (C) 2015, 2016, 2017 Paul Boddie <paul@boddie.org.uk> 7 8 This program is free software; you can redistribute it and/or modify it under 9 the terms of the GNU General Public License as published by the Free Software 10 Foundation; either version 3 of the License, or (at your option) any later 11 version. 12 13 This program is distributed in the hope that it will be useful, but WITHOUT 14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 16 details. 17 18 You should have received a copy of the GNU General Public License along with 19 this program. If not, see <http://www.gnu.org/licenses/>. 20 """ 21 22 from native import get_using 23 24 class object: 25 26 "The root class of all objects except functions." 27 28 def __init__(self): 29 30 "No-operation." 31 32 pass 33 34 def __bool__(self): 35 36 "Objects are true by default." 37 38 return True 39 40 def __str__(self): 41 42 "Return a string representation." 43 44 return str(buffer(["<", self.__name__, " instance>"])) 45 46 __repr__ = __str__ 47 48 class module: 49 50 "The class of module objects." 51 52 def __init__(self): 53 54 """ 55 Reserve special attributes for module instances. 56 """ 57 58 self.__file__ = None 59 self.__mname__ = None 60 61 def __str__(self): 62 63 "Return a string representation." 64 65 return self.__mname__ 66 67 __repr__ = __str__ 68 69 class function: 70 71 """ 72 The class of all function objects. 73 Note that as a special case, function does not inherit from object. 74 """ 75 76 def __init__(self): 77 78 """ 79 Reserve special attributes for function instances. 80 """ 81 82 self.__fn__ = None 83 self.__args__ = None 84 self.__fname__ = None 85 86 def __bool__(self): 87 88 "Functions are true by default." 89 90 return True 91 92 def __str__(self): 93 94 "Return a string representation." 95 96 return self.__fname__ 97 98 __repr__ = __str__ 99 100 class type: 101 102 """ 103 The class of all classes. Methods of this class do not treat contexts as 104 instances, even though classes are meant to be instances of this class. 105 Instead, contexts are either classes or instances. 106 """ 107 108 def __str__(self): 109 110 "Return a string representation." 111 112 return self.__name__ 113 114 __repr__ = __str__ 115 116 class Exception: 117 118 "The root of all exception types." 119 120 pass 121 122 # Fundamental exceptions 123 124 class MemoryError(Exception): 125 126 "An error indicating failure to allocate or manage memory." 127 128 pass 129 130 class TypeError(Exception): 131 132 "An error indicating unsuitable type usage." 133 134 pass 135 136 class UnboundMethodInvocation(Exception): 137 138 "An error indicating an attempt to call an unbound method." 139 140 pass 141 142 class ArithmeticError(Exception): 143 144 "A general arithmetic operation error." 145 146 pass 147 148 class FloatingPointError(Exception): 149 150 "A floating point operation error." 151 152 pass 153 154 class OverflowError(ArithmeticError): 155 156 """ 157 Indicates that an arithmetic operation produced a result that could not be 158 represented. 159 """ 160 161 pass 162 163 class ZeroDivisionError(ArithmeticError): 164 165 "An error occurring when an attempt was made to divide an operand by zero." 166 167 pass 168 169 # vim: tabstop=4 expandtab shiftwidth=4