From: Rajarshi G. <rg...@in...> - 2008-07-21 22:48:34
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, I'm looking at the SMARTS matcher and when performing a match on a molecule, it must perform some initialization. Now if one is matching multiple SMARTS against the same molecule, clearly there's no need for repeated initialization. A simple approach is to have a boolean flag indicating whether initialization should be performed. However a cleaner (from the user point of view) is to have the matcher cache the input container and check whether the new container is the same as that was cached. My question is: how should such a comparison be done? Should a cached container be the same as a new one, if it's the same object (in terms of reference)? My preference is this approach: if (cached == new) { // don't initialize } My view on checking by value (i.e., using equals()) would be wrong since though the new container might be the same thing as the cached one, since it's a separate object the initialization performed on the cached container is independent of the new one - hence the results on the new container would be wrong On a slightly related note, looking at ChemObject I see that it has a compare() method that is comparing the identifier field by reference. Is that meant to be the case (as opposed to comparing the string values themselves)? - ------------------------------------------------------------------- Rajarshi Guha <rg...@in...> GPG Fingerprint: D070 5427 CC5B 7938 929C DD13 66A1 922C 51E7 9E84 - ------------------------------------------------------------------- After a number of decimal places, nobody gives a damn. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (Darwin) iEYEARECAAYFAkiFEjsACgkQZqGSLFHnnoTcdACcCS2S+vBp6XwnhHkPA+JL37TS cbsAn2cfMGPoP+RWId/8l6TXWPKYNZcb =3CWy -----END PGP SIGNATURE----- |