From c4670505abdd05b6a0ae80911ff2e80c3aa0ab14 Mon Sep 17 00:00:00 2001 From: David Rose Date: Wed, 20 Oct 2004 13:23:34 +0000 Subject: [PATCH] make ConfigVariable look like a native Python object --- .../extensions/ConfigVariable-extensions.py | 47 +++++++++++++++++++ .../ConfigVariableBool-extensions.py | 5 ++ .../ConfigVariableDouble-extensions.py | 5 ++ .../ConfigVariableInt-extensions.py | 5 ++ .../ConfigVariableString-extensions.py | 11 +++++ 5 files changed, 73 insertions(+) create mode 100644 direct/src/extensions/ConfigVariable-extensions.py create mode 100644 direct/src/extensions/ConfigVariableBool-extensions.py create mode 100644 direct/src/extensions/ConfigVariableDouble-extensions.py create mode 100644 direct/src/extensions/ConfigVariableInt-extensions.py create mode 100644 direct/src/extensions/ConfigVariableString-extensions.py diff --git a/direct/src/extensions/ConfigVariable-extensions.py b/direct/src/extensions/ConfigVariable-extensions.py new file mode 100644 index 0000000000..ee9300db51 --- /dev/null +++ b/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) diff --git a/direct/src/extensions/ConfigVariableBool-extensions.py b/direct/src/extensions/ConfigVariableBool-extensions.py new file mode 100644 index 0000000000..7a5e492f32 --- /dev/null +++ b/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) diff --git a/direct/src/extensions/ConfigVariableDouble-extensions.py b/direct/src/extensions/ConfigVariableDouble-extensions.py new file mode 100644 index 0000000000..7a5e492f32 --- /dev/null +++ b/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) diff --git a/direct/src/extensions/ConfigVariableInt-extensions.py b/direct/src/extensions/ConfigVariableInt-extensions.py new file mode 100644 index 0000000000..7a5e492f32 --- /dev/null +++ b/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) diff --git a/direct/src/extensions/ConfigVariableString-extensions.py b/direct/src/extensions/ConfigVariableString-extensions.py new file mode 100644 index 0000000000..dc0599d764 --- /dev/null +++ b/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)