Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Pygments / examplefiles / output / CPDictionary.j
Size: Mime:
€]q(cpygments.token
_TokenType
qXCommentqX	Multilineq†q…qq}q(Xsubtypesqcbuiltins
set
q	]q
…qRqXparentq
hh…q…qq}q(hh	]q(hhXPreprocq†q…qq}q(hh	]q…qRqh
hubhhXMultiq†q…qq}q(hh	]q …q!Rq"h
hubhhXHashbangq#†q$…q%q&}q'(hh	]q(…q)Rq*h
hubhhXSingleq+†q,…q-q.}q/(hh	]q0…q1Rq2h
hubhhX
SingleLineq3†q4…q5q6}q7(hh	]q8…q9Rq:h
hubhhXDocq;†q<…q=q>}q?(hh	]q@…qARqBh
hubhhX	DirectiveqC†qD…qEqF}qG(hh	]qH…qIRqJh
hubhhhX
SinglelineqK†qL…qMqN}qO(hh	]qP…qQRqRh
hubhhXPreprocFileqS†qT…qUqV}qW(hh	]qX…qYRqZh
hubhhXSpecialq[†q\…q]q^}q_(hh	]q`…qaRqbh
hube…qcRqdh
h)…qeqf}qg(hh	]qh(hXEscapeqi…qj…qkql}qm(hh	]qn…qoRqph
hfubhXOperatorqq…qr…qsqt}qu(hh	]qv(hhqXDBSqw†qx…qyqz}q{(hh	]q|…q}Rq~h
htubhhqXWordq†q€…qq‚}qƒ(hh	]q„…q…Rq†h
htube…q‡Rqˆh
hfhh‚hwhzubhXNameq‰…qŠ…q‹qŒ}q(hh	]qŽ(hh‰XTagq†q…q‘q’}q“(hh	]q”…q•Rq–h
hŒubhh‰XEntityq—†q˜…q™qš}q›(hh	]qœhh‰h—hw‡q…qžqŸ}q (hh	]q¡…q¢Rq£h
hšuba…q¤Rq¥h
hŒhwhŸubhh‰X	Exceptionq¦†q§…q¨q©}qª(hh	]q«…q¬Rq­h
hŒubhh‰X	Decoratorq®†q¯…q°q±}q²(hh	]q³…q´Rqµh
hŒubhh‰XClassq¶†q·…q¸q¹}qº(hh	]q»(hh‰h¶hw‡q¼…q½q¾}q¿(hh	]qqÁRqÂh
h¹ubhh‰h¶XStartqÇqąqŁqÆ}qÇ(hh	]qȅqÉRqÊh
h¹ube…qËRqÌh
hŒhÃhÆhwh¾ubhh‰XVariableq͆q΅qρqÐ}qÑ(hh	]qÒ(hh‰hÍX	AnonymousqӇqԅqՁqÖ}q×(hh	]q؅qÙRqÚh
hÐubhh‰hÍh¶‡qۅq܁qÝ}qÞ(hh	]q߅qàRqáh
hÐubhh‰hÍXMagicqâ‡qã…qäqå}qæ(hh	]qç…qèRqéh
hÐubhh‰hÍXGlobalqê‡që…qìqí}qî(hh	]qï…qðRqñh
hÐubhh‰hÍXInstanceqò‡qó…qôqõ}qö(hh	]q÷…qøRqùh
hÐube…qúRqûh
hŒh¶hÝhêhíhòhõhâhåhÓhÖubhh‰X	Attributeqü†qý…qþqÿ}r(hh	]rhh‰hüh͇r…rr}r(hh	]r…rRrh
hÿuba…r	Rr
h
hŒhÍjubhh‰X	Namespacer†r…r
r}r(hh	]r…rRrh
hŒubhh‰XPropertyr†r…rr}r(hh	]r…rRrh
hŒubhh‰XSymbolr†r…rr}r(hh	]r …r!Rr"h
hŒubhh‰XClassesr#†r$…r%r&}r'(hh	]r(…r)Rr*h
hŒubhh‰XPseudor+†r,…r-r.}r/(hh	]r0…r1Rr2h
hŒubhh‰XLabelr3†r4…r5r6}r7(hh	]r8…r9Rr:h
hŒubhh‰hq†r;…r<r=}r>(hh	]r?…r@RrAh
hŒubhh‰XBuiltinrB†rC…rDrE}rF(hh	]rG(hh‰jBj+‡rH…rIrJ}rK(hh	]rL…rMRrNh
jEubhh‰jBXTyperO‡rP…rQrR}rS(hh	]rT…rURrVh
jEube…rWRrXh
hŒj+jJjOjRubhh‰XFieldrY†rZ…r[r\}r](hh	]r^…r_Rr`h
hŒubhh‰XOtherra†rb…rcrd}re(hh	]rfhh‰jaXMemberrg‡rh…rirj}rk(hh	]rl…rmRrnh
jduba…roRrph
hŒjgjjubhh‰XFunctionrq†rr…rsrt}ru(hh	]rvhh‰jqhâ‡rw…rxry}rz(hh	]r{…r|Rr}h
jtuba…r~Rrh
hŒhâjyubhh‰jO†r€…rr‚}rƒ(hh	]r„…r…Rr†h
hŒubhh‰XConstantr‡†rˆ…r‰rŠ}r‹(hh	]rŒ…rRrŽh
hŒube…rRrh
hfhühÿjBjEh¶h¹j‡jŠh®h±h—hšh¦h©jqjtjjj3j6jjjajdhh’hÍhÐjYj\jjj+j.hqj=j#j&jOj‚ubhXLiteralr‘…r’…r“r”}r•(hh	]r–(hj‘ja†r—…r˜r™}rš(hh	]r›…rœRrh
j”ubhj‘XCharrž†rŸ…r r¡}r¢(hh	]r£…r¤Rr¥h
j”ubhj‘XDater¦†r§…r¨r©}rª(hh	]r«…r¬Rr­h
j”ubhj‘XScalarr®†r¯…r°r±}r²(hh	]r³hj‘j®XPlainr´‡rµ…r¶r·}r¸(hh	]r¹…rºRr»h
j±uba…r¼Rr½h
j”j´j·ubhj‘XStringr¾†r¿…rÀrÁ}rÂ(hh	]rÃ(hj‘j¾XInterpolrćrÅ…rƁrÇ}rÈ(hh	]rÉ…rÊRrËh
jÁubhj‘j¾X	DelimeterṙrÍ…r΁rÏ}rÐ(hh	]rÑ…rÒRrÓh
jÁubhj‘j¾jž‡rÔ…rՁrÖ}r×(hh	]rØ…rÙRrÚh
jÁubhj‘j¾j‡rÛ…r܁rÝ}rÞ(hh	]rß…ràRráh
jÁubhj‘j¾h+‡râ…rãrä}rå(hh	]ræ…rçRrèh
jÁubhj‘j¾ja‡ré…rêrë}rì(hh	]rí…rîRrïh
jÁubhj‘j¾XBacktickrð‡rñ…ròró}rô(hh	]rõ…röRr÷h
jÁubhj‘j¾hi‡rø…rùrú}rû(hh	]rü…rýRrþh
jÁubhj‘j¾XRegexrÿ‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾XMomentr‡r…r	r
}r(hh	]r…r
Rrh
jÁubhj‘j¾XBooleanr‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾X	Characterr‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾X	Delimiterr‡r …r!r"}r#(hh	]r$…r%Rr&h
jÁubhj‘j¾h;‡r'…r(r)}r*(hh	]r+…r,Rr-h
jÁubhj‘j¾h‰‡r.…r/r0}r1(hh	]r2…r3Rr4h
jÁubhj‘j¾XAffixr5‡r6…r7r8}r9(hh	]r:…r;Rr<h
jÁubhj‘j¾XHeredocr=‡r>…r?r@}rA(hh	]rB…rCRrDh
jÁubhj‘j¾XDoublerE‡rF…rGrH}rI(hh	]rJ…rKRrLh
jÁubhj‘j¾XInterprM‡rN…rOrP}rQ(hh	]rR…rSRrTh
jÁubhj‘j¾XAtomrU‡rV…rWrX}rY(hh	]rZ…r[Rr\h
jÁube…r]Rr^h
j”j5j8jðjójžjÖjj"h;j)jEjHhijúj=j@jÄjÇjajëjÿjh+jäjjÝjjjj
jMjPjjjÌjÏjUjXh‰j0ubhj‘XNumberr_†r`…rarb}rc(hh	]rd(hj‘j_XFloatre‡rf…rgrh}ri(hh	]rj…rkRrlh
jbubhj‘j_XDecrm‡rn…rorp}rq(hh	]rr…rsRrth
jbubhj‘j_XRadixru‡rv…rwrx}ry(hh	]rz…r{Rr|h
jbubhj‘j_XOctr}‡r~…rr€}r(hh	]r‚…rƒRr„h
jbubhj‘j_XBinr…‡r†…r‡rˆ}r‰(hh	]rŠ…r‹RrŒh
jbubhj‘j_hü‡r…rށr}r(hh	]r‘…r’Rr“h
jbubhj‘j_XHexr”‡r•…r–r—}r˜(hh	]r™…ršRr›h
jbubhj‘j_XIntegerrœ‡r…ržrŸ}r (hh	]r¡h(j‘j_jœXLongr¢tr£…r¤r¥}r¦(hh	]r§…r¨Rr©h
jŸuba…rªRr«h
jbj¢j¥ubhj‘j_XDecimalr¬‡r­…r®r¯}r°(hh	]r±…r²Rr³h
jbube…r´Rrµh
j”j…jˆjejhj”j—jœjŸj}j€jujxhüjj¬j¯jmjpube…r¶Rr·h
hfj¾jÁj_jbj¦j©j®j±jaj™jžj¡ubhXGenericr¸…r¹…rºr»}r¼(hh	]r½(hj¸XErrorr¾†r¿…rÀrÁ}rÂ(hh	]rÃ…rÄRrÅh
j»ubhj¸X
SubheadingrƆrÇ…rȁrÉ}rÊ(hh	]rË…rÌRrÍh
j»ubhj¸X	TracebackrΆrÏ…rЁrÑ}rÒ(hh	]rÓ…rÔRrÕh
j»ubhj¸XOutputrÖ†r×…r؁rÙ}rÚ(hh	]rÛ…rÜRrÝh
j»ubhj¸XPromptrÞ†rß…ràrá}râ(hh	]rã…räRråh
j»ubhj¸XDeletedræ†rç…rèré}rê(hh	]rë…rìRríh
j»ubhj¸XInsertedrî†rï…rðrñ}rò(hh	]ró…rôRrõh
j»ubhj¸XHeadingrö†r÷…rørù}rú(hh	]rû…rüRrýh
j»ubhj¸XStrongrþ†rÿ…rr}r(hh	]r…rRrh
j»ubhj¸XEmphr†r…rr	}r
(hh	]r…rRr
h
j»ube…rRrh
hfjæjéjj	j¾jÁjöjùjîjñjÖjÙjÞjájþjjÆjÉjÎjÑubhj¾…r…rr}r(hh	]r…rRrh
hfubhXKeywordr…r…rr}r(hh	]r(hjh†r…rr}r (hh	]r!…r"Rr#h
jubhjj†r$…r%r&}r'(hh	]r(…r)Rr*h
jubhjjO†r+…r,r-}r.(hh	]r/…r0Rr1h
jubhjXPreProcr2†r3…r4r5}r6(hh	]r7…r8Rr9h
jubhjXControlr:†r;…r<r=}r>(hh	]r?…r@RrAh
jubhjj‡†rB…rCrD}rE(hh	]rF…rGRrHh
jubhjj†rI…rJrK}rL(hh	]rM…rNRrOh
jubhjj+†rP…rQrR}rS(hh	]rT…rURrVh
jubhjXDeclarationrW†rX…rYrZ}r[(hh	]r\…r]Rr^h
jubhjXReservedr_†r`…rarb}rc(hh	]rd…reRrfh
jube…rgRrhh
hfj‡jDjWjZjjKj+jRj_jbjOj-j:j=jj&j2j5hjubhja…ri…rjrk}rl(hh	]rm…rnRroh
hfubhXTextrp…rq…rrrs}rt(hh	]ru(hjpXRootrv†rw…rxry}rz(hh	]r{…r|Rr}h
jsubhjpj†r~…rr€}r(hh	]r‚…rƒRr„h
jsubhjpXRagr…†r†…r‡rˆ}r‰(hh	]rŠ…r‹RrŒh
jsubhjpX
Whitespacer†rŽ…rr}r‘(hh	]r’…r“Rr”h
jsubhjpXBeerr•†r–…r—r˜}r™(hh	]rš…r›Rrœh
jsubhjpXPunctuationr†rž…rŸr }r¡(hh	]r¢…r£Rr¤h
jsube…r¥Rr¦h
hfjjjj€jj jvjyj•j˜j…jˆubhhj…r§…r¨r©}rª(hh	]r«hjX	Indicatorr¬†r­…r®r¯}r°(hh	]r±…r²Rr³h
j©uba…r´Rrµh
hfj¬j¯ube…r¶Rr·jpjshihlj¾jjajkjjh‰hŒj‘j”jj©hqhthhj¸j»XTokenr¸hfj¾jÁj_jbubh#h&hhhhhShVh+h.h[h^hChFh3h6h;h>hhhKhNububXS/*
 * CPDictionary.j
 * Foundation
 *
 * Created by Francisco Tolmasky.
 * Copyright 2008, 280 North, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 */r¹†rºjsX
r»†r¼jsj»†r½h.X//@import "CPRange.j"
r¾†r¿hX@importrÀ†rÁjsX r†rÃjHX"CPObject.j"rĆrÅjsj»†rÆhX@importrdžrÈjsj†rÉjHX"CPEnumerator.j"rʆrËjsj»†rÌhX@importr͆rÎjsj†rÏjHX"CPException.j"rІrÑjsj»†rÒjsj»†rÓhX
/* @ignore */rÔ†rÕjsj»†rÖjX@implementationr׆rØjsj†rÙh¹X_CPDictionaryValueEnumeratorrÚ†rÛjsj†rÜhtX:r݆rÞjsj†rßh¹XCPEnumeratorrà†rájsj»†râj©X{rã†räjsj»†råjsX    ræ†rçhŒXCPEnumeratorrè†réjsX    rê†rëhŒX_keyEnumeratorrì†ríj©X;rî†rïjsj»†rðjsX    rñ†ròhŒXCPDictionaryró†rôjsX    rõ†röhŒX_dictionaryr÷†røj©jî†rùjsj»†rúj©X}rû†rüjsj»†rýjsj»†rþhtX-rÿ†rjsj†rj©X(r†rj-Xidr†rj©X)r†rjtXinitWithDictionary:r†r	j©j†r
j-XCPDictionaryr†rj©j†r
jsXaDictionaryr†rjsj»†rj©jã†rjsj»†rjsX    r†rjEXselfr†rjsj†rhtX=r†rjsj†rj©X[r†rjEXsuperr†rjsj†rhŒXinitr †r!j©X]r"†r#j©jî†r$jsj»†r%jsX	    
    r&†r'jXifr(†r)jsj†r*j©j†r+jEXselfr,†r-j©j†r.jsj»†r/jsX    r0†r1j©jã†r2jsj»†r3jsX        r4†r5hŒX_keyEnumeratorr6†r7jsj†r8htj†r9jsj†r:j©j†r;hŒXaDictionaryr<†r=jsj†r>hŒX
keyEnumeratorr?†r@j©j"†rAj©jî†rBjsj»†rCjsX        rD†rEhŒX_dictionaryrF†rGjsj†rHhtj†rIjsj†rJhŒXaDictionaryrK†rLj©jî†rMjsj»†rNjsX    rO†rPj©jû†rQjsj»†rRjsX	    
    rS†rTjXreturnrU†rVjsj†rWjEXselfrX†rYj©jî†rZjsj»†r[j©jû†r\jsj»†r]jsj»†r^htjÿ†r_jsj†r`j©j†raj-Xidrb†rcj©j†rdjtX
nextObjectre†rfjsj»†rgj©jã†rhjsj»†rijsX    rj†rkjZXvarrl†rmjsj†rnhŒXkeyro†rpjsj†rqhtj†rrjsj†rsj©j†rthŒX_keyEnumeratorru†rvjsj†rwhŒX
nextObjectrx†ryj©j"†rzj©jî†r{jsj»†r|jsX	    
    r}†r~jXifr†r€jsj†rj©j†r‚htX!rƒ†r„hŒXkeyr…†r†j©j†r‡jsj»†rˆjsX        r‰†rŠjXreturnr‹†rŒjsj†rjDXnilrކrj©jî†rjsj»†r‘jsj»†r’jsX    r“†r”jXreturnr•†r–jsj†r—j©j†r˜hŒX_dictionaryr™†ršjsj†r›hŒXobjectForKeyrœ†rhtj݆ržhŒXkeyrŸ†r j©j"†r¡j©jî†r¢jsj»†r£j©jû†r¤jsj»†r¥jsj»†r¦jX@endr§†r¨jsX

r©†rªhXÓ/*! 
    @class CPDictionary
    @ingroup foundation
    @brief A mutable key-value pair collection.

    A dictionary is the standard way of passing around key-value pairs in
    the Cappuccino framework. It is similar to the
    <a href="http://java.sun.com/javase/6/docs/api/index.html">Java map interface</a>,
    except all keys are CPStrings and values can be any
    Cappuccino or JavaScript object.

    If you are familiar with dictionaries in Cocoa, you'll notice that
    there is no CPMutableDictionary class. The regular CPDictionary
    has \c -setObject:forKey: and \c -removeObjectForKey: methods.
    In Cappuccino there is no distinction between immutable and mutable classes.
    They are all mutable.
*/r«†r¬jsj»†r­jX@implementationr®†r¯jsj†r°h¹XCPDictionaryr±†r²jsj†r³htj݆r´jsj†rµh¹XCPObjectr¶†r·jsj»†r¸j©jã†r¹jsj»†rºj©jû†r»jsj»†r¼jsj»†r½hX/*
    @ignore
*/r¾†r¿jsj»†rÀhtX+rÁ†rÂjsj†rÃj©j†rÄj-XidrņrÆj©j†rÇjtXallocrȆrÉjsj»†rÊj©jã†rËjsj»†rÌjsX    r͆rÎjXreturnrφrÐjsj†rÑjXnewrÒ†rÓjsj†rÔjtXobjj_dictionaryrÕ†rÖj©j†r×j©j†rØj©jî†rÙjsj»†rÚj©jû†rÛjsj»†rÜjsj»†rÝhX,/*!
    Returns a new empty CPDictionary.
*/rÞ†rßjsj»†ràhtjÁ†rájsj†râj©j†rãj-Xidrä†råj©j†ræjtX
dictionaryrç†rèjsj»†réj©jã†rêjsj»†rëjsX    rì†ríjXreturnrî†rïjsj†rðj©j†rñj©j†ròjEXselfró†rôjsj†rõhŒXallocrö†r÷j©j"†røjsj†rùhŒXinitrú†rûj©j"†rüj©jî†rýjsj»†rþj©jû†rÿjsj»†rjsj»†rhX¹/*!
    Returns a new dictionary, initialized with the contents of \c aDictionary.
    @param aDictionary the dictionary to copy key-value pairs from
    @return the new CPDictionary
*/r†rjsj»†rhtjÁ†rjsj†rj©j†rj-Xidr†r	j©j†r
jtXdictionaryWithDictionary:r†rj©j†r
j-XCPDictionaryr†rj©j†rjsXaDictionaryr†rjsj»†rj©jã†rjsj»†rjsX    r†rjXreturnr†rjsj†rj©j†rj©j†rjEXselfr†rjsj†rhŒXallocr †r!j©j"†r"jsj†r#hŒXinitWithDictionaryr$†r%htj݆r&hŒXaDictionaryr'†r(j©j"†r)j©jî†r*jsj»†r+j©jû†r,jsj»†r-jsj»†r.hX¶/*!
    Creates a new dictionary with single key-value pair.
    @param anObject the object for the paring
    @param aKey the key for the pairing
    @return the new CPDictionary
*/r/†r0jsj»†r1htjÁ†r2jsj†r3j©j†r4j-Xidr5†r6j©j†r7jtXdictionaryWithObject:r8†r9j©j†r:j-Xidr;†r<j©j†r=jsXanObjectr>†r?jsj†r@jtXforKey:rA†rBj©j†rCj-XidrD†rEj©j†rFjsXaKeyrG†rHjsj»†rIj©jã†rJjsj»†rKjsX    rL†rMjXreturnrN†rOjsj†rPj©j†rQj©j†rRjEXselfrS†rTjsj†rUhŒXallocrV†rWj©j"†rXjsj†rYhŒXinitWithObjectsrZ†r[htj݆r\j©j†r]hŒXanObjectr^†r_j©j"†r`jsj†rahŒXforKeysrb†rchtj݆rdj©j†rehŒXaKeyrf†rgj©j"†rhj©j"†rij©jî†rjjsj»†rkj©jû†rljsj»†rmjsj»†rnhX /*!
    Creates a dictionary with multiple key-value pairs.
    @param objects the objects to place in the dictionary
    @param keys the keys for each of the objects
    @throws CPInvalidArgumentException if the number of objects and keys is different
    @return the new CPDictionary
*/ro†rpjsj»†rqhtjÁ†rrjsj†rsj©j†rtj-Xidru†rvj©j†rwjtXdictionaryWithObjects:rx†ryj©j†rzj-XCPArrayr{†r|j©j†r}jsXobjectsr~†rjsj†r€jtXforKeys:r†r‚j©j†rƒj-XCPArrayr„†r…j©j†r†jsXkeysr‡†rˆjsj»†r‰j©jã†rŠjsj»†r‹jsX    rŒ†rjXreturnrކrjsj†rj©j†r‘j©j†r’jEXselfr“†r”jsj†r•hŒXallocr–†r—j©j"†r˜jsj†r™hŒXinitWithObjectsrš†r›htj݆rœhŒXobjectsr†ržjsj†rŸhŒXforKeysr †r¡htj݆r¢hŒXkeysr£†r¤j©j"†r¥j©jî†r¦jsj»†r§j©jû†r¨jsj»†r©jsj»†rªhX|/*!
    Creates a dictionary with multiple key-value pairs.
    @param JavaScript object
    @return the new CPDictionary
*/r«†r¬jsj»†r­htjÁ†r®jsj†r¯j©j†r°j-Xidr±†r²j©j†r³jtXdictionaryWithJSObject:r´†rµj©j†r¶j-XJSObjectr·†r¸j©j†r¹jsXobjectrº†r»jsj»†r¼j©jã†r½jsj»†r¾jsX    r¿†rÀjXreturnrÁ†rÂjsj†rÃj©j†rÄjEXselfrņrÆjsj†rÇhŒXdictionaryWithJSObjectrȆrÉhtj݆rÊhŒXobjectrˆrÌjsj†rÍhŒXrecursivelyrΆrÏhtj݆rÐjDXNOrцrÒj©j"†rÓj©jî†rÔjsj»†rÕj©jû†rÖjsj»†r×jsj»†rØhX‰/*!
    Creates a dictionary with multiple key-value pairs, recursively.
    @param JavaScript object
    @return the new CPDictionary
*/rÙ†rÚjsj»†rÛhtjÁ†rÜjsj†rÝj©j†rÞj-Xidr߆ràj©j†rájtXdictionaryWithJSObject:râ†rãj©j†räj-XJSObjectrå†ræj©j†rçjsXobjectrè†réjsj†rêjtXrecursively:rë†rìj©j†ríj-XBOOLrî†rïj©j†rðjsXrecursivelyrñ†ròjsj»†rój©jã†rôjsj»†rõjsX    rö†r÷jZXvarrø†rùjsj†rúhŒX
dictionaryrû†rüjsj†rýhtj†rþjsj†rÿj©j†rj©j†rjEXselfr†rjsj†rhŒXallocr†rj©j"†rjsj†rhŒXinitr	†r
j©j"†rj©jî†rjsj»†r
jsX
        
    r†rjXforr†rjsj†rj©j†rjZXvarr†rjsj†rhŒXkeyr†rjsj†rjXinr†rjsj†rhŒXobjectr†rj©j†rjsj»†r jsX    r!†r"j©jã†r#jsj»†r$jsX        r%†r&jZXvarr'†r(jsj†r)hŒXvaluer*†r+jsj†r,htj†r-jsj†r.hŒXobjectr/†r0j©j†r1hŒXkeyr2†r3j©j"†r4j©jî†r5jsj»†r6jsX
    
        r7†r8jXifr9†r:jsj†r;j©j†r<hŒXrecursivelyr=†r>jsj†r?htX&&r@†rAjsj†rBhŒXvaluerC†rDj©X.rE†rFhŒXconstructorrG†rHjsj†rIhtX===rJ†rKjsj†rLjEXObjectrM†rNj©j†rOjsj»†rPjsX            rQ†rRhŒXvaluerS†rTjsj†rUhtj†rVjsj†rWj©j†rXhŒXCPDictionaryrY†rZjsj†r[hŒXdictionaryWithJSObjectr\†r]htj݆r^hŒXvaluer_†r`jsj†rahŒXrecursivelyrb†rchtj݆rdjDXYESre†rfj©j"†rgj©jî†rhjsj»†rijsX
    
        rj†rkj©j†rlhŒX
dictionaryrm†rnjsj†rohŒX	setObjectrp†rqhtj݆rrhŒXvaluers†rtjsj†ruhŒXforKeyrv†rwhtj݆rxhŒXkeyry†rzj©j"†r{j©jî†r|jsj»†r}jsX    r~†rj©jû†r€jsj»†rjsX	    
    r‚†rƒjXreturnr„†r…jsj†r†hŒX
dictionaryr‡†rˆj©jî†r‰jsj»†rŠj©jû†r‹jsj»†rŒjsj»†rhXÍ/*!
    Creates and returns a dictionary constructed by a given pairs of keys and values.
    @param firstObject first object value
    @param ... key for the first object and ongoing value-key pairs for more objects.
    @throws CPInvalidArgumentException if the number of objects and keys is different
    @return the new CPDictionary
    
    Assuming that there's no object retaining in Cappuccino, you can create
    dictionaries same way as with alloc and initWithObjectsAndKeys:
    var dict = [CPDictionary dictionaryWithObjectsAndKeys:
    @"value1", @"key1",
    @"value2", @"key2"];
    
    Note, that there's no final nil like in Objective-C/Cocoa.
    
    @see [CPDictionary initWithObjectsAndKeys:]
*/rކrjsj»†rhtjÁ†r‘jsj†r’j©j†r“j-Xidr”†r•j©j†r–jtXdictionaryWithObjectsAndKeys:r—†r˜j©j†r™j-Xidrš†r›j©j†rœjsXfirstObjectr†ržj©X,rŸ†r jsj†r¡j©jE†r¢j©jE†r£j©jE†r¤jsj»†r¥j©jã†r¦jsj»†r§jsX    r¨†r©hŒX	argumentsrª†r«j©j†r¬jŸX0r­†r®j©j"†r¯jsj†r°htj†r±jsj†r²j©j†r³jEXselfr´†rµjsj†r¶hŒXallocr·†r¸j©j"†r¹j©jî†rºjsj»†r»jsX    r¼†r½hŒX	argumentsr¾†r¿j©j†rÀjŸX1rÁ†rÂj©j"†rÃjsj†rÄhtj†rÅjsj†rÆjX	@selectorrdžrÈj©j†rÉhŒXinitWithObjectsAndKeysrʆrËhtj݆rÌj©j†rÍj©jî†rÎjsj»†rÏjsX	    
    rІrÑjXreturnrÒ†rÓjsj†rÔhŒXobjj_msgSendrÕ†rÖj©jE†r×jtXapplyr؆rÙj©j†rÚjEXthisrÛ†rÜj©jŸ†rÝjsj†rÞhŒX	argumentsr߆ràj©j†ráj©jî†râjsj»†rãj©jû†räjsj»†råjsj»†ræhX¸/*!
    Initializes the dictionary with the contents of another dictionary.
    @param aDictionary the dictionary to copy key-value pairs from
    @return the initialized dictionary
*/rç†rèjsj»†réhtjÿ†rêjsj†rëj©j†rìj-Xidrí†rîj©j†rïjtXinitWithDictionary:rð†rñj©j†ròj-XCPDictionaryró†rôj©j†rõjsXaDictionaryrö†r÷jsj»†røj©jã†rùjsj»†rújsX    rû†rüjZXvarrý†rþjsj†rÿhŒXkeyr†rjsj†rhtj†rjsj†rjÁX"r†rjÁj†rj©jŸ†rjsj»†r	jsX        r
†rhŒX
dictionaryr†r
jsj†rhtj†rjsj†rj©j†rj©j†rhŒXCPDictionaryr†rjsj†rhŒXallocr†rj©j"†rjsj†rhŒXinitr†rj©j"†rj©jî†rjsj»†rjsX	    
    r†r jXforr!†r"jsj†r#j©j†r$hŒXkeyr%†r&jsj†r'jXinr(†r)jsj†r*hŒXaDictionaryr+†r,j©jE†r-hŒX_bucketsr.†r/j©j†r0jsj»†r1jsX        r2†r3j©j†r4hŒX
dictionaryr5†r6jsj†r7hŒX	setObjectr8†r9htj݆r:j©j†r;hŒXaDictionaryr<†r=jsj†r>hŒXobjectForKeyr?†r@htj݆rAhŒXkeyrB†rCj©j"†rDjsj†rEhŒXforKeyrF†rGhtj݆rHhŒXkeyrI†rJj©j"†rKj©jî†rLjsj»†rMjsX
        
    rN†rOjXreturnrP†rQjsj†rRhŒX
dictionaryrS†rTj©jî†rUjsj»†rVj©jû†rWjsj»†rXjsj»†rYhXE/*!
    Initializes the dictionary from the arrays of keys and objects.
    @param objects the objects to put in the dictionary
    @param keyArray the keys for the objects to put in the dictionary
    @throws CPInvalidArgumentException if the number of objects and keys is different
    @return the initialized dictionary
*/rZ†r[jsj»†r\htjÿ†r]jsj†r^j©j†r_j-Xidr`†raj©j†rbjtXinitWithObjects:rc†rdj©j†rej-XCPArrayrf†rgj©j†rhjsXobjectsri†rjjsj†rkjtXforKeys:rl†rmj©j†rnj-XCPArrayro†rpj©j†rqjsXkeyArrayrr†rsjsj»†rtj©jã†rujsj»†rvjsX    rw†rxjEXselfry†rzjsj†r{htj†r|jsj†r}j©j†r~jEXsuperr†r€jsj†rhŒXinitr‚†rƒj©j"†r„j©jî†r…jsj»†r†jsj»†r‡jsX    rˆ†r‰jXifrІr‹jsj†rŒj©j†rj©j†rŽhŒXobjectsr†rjsj†r‘hŒXcountr’†r“j©j"†r”jsj†r•htX!=r–†r—jsj†r˜j©j†r™hŒXkeyArrayrš†r›jsj†rœhŒXcountr†ržj©j"†rŸj©j†r jsj»†r¡jsX        r¢†r£j©j†r¤hŒXCPExceptionr¥†r¦jsj†r§hŒXraiser¨†r©htj݆rªhŒXCPInvalidArgumentExceptionr«†r¬jsj†r­hŒXreasonr®†r¯htj݆r°jÁj†r±jÁXCounts are different.(r²†r³jÁj†r´htjÁ†rµj©j†r¶hŒXobjectsr·†r¸jsj†r¹hŒXcountrº†r»j©j"†r¼htjÁ†r½jÁj†r¾jÁX!=r¿†rÀjÁj†rÁhtjÁ†rÂj©j†rÃhŒXkeyArrayrĆrÅjsj†rÆhŒXcountrdžrÈj©j"†rÉhtjÁ†rÊjÁj†rËjÁj†rÌjÁj†rÍj©j"†rÎj©jî†rÏjsj»†rÐjsj»†rÑjsX    rÒ†rÓjXifrÔ†rÕjsj†rÖj©j†r×jEXselfr؆rÙj©j†rÚjsj»†rÛjsX    r܆rÝj©jã†rÞjsj»†rßjsX        rà†rájZXvarrâ†rãjsj†rähŒXirå†ræjsj†rçhtj†rèjsj†réj©j†rêhŒXkeyArrayrë†rìjsj†ríhŒXcountrî†rïj©j"†rðj©jî†rñjsj»†ròjsX        
        ró†rôjXwhilerõ†röjsj†r÷j©j†røhŒjå†rùhtX--rú†rûj©j†rüjsj»†rýjsX            rþ†rÿj©j†rjEXselfr†rjsj†rhŒX	setObjectr†rhtj݆rhŒXobjectsr†rj©j†r	hŒjå†r
j©j"†rjsj†rhŒXforKeyr
†rhtj݆rhŒXkeyArrayr†rj©j†rhŒjå†rj©j"†rj©j"†rj©jî†rjsj»†rjsX    r†rj©jû†rjsj»†rjsX	    
    r†rjXreturnr†rjsj†r jEXselfr!†r"j©jî†r#jsj»†r$j©jû†r%jsj»†r&jsj»†r'hX4/*!
    Creates and returns a dictionary constructed by a given pairs of keys and values.
    @param firstObject first object value
    @param ... key for the first object and ongoing value-key pairs for more objects.
    @throws CPInvalidArgumentException if the number of objects and keys is different
    @return the new CPDictionary
    
    You can create dictionaries this way:
    var dict = [[CPDictionary alloc] initWithObjectsAndKeys:
    @"value1", @"key1",
    @"value2", @"key2"];
    
    Note, that there's no final nil like in Objective-C/Cocoa.
*/r(†r)jsj»†r*htjÿ†r+jsj†r,j©j†r-j-Xidr.†r/j©j†r0jtXinitWithObjectsAndKeys:r1†r2j©j†r3j-Xidr4†r5j©j†r6jsXfirstObjectr7†r8j©jŸ†r9jsj†r:j©jE†r;j©jE†r<j©jE†r=jsj»†r>j©jã†r?jsj»†r@jsX    rA†rBjZXvarrC†rDjsj†rEhŒXargCountrF†rGjsj†rHhtj†rIjsj†rJhŒX	argumentsrK†rLj©jE†rMhŒXlengthrN†rOj©jî†rPjsj»†rQjsX	    
    rR†rSjXifrT†rUjsj†rVj©j†rWhŒXargCountrX†rYjsj†rZhtX%r[†r\jsj†r]jŸX2r^†r_jsj†r`htX!==ra†rbjsj†rcjŸj­†rdj©j†rejsj»†rfjsX        rg†rhj©j†rihŒXCPExceptionrj†rkjsj†rlhŒXraiserm†rnhtj݆rohŒXCPInvalidArgumentExceptionrp†rqjsj†rrhŒXreasonrs†rthtj݆rujÁj†rvjÁX Key-value count is mismatched. (rw†rxjÁj†ryjsj†rzhtjÁ†r{jsj†r|hŒXargCountr}†r~jsj†rhtjÁ†r€jsj†rjÁj†r‚jÁX arguments passed)rƒ†r„jÁj†r…j©j"†r†j©jî†r‡jsj»†rˆjsj»†r‰jsX    rІr‹jEXselfrŒ†rjsj†rŽhtj†rjsj†rj©j†r‘jEXsuperr’†r“jsj†r”hŒXinitr•†r–j©j"†r—j©jî†r˜jsj»†r™jsX	    
    rš†r›jXifrœ†rjsj†ržj©j†rŸjEXselfr †r¡j©j†r¢jsj»†r£jsX    r¤†r¥j©jã†r¦jsj»†r§jsX        r¨†r©h.XU// The arguments array contains self and _cmd, so the first object is at position 2.
rª†r«jsX        r¬†r­jZXvarr®†r¯jsj†r°hŒXindexr±†r²jsj†r³htj†r´jsj†rµjŸj^†r¶j©jî†r·jsj»†r¸jsX        
        r¹†rºjXforr»†r¼j©j†r½j©jî†r¾jsj†r¿hŒXindexrÀ†rÁjsj†rÂhtX<rÆrÄjsj†rÅhŒXargCountrƆrÇj©jî†rÈjsj†rÉhŒXindexrʆrËjsj†rÌhtX+=r͆rÎjsj†rÏjŸj^†rÐj©j†rÑjsj»†rÒjsX        rÓ†rÔj©jã†rÕjsj»†rÖjsX            r׆rØjZXvarrÙ†rÚjsj†rÛhŒXvaluer܆rÝjsj†rÞhtj†rßjsj†ràhŒX	argumentsrá†râj©j†rãhŒXindexrä†råj©j"†ræj©jî†rçjsj»†rèjsj»†réjsX            rê†rëjXifrì†ríjsj†rîj©j†rïhŒXvaluerð†rñjsj†ròhtX===ró†rôjsj†rõjDXnilrö†r÷j©j†røjsj»†rùjsX                rú†rûjXbreakrü†rýj©jî†rþjsj»†rÿjsj»†r	jsX            r	†r	j©j†r	jEXselfr	†r	jsj†r	hŒX	setObjectr	†r	htj݆r		hŒXvaluer
	†r	jsj†r	hŒXforKeyr
	†r	htj݆r	hŒX	argumentsr	†r	j©j†r	hŒXindexr	†r	e(jsj†r	htjÁ†r	jsj†r	jŸjÁ†r	j©j"†r	j©j"†r	j©jî†r	jsj»†r	jsX        r	†r	j©jû†r	jsj»†r 	jsX    r!	†r"	j©jû†r#	jsj»†r$	jsj»†r%	jsX    r&	†r'	jXreturnr(	†r)	jsj†r*	jEXselfr+	†r,	j©jî†r-	jsj»†r.	j©jû†r/	jsj»†r0	jsj»†r1	hXf/*!
    return a copy of the receiver (does not deep copy the objects contained in the dictionary).
*/r2	†r3	jsj»†r4	htjÿ†r5	jsj†r6	j©j†r7	j-XCPDictionaryr8	†r9	j©j†r:	jtXcopyr;	†r<	jsj»†r=	j©jã†r>	jsj»†r?	jsX    r@	†rA	jXreturnrB	†rC	jsj†rD	j©j†rE	hŒXCPDictionaryrF	†rG	jsj†rH	hŒXdictionaryWithDictionaryrI	†rJ	htj݆rK	jEXselfrL	†rM	j©j"†rN	j©jî†rO	jsj»†rP	j©jû†rQ	jsj»†rR	jsj»†rS	hX:/*!
    Returns the number of entries in the dictionary
*/rT	†rU	jsj»†rV	htjÿ†rW	jsj†rX	j©j†rY	j-XintrZ	†r[	j©j†r\	jtXcountr]	†r^	jsj»†r_	j©jã†r`	jsj»†ra	jsX    rb	†rc	jXreturnrd	†re	jsj†rf	hŒXcountrg	†rh	j©jî†ri	jsj»†rj	j©jû†rk	jsj»†rl	jsj»†rm	hXJ/*!
    Returns an array of keys for all the entries in the dictionary.
*/rn	†ro	jsj»†rp	htjÿ†rq	jsj†rr	j©j†rs	j-XCPArrayrt	†ru	j©j†rv	jtXallKeysrw	†rx	jsj»†ry	j©jã†rz	jsj»†r{	jsX    r|	†r}	jXreturnr~	†r	jsj†r€	hŒX_keysr	†r‚	j©jî†rƒ	jsj»†r„	j©jû†r…	jsj»†r†	jsj»†r‡	hXL/*!
    Returns an array of values for all the entries in the dictionary.
*/rˆ	†r‰	jsj»†rŠ	htjÿ†r‹	jsj†rŒ	j©j†r	j-XCPArrayrŽ	†r	j©j†r	jtX	allValuesr‘	†r’	jsj»†r“	j©jã†r”	jsj»†r•	jsX    r–	†r—	jZXvarr˜	†r™	jsj†rš	hŒXindexr›	†rœ	jsj†r	htj†rž	jsj†rŸ	hŒX_keysr 	†r¡	j©jE†r¢	hŒXlengthr£	†r¤	j©jŸ†r¥	jsj»†r¦	jsX        r§	†r¨	hŒXvaluesr©	†rª	jsj†r«	htj†r¬	jsj†r­	j©j†r®	j©j"†r¯	j©jî†r°	jsj»†r±	jsX
        
    r²	†r³	jXwhiler´	†rµ	jsj†r¶	j©j†r·	hŒXindexr¸	†r¹	htX--rº	†r»	j©j†r¼	jsj»†r½	jsX        r¾	†r¿	hŒXvaluesrÀ	†rÁ	j©jE†rÂ	jtXpushrÃ	†rÄ	j©j†rÅ	jtXdictionary_getValuerÆ	†rÇ	j©j†rÈ	jEXselfrÉ	†rÊ	j©jŸ†rË	jsj†rÌ	j©j†rÍ	hŒX_keysrÎ	†rÏ	j©j†rÐ	hŒXindexrÑ	†rÒ	j©j"†rÓ	j©j"†rÔ	j©j†rÕ	j©j†rÖ	j©jî†r×	jsj»†rØ	jsj»†rÙ	jsX    rÚ	†rÛ	jXreturnrÜ	†rÝ	jsj†rÞ	hŒXvaluesrß	†rà	j©jî†rá	jsj»†râ	j©jû†rã	jsj»†rä	jsj»†rå	hXP/*!
    Returns an enumerator that enumerates over all the dictionary's keys.
*/ræ	†rç	jsj»†rè	htjÿ†ré	jsj†rê	j©j†rë	j-XCPEnumeratorrì	†rí	j©j†rî	jtX
keyEnumeratorrï	†rð	jsj»†rñ	j©jã†rò	jsj»†ró	jsX    rô	†rõ	jXreturnrö	†r÷	jsj†rø	j©j†rù	hŒX_keysrú	†rû	jsj†rü	hŒXobjectEnumeratorrý	†rþ	j©j"†rÿ	j©jî†r
jsjȠr
j©jû†r
jsjȠr
jsjȠr
hXR/*!
    Returns an enumerator that enumerates over all the dictionary's values.
*/r
†r
jsjȠr
htjÿ†r
jsj†r	
j©j†r

j-XCPEnumeratorr
†r
j©j†r
jtXobjectEnumeratorr
†r
jsjȠr
j©jã†r
jsjȠr
jsX    r
†r
jXreturnr
†r
jsj†r
j©j†r
j©j†r
hŒX_CPDictionaryValueEnumeratorr
†r
jsj†r
hŒXallocr
†r
j©j"†r
jsj†r 
hŒXinitWithDictionaryr!
†r"
htj݆r#
jEXselfr$
†r%
j©j"†r&
j©jî†r'
jsjȠr(
j©jû†r)
jsjȠr*
jsjȠr+
hX^/*!
    Compare the receiver to this dictionary, and return whether or not they are equal. 
*/r,
†r-
jsjȠr.
htjÿ†r/
jsj†r0
j©j†r1
j-XBOOLr2
†r3
j©j†r4
jtXisEqualToDictionary:r5
†r6
j©j†r7
j-XCPDictionaryr8
†r9
j©j†r:
jsXaDictionaryr;
†r<
jsjȠr=
j©jã†r>
jsjȠr?
jsX    r@
†rA
jXifrB
†rC
jsj†rD
j©j†rE
hŒXcountrF
†rG
jsj†rH
htX!==rI
†rJ
jsj†rK
j©j†rL
hŒXaDictionaryrM
†rN
jsj†rO
hŒXcountrP
†rQ
j©j"†rR
j©j†rS
jsjȠrT
jsX        rU
†rV
jXreturnrW
†rX
jsj†rY
jDXNOrZ
†r[
j©jî†r\
jsjȠr]
jsjȠr^
jsX    r_
†r`
jZXvarra
†rb
jsj†rc
hŒXindexrd
†re
jsj†rf
htj†rg
jsj†rh
hŒXcountri
†rj
j©jî†rk
jsjȠrl
jsX    rm
†rn
jXwhilero
†rp
jsj†rq
j©j†rr
hŒXindexrs
†rt
htX--ru
†rv
j©j†rw
jsjȠrx
jsX    ry
†rz
j©jã†r{
jsjȠr|
jsX        r}
†r~
jZXvarr
†r€
jsj†r
hŒX
currentKeyr‚
†rƒ
jsj†r„
htj†r…
jsj†r†
hŒX_keysr‡
†rˆ
j©j†r‰
hŒXindexrŠ
†r‹
j©j"†rŒ
j©jŸ†r
jsj»†rŽ
jsX            r
†r
hŒX	lhsObjectr‘
†r’
jsj†r“
htj†r”
jsj†r•
hŒX_bucketsr–
†r—
j©j†r˜
hŒX
currentKeyr™
†rš
j©j"†r›
j©jŸ†rœ
jsj»†r
jsX            rž
†rŸ
hŒX	rhsObjectr 
†r¡
jsj†r¢
htj†r£
jsj†r¤
hŒXaDictionaryr¥
†r¦
j©jE†r§
hŒX_bucketsr¨
†r©
j©j†rª
hŒX
currentKeyr«
†r¬
j©j"†r­
j©jî†r®
jsj»†r¯
jsj»†r°
jsX        r±
†r²
jXifr³
†r´
jsj†rµ
j©j†r¶
hŒX	lhsObjectr·
†r¸
jsj†r¹
htX===rº
†r»
jsj†r¼
hŒX	rhsObjectr½
†r¾
j©j†r¿
jsj»†rÀ
jsX            rÁ
†rÂ
jXcontinuerÃ
†rÄ
j©jî†rÅ
jsj»†rÆ
jsX            
        rÇ
†rÈ
jXifrÉ
†rÊ
jsj†rË
j©j†rÌ
hŒX	lhsObjectrÍ
†rÎ
j©jE†rÏ
hŒXisarÐ
†rÑ
jsj†rÒ
htX&&rÓ
†rÔ
jsj†rÕ
hŒX	rhsObjectrÖ
†r×
j©jE†rØ
hŒXisarÙ
†rÚ
jsj†rÛ
htX&&rÜ
†rÝ
jsj†rÞ
j©j†rß
hŒX	lhsObjectrà
†rá
jsj†râ
hŒXrespondsToSelectorrã
†rä
htj݆rå
jX	@selectorræ
†rç
j©j†rè
hŒXisEqualré
†rê
htj݆rë
j©j†rì
j©j"†rí
jsj†rî
htX&&rï
†rð
jsj†rñ
j©j†rò
hŒX	lhsObjectró
†rô
jsj†rõ
hŒXisEqualrö
†r÷
htj݆rø
hŒX	rhsObjectrù
†rú
j©j"†rû
j©j†rü
jsj»†rý
jsX            rþ
†rÿ
jXcontinuer†rj©jî†rjsj»†rjsX        
        r†rjXreturnr†rjsj†rjDXNOr	†r
j©jî†rjsj»†rjsX    r
†rj©jû†rjsj»†rjsj»†rjsX    r†rjXreturnr†rjsj†rjDXYESr†rj©jî†rjsj»†rj©jû†rjsj»†rjsj»†rhXú/*
    Instance.isEqualToDictionary(aDictionary)
    {
        if(this.count()!=aDictionary.count()) return NO;
        
        var i= this._keys.count();
        while(i--) if(this.objectForKey(this._keys[i])!=aDictionary.objectForKey(this._keys[i])) return NO;
        
        return YES;
    }
    
    Instance.allKeys()
    {
        return this._keys;
    }
    
    Instance.allKeysForObject(anObject)
    {
        var i= 0,
            keys= CPArray.array(),
            count= this.count();
        
        while((i= this._objects.indexOfObjectInRage(0, count-i))!=CPNotFound) keys.addObject(this._keys[i]);
        
        return keys;
    }
    
    Instance.allValues()
    {
        return this._objects;
    }
    
    Instance.keyEnumerator()
    {
        return this._keys.objectEnumerator();
    }
    
    Instance.keysSortedByValueUsingSelector(aSelector)
    {
        var dictionary= this,
            objectSelector= function(rhs)
            {
                return aSelector.apply(dictionary.objectForKey(this), [dictionary.objectForKey(rhs)]);
            };
        
        return this._keys.sortedArrayUsingSelector(objectSelector);
    }
    
    Instance.objectEnumerator()
    {
        return this._objects.objectEnumerator();
    }
*/r†rjsj»†r hX‘/*!
    Returns the object for the entry with key \c aKey.
    @param aKey the key for the object's entry
    @return the object for the entry
*/r!†r"jsj»†r#htjÿ†r$jsj†r%j©j†r&j-Xidr'†r(j©j†r)jtX
objectForKey:r*†r+j©j†r,j-XCPStringr-†r.j©j†r/jsXaKeyr0†r1jsj»†r2j©jã†r3jsj»†r4jsX    r5†r6jZXvarr7†r8jsj†r9hŒXobjectr:†r;jsj†r<htj†r=jsj†r>hŒX_bucketsr?†r@j©j†rAhŒXaKeyrB†rCj©j"†rDj©jî†rEjsj»†rFjsX	    
    rG†rHjXreturnrI†rJjsj†rKj©j†rLhŒXobjectrM†rNjsj†rOhtX===rP†rQjsj†rRjDX	undefinedrS†rTj©j†rUjsj†rVhtX?rW†rXjsj†rYjDXnilrZ†r[jsj†r\htj݆r]jsj†r^hŒXobjectr_†r`j©jî†rajsj»†rbj©jû†rcjsj»†rdhX/*
    Instance.objectsForKeys(keys, aNotFoundMarker)
    {
        var i= keys.length,
            objects= CPArray.array();
        
        while(i--)
        {
            var object= this.objectForKey(keys[i]);
            objects.addObject(object==nil?aNotFoundMarker:object);
        }
        
        return objects;
    }
    
    Instance.valueForKey(aKey)
    {
        if(aKey.length && aKey[0]=="@") return this.objectForKey(aKey.substr(1));
        
        return base.valueForKey(aKey);
    }
    
    //
    
    Instance.addEntriesFromDictionary(aDictionary)
    {
        var key,
            keyEnumerator= aDictionary.keyEnumerator();

        while(key= keyEnumerator.nextObject()) this.setObjectForKey(aDictionary.objectForKey(key), key);
    }
*/re†rfjsj»†rghX7/*!
    Removes all the entries from the dictionary.
*/rh†rijsj»†rjhtjÿ†rkjsj†rlj©j†rmj-Xvoidrn†roj©j†rpjtXremoveAllObjectsrq†rrjsj»†rsj©jã†rtjsj»†rujsX    rv†rwhŒX_keysrx†ryjsj†rzhtj†r{jsj†r|j©j†r}j©j"†r~j©jî†rjsj»†r€jsX    r†r‚hŒXcountrƒ†r„jsj†r…htj†r†jsj†r‡jŸj­†rˆj©jî†r‰jsj»†rŠjsX    r‹†rŒhŒX_bucketsr†rŽjsj†rhtj†rjsj†r‘j©jã†r’j©jû†r“j©jî†r”jsj»†r•j©jû†r–jsj»†r—jsj»†r˜hXf/*!
    Removes the entry for the specified key.
    @param aKey the key of the entry to be removed
*/r™†ršjsj»†r›htjÿ†rœjsj†rj©j†ržj-XvoidrŸ†r j©j†r¡jtXremoveObjectForKey:r¢†r£j©j†r¤j-Xidr¥†r¦j©j†r§jsXaKeyr¨†r©jsj»†rªj©jã†r«jsj»†r¬jsX    r­†r®jtXdictionary_removeValuer¯†r°j©j†r±jEXselfr²†r³j©jŸ†r´jsj†rµhŒXaKeyr¶†r·j©j†r¸j©jî†r¹jsj»†rºj©jû†r»jsj»†r¼jsj»†r½hXˆ/*!
    Removes each entry in allKeys from the receiver.
    @param allKeys an array of keys that will be removed from the dictionary
*/r¾†r¿jsj»†rÀhtjÿ†rÁjsj†rÂj©j†rÃj-XvoidrĆrÅj©j†rÆjtXremoveObjectsForKeys:rdžrÈj©j†rÉj-XCPArrayrʆrËj©j†rÌjsXallKeysr͆rÎjsj»†rÏj©jã†rÐjsj»†rÑjsX    rÒ†rÓjZXvarrÔ†rÕjsj†rÖhŒXindexr׆rØjsj†rÙhtj†rÚjsj†rÛhŒXallKeysr܆rÝj©jE†rÞhŒXlengthr߆ràj©jî†rájsj»†râjsj»†rãjsX    rä†råjXwhileræ†rçjsj†rèj©j†réhŒXindexrê†rëhtX--rì†ríj©j†rîjsj»†rïjsX        rð†rñjtXdictionary_removeValuerò†rój©j†rôjEXselfrõ†röj©jŸ†r÷jsj†røhŒXallKeysrù†rúj©j†rûhŒXindexrü†rýj©j"†rþj©j†rÿj©jî†rjsj»†rj©jû†rjsj»†rjsj»†rhXå/*
    Instance.removeObjectForKey(aKey)
    {
        var entry= this._dictionary[aKey];
        
        if(entry)
        {
            var range= CPMakeRange(entry.index, 1);
            
            this._keys.removeObjectsInRange(range);
            this._objects.removeObjectsInRange(range);
        
            delete this._dictionary[aKey];
        }
    }
    
    Instance.setDictionary(aDictionary)
    {
        this._keys= CPArray.arrayWithArray(aDictionary.allKeys());
        this._objects= CPArray.arrayWithArray(aDictionary.allValues());
        
        this._dictionary= { };
        
        var i= this._keys.count();
        while(i--) this._dictionary[this._keys[i]]= { object: this._objects[i], index: i };
    }
*/r†rjsj»†rhXz/*!
    Adds an entry into the dictionary.
    @param anObject the object for the entry
    @param aKey the entry's key
*/r†r	jsj»†r
htjÿ†rjsj†rj©j†r
j-Xvoidr†rj©j†rjtX
setObject:r†rj©j†rj-Xidr†rj©j†rjsXanObjectr†rjsj†rjtXforKey:r†rj©j†rj-Xidr†rj©j†rjsXaKeyr †r!jsj»†r"j©jã†r#jsj»†r$jsX    r%†r&jtXdictionary_setValuer'†r(j©j†r)jEXselfr*†r+j©jŸ†r,jsj†r-hŒXaKeyr.†r/j©jŸ†r0jsj†r1hŒXanObjectr2†r3j©j†r4j©jî†r5jsj»†r6j©jû†r7jsj»†r8hX/*
    Instance.setValueForKey(aValue, aKey)
    {
        if(!aValue) this.removeObjectForKey(aKey);
        else this.setObjectForKey(aValue, aKey);
    }
    
    Instance.copy()
    {
        return CPDictionary.alloc().dictionaryWithDictionary(this);
    }
*/r9†r:jsj»†r;jsj»†r<hXY/*!
    Take all the key/value pairs in aDictionary and apply them to this dictionary.
*/r=†r>jsj»†r?htjÿ†r@jsj†rAj©j†rBj-XvoidrC†rDj©j†rEjtXaddEntriesFromDictionary:rF†rGj©j†rHj-XCPDictionaryrI†rJj©j†rKjsXaDictionaryrL†rMjsj»†rNj©jã†rOjsj»†rPjsX    rQ†rRjXifrS†rTjsj†rUj©j†rVhtjƒ†rWhŒXaDictionaryrX†rYj©j†rZjsj»†r[jsX        r\†r]jXreturnr^†r_j©jî†r`jsj»†rajsX
        
    rb†rcjZXvarrd†rejsj†rfhŒXkeysrg†rhjsj†rihtj†rjjsj†rkj©j†rlhŒXaDictionaryrm†rnjsj†rohŒXallKeysrp†rqj©j"†rrj©jŸ†rsjsj»†rtjsX        ru†rvhŒXindexrw†rxjsj†ryhtj†rzjsj†r{j©j†r|hŒXkeysr}†r~jsj†rhŒXcountr€†rj©j"†r‚j©jî†rƒjsj»†r„jsX	    
    r…†r†jXwhiler‡†rˆjsj†r‰j©j†rŠhŒXindexr‹†rŒhtX--r†rŽj©j†rjsj»†rjsX    r‘†r’j©jã†r“jsj»†r”jsX        r•†r–jZXvarr—†r˜jsj†r™hŒXkeyrš†r›jsj†rœhtj†rjsj†ržhŒXkeysrŸ†r j©j†r¡hŒXindexr¢†r£j©j"†r¤j©jî†r¥jsj»†r¦jsj»†r§jsX        r¨†r©j©j†rªjEXselfr«†r¬jsj†r­hŒX	setObjectr®†r¯htj݆r°j©j†r±hŒXaDictionaryr²†r³jsj†r´hŒXobjectForKeyrµ†r¶htj݆r·hŒXkeyr¸†r¹j©j"†rºjsj†r»hŒXforKeyr¼†r½htj݆r¾hŒXkeyr¿†rÀj©j"†rÁj©jî†rÂjsj»†rÃjsX    rÄ†rÅj©jû†rÆjsj»†rÇj©jû†rÈjsj»†rÉjsj»†rÊhXB/*!
    Returns a human readable description of the dictionary.
*/rË†rÌjsj»†rÍhtjÿ†rÎjsj†rÏj©j†rÐj-XCPStringrÑ†rÒj©j†rÓjtXdescriptionrÔ†rÕjsj»†rÖj©jã†r×jsj»†rØjsX    rÙ†rÚjZXvarrÛ†rÜjsj†rÝhŒXdescriptionrÞ†rßjsj†ràhtj†rájsj†râjÁX@"rã†räjÁXCPDictionary {rå†ræjúX\nrç†rèjÁj†réj©jî†rêjsj»†rëjsX	    
    rì†ríjZXvarrî†rïjsj†rðhŒjå†rñjsj†ròhtj†rójsj†rôhŒX_keysrõ†röj©jE†r÷hŒXlengthrø†rùj©jî†rújsj»†rûjsX	    
    rü†rýjXwhilerþ†rÿjsj†r
j©j†r
hŒjå†r
htX--r
†r
j©j†r
jsjȠr
jsX    r
†r
j©jã†r	
jsjȠr

jsX        r
†r
hŒXdescriptionr

†r
jsj†r
htX+=r
†r
jsj†r
hŒX_keysr
†r
j©j†r
hŒjå†r
j©j"†r
jsj†r
htjÁ†r
jsj†r
jÁj†r
jÁj݆r
jÁj†r
j©jî†r
jsjȠr
jsjȠr 
jsX        r!
†r"
jZXvarr#
†r$
jsj†r%
hŒXobjectr&
†r'
jsj†r(
htj†r)
jsj†r*
hŒX_bucketsr+
†r,
j©j†r-
hŒX_keysr.
†r/
j©j†r0
hŒjå†r1
j©j"†r2
j©j"†r3
j©jî†r4
jsjȠr5
jsjȠr6
jsX        r7
†r8
jXifr9
†r:
jsj†r;
j©j†r<
hŒXobjectr=
†r>
jsj†r?
htX&&r@
†rA
jsj†rB
hŒXobjectrC
†rD
j©jE†rE
hŒXisarF
†rG
j©j†rH
jsjȠrI
jsX            rJ
†rK
hŒXdescriptionrL
†rM
jsj†rN
htX+=rO
†rP
jsj†rQ
j©j†rR
hŒXobjectrS
†rT
jsj†rU
hŒXdescriptionrV
†rW
j©j"†rX
j©jî†rY
jsjȠrZ
jsX        r[
†r\
jXelser]
†r^
jsjȠr_
jsX            r`
†ra
hŒXdescriptionrb
†rc
jsj†rd
htX+=re
†rf
jsj†rg
hŒXobjectrh
†ri
j©jî†rj
jsjȠrk
jsjȠrl
jsX        rm
†rn
hŒXdescriptionro
†rp
jsj†rq
htX+=rr
†rs
jsj†rt
jÁj†ru
júX\nrv
†rw
jÁj†rx
j©jî†ry
jsjȠrz
jsX    r{
†r|
j©jû†r}
jsjȠr~
jsjȠr
jsX    r€
†r
hŒXdescriptionr‚
†rƒ
jsj†r„
htX+=r…
†r†
jsj†r‡
jÁj†rˆ
jÁjû†r‰
jÁj†rŠ
j©jî†r‹
jsj»†rŒ
jsj»†r
jsX    rŽ
†r
jXreturnr
†r‘
jsj†r’
hŒXdescriptionr“
†r”
j©jî†r•
jsj»†r–
j©jû†r—
jsj»†r˜
jsj»†r™
jX@endrš
†r›
jsX

rœ
†r
jX@implementationrž
†rŸ
jsj†r 
h¹XCPDictionaryr¡
†r¢
jsj†r£
j©j†r¤
j6XCPCodingr¥
†r¦
jsj†r§
jsj»†r¨
jsj»†r©
hXµ/*
    Initializes the dictionary by unarchiving the data from a coder.
    @param aCoder the coder from which the data will be unarchived.
    @return the initialized dictionary
*/rª
†r«
jsj»†r¬
htjÿ†r­
jsj†r®
j©j†r¯
j-Xidr°
†r±
j©j†r²
jtXinitWithCoder:r³
†r´
j©j†rµ
j-XCPCoderr¶
†r·
j©j†r¸
jsXaCoderr¹
†rº
jsj»†r»
j©jã†r¼
jsj»†r½
jsX    r¾
†r¿
jXreturnrÀ
†rÁ
jsj†rÂ
j©j†rÃ
hŒXaCoderrÄ
†rÅ
jsj†rÆ
hŒX _decodeDictionaryOfObjectsForKeyrÇ
†rÈ
htj݆rÉ
jÁX@"rÊ
†rË
jÁX
CP.objectsrÌ
†rÍ
jÁj†rÎ
j©j"†rÏ
j©jî†rÐ
jsj»†rÑ
j©jû†rÒ
jsj»†rÓ
jsj»†rÔ
hX‚/*!
    Archives the dictionary to a provided coder.
    @param aCoder the coder to which the dictionary data will be archived.
*/rÕ
†rÖ
jsj»†r×
htjÿ†rØ
jsj†rÙ
j©j†rÚ
j-XvoidrÛ
†rÜ
j©j†rÝ
jtXencodeWithCoder:rÞ
†rß
j©j†rà
j-XCPCoderrá
†râ
j©j†rã
jsXaCoderrä
†rå
jsj»†ræ
j©jã†rç
jsj»†rè
jsX    ré
†rê
j©j†rë
hŒXaCoderrì
†rí
jsj†rî
hŒX_encodeDictionaryOfObjectsrï
†rð
htj݆rñ
jEXselfrò
†ró
jsj†rô
hŒXforKeyrõ
†rö
htj݆r÷
jÁX@"rø
†rù
jÁX
CP.objectsrú
†rû
jÁj†rü
j©j"†rý
j©jî†rþ
jsj»†rÿ
j©jû†rjsj»†rjsj»†rjX@endr†rjsX

r†rhXè/*!
    @class CPMutableDictionary
    @ingroup compatability

    This class is just an empty subclass of CPDictionary.
    CPDictionary already implements mutable methods and
    this class only exists for source compatability.
*/r†rjsj»†r	jX@implementationr
†rjsj†rh¹XCPMutableDictionaryr
†rjsj†rhtj݆rjsj†rh¹XCPDictionaryr†rjsj»†rjsj»†rjX@endr†rjsX

r†rhŒXobjj_dictionaryr†rj©jE†rjX	prototyper†rj©jE†rhŒXisar †r!jsj†r"htj†r#jsj†r$hŒXCPDictionaryr%†r&j©jî†r'jsj»†r(e.