1 #!/usr/bin/env python 2 3 """ 4 Core objects. 5 6 Copyright (C) 2015, 2016 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 BaseException: 117 118 "The root of all exception types." 119 120 pass 121 122 class Exception(BaseException): pass 123 class MemoryError(Exception): pass 124 class OverflowError(Exception): pass 125 class TypeError(Exception): pass 126 class UnboundMethodInvocation(Exception): pass 127 class Warning: pass 128 class ZeroDivisionError(Exception): pass 129 130 # vim: tabstop=4 expandtab shiftwidth=4