Interesting tip - even more so - interesting function. Your UDF returns
the UDF - what happens if you call it? :)

========================================================================
===
Raymond Camden, ColdFusion Jedi Master for Mindseye, Inc
(www.mindseye.com)
Member of Team Macromedia (http://www.macromedia.com/go/teammacromedia)

Email    : [EMAIL PROTECTED]
Blog     : www.camdenfamily.com/morpheus/blog
Yahoo IM : morpheus

"My ally is the Force, and a powerful ally it is." - Yoda 

> -----Original Message-----
> From: Matt Liotta [mailto:[EMAIL PROTECTED] 
> Sent: Tuesday, August 19, 2003 7:54 PM
> To: CF-Talk
> Subject: Re: Uniquely identifying a function
> 
> 
> BTW, you can get the name of the CFM that the function is 
> defined in by 
> calling the getPagePath() method of the function. See the following 
> example.
> 
> <cffunction name="foobar">
>       <cfreturn foobar>
> </cffunction>
> <cfdump var="#foobar.getPagePath()#">
> 
> -Matt
> 
> On Tuesday, August 19, 2003, at 06:49 PM, Tim Blair wrote:
> 
> >> Obviously, your function names must be unique per CFM, so 
> the unique 
> >> name for all functions is a concatenation of the CFM name and the 
> >> function name.
> >
> > Indeed that is true, the problem comes when I'm trying to work out
> > which CFM page contains the function: I'm performing the key 
> > generation from within the CFC, so it's a bit of a hassle 
> to work out 
> > where the function "came from".  Any way, the toString() method I 
> > provided initially basically does what you have stated, in a round 
> > about kind of way.
> >
> >> Here is a quick UDF (read not tested) that does what you need. ...
> >>            return theName.hashCode();
> >
> > That's not going to identify a function uniquely - the hashCode()
> > method will return the hashcode for the theName variable, 
> not for the 
> > function.  If I called the method again with exactly the 
> same value, 
> > it'd return a different hashcode.
> >
> > Saying that however, using hashCode() against the function directly
> > _will_ work and also saves on the hash() call.  I can 
> replace the key 
> > generation line:
> >
> > <cfset key = this.KEYPREFIX & hash(myFuncRef.toString())>
> >
> > with the following, removing one method call per generation 
> (not much,
> > but I'm sure they'll all add up, especially as it's a 
> crypto function 
> > call I'm removing) and guaranteeing the key is unique (and 
> always the 
> > same) for that function:
> >
> > <cfset key = this.KEYPREFIX & myFuncRef.hashCode())>
> >
> > For those that are wondering, the hashCode() method is a java method
> > implemented in the base Object class that all other classes extend 
> > from by default.  By definition it is guaranteed to return a unique 
> > (integer) ID for each object and if the function is called 
> on the same 
> > object more than once during the lifetime of the Java application 
> > (i.e. CFMX), the same hash code will be returned on each call.  
> > Generally, the unique ID is generated from the internal 
> memory address 
> > of the given object.
> >
> > Additionally, the key generated by the hashCode() method is much
> > shorter than using a hash(toString()) representation (8 or so bytes 
> > compared to 32) so storing the key in memory won't eat up 
> so much RAM. 
> >  Not exactly the biggest gain in the world but sometimes every byte 
> > counts...  ;)
> >
> > Cheers for the pointer Matt, even if it wasn't exactly what you
> > meant...  ;)
> >
> >> You might also be interested in the following Java class
> >
> > That's cool, but surely the toString() method I stated returns
> > (basically) this info anyway, but it is more relevant for the use I 
> > need because it also includes the sub-class for the function 
> > reference.  Ta anyway - may well come in useful at some point!
> >
> > The question still remains, is this a sensible way to go?  No one's
> > come down on me like a ton of bricks so I'm guessing it's OK...
> >
> > Tim.
> >
> > -------------------------------------------------------
> > RAWNET LTD - Internet, New Media and ebusiness Gurus.
> > Visit our new website at http://www.rawnet.com for
> > more information about our company, or call us free
> > anytime on 0800 294 24 24.
> > -------------------------------------------------------
> > Tim Blair
> > Web Application Engineer, Rawnet Limited
> > Direct Phone : +44 (0) 1344 393 441
> > Switchboard : +44 (0) 1344 393 040
> > -------------------------------------------------------
> > This message may contain information which is legally privileged 
> > and/or confidential. If you are not the intended recipient, you are 
> > hereby notified that any unauthorised disclosure, copying, 
> > distribution or use of this information is strictly prohibited. Such
> > notification notwithstanding, any comments, opinions,
> > information or conclusions expressed in this message
> > are those of the originator, not of rawnet limited,
> > unless otherwise explicitly and independently indicated
> > by an authorised representative of rawnet limited.
> > -------------------------------------------------------
> > 
> 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/lists.cfm?link=t:4
Subscription: http://www.houseoffusion.com/lists.cfm?link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

This list and all House of Fusion resources hosted by CFHosting.com. The place for 
dependable ColdFusion Hosting.
http://www.cfhosting.com

Reply via email to