45 """Read CLID DataBase file"""
47 for cliddb in self.__cliddbs:
48 if os.path.isfile(cliddb):
49 with open(cliddb, 'r') as f_cliddb:
50 for row in csv.reader (f_cliddb, delimiter=';'):
51 row = [i.strip() for i in row]
55 tid_name = row[2] if len(row)>2 else class_name
57 self.__clidRep[clid] = class_name
58 self.__clidTid[clid] = tid_name
59 self.__nameRep[class_name] = clid
60 self.__tidRep [tid_name] = clid
63 print ("No CLID DataBase file <%s> " % cliddb)
64 except Exception as err:
65 print ("Error reading from CLID DataBase files <%s>:\n%s " % (
69 def setCLIDDB(self, db, debug):
70 """Initializes a CLID Generator object with a CLID Database"""
72 self.__cliddbs = search_files(db, os.getenv('DATAPATH'))
73 if debug: print ("Using specified CLID DataBase files %s " % self.__cliddbs)
74 elif os.getenv('CLIDDB'):
75 # CLID DataBase (Default = clid.db)
76 self.__cliddbs.append(os.getenv('CLIDDB'))
77 if debug: print ("Using DataBase file from CLIDDB env variable %s " % self.__cliddbs)
79 self.__cliddbs = search_files('clid.db', os.getenv('DATAPATH'))
80 if debug: print ("Using DataBase file from DATAPATH %s " % self.__cliddbs)
89 def genClidFromName(self,className):
90 """Generate CLID from ClassName: A recursive hash with a bit
91 mask and validity range. Will check collisions against and
92 update CLID Repository."""
93 n = self.demangleClassName(className)
94 c = self.getClidFromName(className)
97 c = py2_hash(className) & self.__mask
98 if c < 10001 or c > self.__mask:
99 c = self.genClidFromName(className+'_')
100 if self.isCollection(className):
102 if c in self.__clidRep:
103 if n != self.__clidRep[c]:
104 c = self.genClidFromName(className+'_')
106 self.__clidRep[c] = n
107 self.__clidTid[c] = n # make typeid name the same than class-name
108 self.__nameRep[n] = c
109 self.__tidRep [n] = c # idem
141 def findPattern(self,s):
142 """Find the regular expression pattern s in dictionary."""
143# pat = re.compile('^'+s+'$')
146 for k in self.__clidRep.keys():
147 if pat.match(str(k)) or pat.match(self.__clidRep[k]):
148 results[k] = self.__clidRep[k]