Jelajahi Sumber

make ConfigVariable look like a native Python object

David Rose 21 tahun lalu
induk
melakukan
c4670505ab

+ 47 - 0
direct/src/extensions/ConfigVariable-extensions.py

@@ -0,0 +1,47 @@
+
+    def __str__(self):
+        return self.getStringValue()
+
+    def __hash__(self):
+        raise AttributeError, "ConfigVariables are not immutable."
+
+    def ls(self):
+        from pandac.Notify import Notify
+        self.write(Notify.out())
+
+    def __int__(self):
+        return int(self.getValue())
+
+    def __long__(self):
+        return long(self.getValue())
+
+    def __float__(self):
+        return float(self.getValue())
+
+    def __nonzero__(self):
+        return bool(self.getValue())
+
+    def __oct__(self):
+        return oct(self.getValue())
+
+    def __hex__(self):
+        return hex(self.getValue())
+
+    def __cmp__(self, other):
+        return self.getValue().__cmp__(other)
+
+    def __coerce__(self, other):
+        return (self.getValue(), other)
+
+    def __len__(self):
+        return self.getNumWords()
+    
+    def __getitem__(self, n):
+        if n < 0 or n >= self.getNumWords():
+            raise IndexError
+        return self.getWord(n)
+
+    def __setitem__(self, n, value):
+        if n < 0 or n > self.getNumWords():
+            raise IndexError
+        self.setWord(n, value)

+ 5 - 0
direct/src/extensions/ConfigVariableBool-extensions.py

@@ -0,0 +1,5 @@
+    
+    def __getitem__(self, n):
+        if n < 0 or n >= self.getNumWords():
+            raise IndexError
+        return self.getWord(n)

+ 5 - 0
direct/src/extensions/ConfigVariableDouble-extensions.py

@@ -0,0 +1,5 @@
+    
+    def __getitem__(self, n):
+        if n < 0 or n >= self.getNumWords():
+            raise IndexError
+        return self.getWord(n)

+ 5 - 0
direct/src/extensions/ConfigVariableInt-extensions.py

@@ -0,0 +1,5 @@
+    
+    def __getitem__(self, n):
+        if n < 0 or n >= self.getNumWords():
+            raise IndexError
+        return self.getWord(n)

+ 11 - 0
direct/src/extensions/ConfigVariableString-extensions.py

@@ -0,0 +1,11 @@
+
+    def __len__(self):
+        return self.getValue().__len__()
+    
+    def __getitem__(self, n):
+        return self.getValue().__getitem__(n)
+    
+    def __setitem__(self, n):
+        value = self.getValue()
+        value.__setitem__(n)
+        self.assign(value)