From 2037a72ac6122868515ca61aa960c389dc750f76 Mon Sep 17 00:00:00 2001 From: alestan Date: Thu, 8 Apr 2010 18:04:05 +0000 Subject: [PATCH] Added CFDataBase for handling generic python objects git-svn-id: svn://svn.code.sf.net/p/crossfire/code/maps/trunk@12874 282e977c-c81d-0410-88c4-b93c2d0d6712 --- python/CFDataBase.py | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 python/CFDataBase.py diff --git a/python/CFDataBase.py b/python/CFDataBase.py new file mode 100644 index 000000000..26d006058 --- /dev/null +++ b/python/CFDataBase.py @@ -0,0 +1,57 @@ +# CFBank.py - CFBank class +# +# Copyright (C) 2002 Joris Bontje +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# The author can be reached via e-mail at jbontje@suespammers.org +# +#Updated to use new path functions in CFPython -Todd Mitchell +#Duplicated from CFBank.py and modified to store arbitrary python objects - Alestan 2010 + +import os.path +import shelve + +import Crossfire + +class CFDataBase: + bankdb = {} + + def __init__(self, bankfile): + self.bankdb_file = os.path.join(Crossfire.LocalDirectory(), bankfile) + self.bankdb = shelve.open(self.bankdb_file, writeback=True) + + def store(self, name, value): + + self.bankdb[name]=value + + self.bankdb.sync() + + return 1 + + def get(self,name): + if name in self.bankdb: + return self.bankdb[name] + else: + return 0 + + def remove_record(self,name): + if name in self.bankdb: + del self.bankdb[name] + Crossfire.Log(Crossfire.LogDebug, "%s CFDataBase record removed." %name) + self.bankdb.sync() + return 1 + else: + return 0