Changeset 391 for python/trunk/Mac/Modules/cf
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (12 years ago)
- Location:
- python/trunk
- Files:
-
- 3 edited
-
. (modified) (1 prop)
-
Mac/Modules/cf/_CFmodule.c (modified) (7 diffs)
-
Mac/Modules/cf/pycfbridge.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Mac/Modules/cf/_CFmodule.c
r2 r391 10 10 /* Macro to test whether a weak-loaded CFM function exists */ 11 11 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ 12 PyErr_SetString(PyExc_NotImplementedError, \13 "Not available in this shared library/OS version"); \14 return NULL; \12 PyErr_SetString(PyExc_NotImplementedError, \ 13 "Not available in this shared library/OS version"); \ 14 return NULL; \ 15 15 }} while(0) 16 16 … … 85 85 { 86 86 87 return Py_BuildValue("ll", (long)itself->location, (long)itself->length);87 return Py_BuildValue("ll", (long)itself->location, (long)itself->length); 88 88 } 89 89 … … 91 91 CFRange_Convert(PyObject *v, CFRange *p_itself) 92 92 { 93 long location, length;94 95 if( !PyArg_ParseTuple(v, "ll", &location, &length) )96 return 0;97 p_itself->location = (CFIndex)location;98 p_itself->length = (CFIndex)length;99 return 1;93 long location, length; 94 95 if( !PyArg_ParseTuple(v, "ll", &location, &length) ) 96 return 0; 97 p_itself->location = (CFIndex)location; 98 p_itself->length = (CFIndex)length; 99 return 1; 100 100 } 101 101 … … 105 105 { 106 106 if ( v == Py_None ) { 107 p_itself = NULL; 107 p_itself = NULL; 108 return 1; 109 } 110 return CFURLRefObj_Convert(v, p_itself); 111 } 112 113 static PyObject *CF_Error; 114 115 /* --------------------- Object type CFTypeRef ---------------------- */ 116 117 PyTypeObject CFTypeRef_Type; 118 119 #define CFTypeRefObj_Check(x) ((x)->ob_type == &CFTypeRef_Type || PyObject_TypeCheck((x), &CFTypeRef_Type)) 120 121 typedef struct CFTypeRefObject { 122 PyObject_HEAD 123 CFTypeRef ob_itself; 124 void (*ob_freeit)(CFTypeRef ptr); 125 } CFTypeRefObject; 126 127 PyObject *CFTypeRefObj_New(CFTypeRef itself) 128 { 129 CFTypeRefObject *it; 130 if (itself == NULL) 131 { 132 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 133 return NULL; 134 } 135 it = PyObject_NEW(CFTypeRefObject, &CFTypeRef_Type); 136 if (it == NULL) return NULL; 137 it->ob_itself = itself; 138 it->ob_freeit = CFRelease; 139 return (PyObject *)it; 140 } 141 142 int CFTypeRefObj_Convert(PyObject *v, CFTypeRef *p_itself) 143 { 144 145 if (v == Py_None) { *p_itself = NULL; return 1; } 146 /* Check for other CF objects here */ 147 148 if (!CFTypeRefObj_Check(v)) 149 { 150 PyErr_SetString(PyExc_TypeError, "CFTypeRef required"); 151 return 0; 152 } 153 *p_itself = ((CFTypeRefObject *)v)->ob_itself; 154 return 1; 155 } 156 157 static void CFTypeRefObj_dealloc(CFTypeRefObject *self) 158 { 159 if (self->ob_freeit && self->ob_itself) 160 { 161 self->ob_freeit((CFTypeRef)self->ob_itself); 162 self->ob_itself = NULL; 163 } 164 self->ob_type->tp_free((PyObject *)self); 165 } 166 167 static PyObject *CFTypeRefObj_CFGetTypeID(CFTypeRefObject *_self, PyObject *_args) 168 { 169 PyObject *_res = NULL; 170 CFTypeID _rv; 171 #ifndef CFGetTypeID 172 PyMac_PRECHECK(CFGetTypeID); 173 #endif 174 if (!PyArg_ParseTuple(_args, "")) 175 return NULL; 176 _rv = CFGetTypeID(_self->ob_itself); 177 _res = Py_BuildValue("l", 178 _rv); 179 return _res; 180 } 181 182 static PyObject *CFTypeRefObj_CFRetain(CFTypeRefObject *_self, PyObject *_args) 183 { 184 PyObject *_res = NULL; 185 CFTypeRef _rv; 186 #ifndef CFRetain 187 PyMac_PRECHECK(CFRetain); 188 #endif 189 if (!PyArg_ParseTuple(_args, "")) 190 return NULL; 191 _rv = CFRetain(_self->ob_itself); 192 _res = Py_BuildValue("O&", 193 CFTypeRefObj_New, _rv); 194 return _res; 195 } 196 197 static PyObject *CFTypeRefObj_CFRelease(CFTypeRefObject *_self, PyObject *_args) 198 { 199 PyObject *_res = NULL; 200 #ifndef CFRelease 201 PyMac_PRECHECK(CFRelease); 202 #endif 203 if (!PyArg_ParseTuple(_args, "")) 204 return NULL; 205 CFRelease(_self->ob_itself); 206 Py_INCREF(Py_None); 207 _res = Py_None; 208 return _res; 209 } 210 211 static PyObject *CFTypeRefObj_CFGetRetainCount(CFTypeRefObject *_self, PyObject *_args) 212 { 213 PyObject *_res = NULL; 214 CFIndex _rv; 215 #ifndef CFGetRetainCount 216 PyMac_PRECHECK(CFGetRetainCount); 217 #endif 218 if (!PyArg_ParseTuple(_args, "")) 219 return NULL; 220 _rv = CFGetRetainCount(_self->ob_itself); 221 _res = Py_BuildValue("l", 222 _rv); 223 return _res; 224 } 225 226 static PyObject *CFTypeRefObj_CFEqual(CFTypeRefObject *_self, PyObject *_args) 227 { 228 PyObject *_res = NULL; 229 Boolean _rv; 230 CFTypeRef cf2; 231 #ifndef CFEqual 232 PyMac_PRECHECK(CFEqual); 233 #endif 234 if (!PyArg_ParseTuple(_args, "O&", 235 CFTypeRefObj_Convert, &cf2)) 236 return NULL; 237 _rv = CFEqual(_self->ob_itself, 238 cf2); 239 _res = Py_BuildValue("l", 240 _rv); 241 return _res; 242 } 243 244 static PyObject *CFTypeRefObj_CFHash(CFTypeRefObject *_self, PyObject *_args) 245 { 246 PyObject *_res = NULL; 247 CFHashCode _rv; 248 #ifndef CFHash 249 PyMac_PRECHECK(CFHash); 250 #endif 251 if (!PyArg_ParseTuple(_args, "")) 252 return NULL; 253 _rv = CFHash(_self->ob_itself); 254 _res = Py_BuildValue("l", 255 _rv); 256 return _res; 257 } 258 259 static PyObject *CFTypeRefObj_CFCopyDescription(CFTypeRefObject *_self, PyObject *_args) 260 { 261 PyObject *_res = NULL; 262 CFStringRef _rv; 263 #ifndef CFCopyDescription 264 PyMac_PRECHECK(CFCopyDescription); 265 #endif 266 if (!PyArg_ParseTuple(_args, "")) 267 return NULL; 268 _rv = CFCopyDescription(_self->ob_itself); 269 _res = Py_BuildValue("O&", 270 CFStringRefObj_New, _rv); 271 return _res; 272 } 273 274 static PyObject *CFTypeRefObj_CFPropertyListCreateXMLData(CFTypeRefObject *_self, PyObject *_args) 275 { 276 PyObject *_res = NULL; 277 CFDataRef _rv; 278 if (!PyArg_ParseTuple(_args, "")) 279 return NULL; 280 _rv = CFPropertyListCreateXMLData((CFAllocatorRef)NULL, 281 _self->ob_itself); 282 _res = Py_BuildValue("O&", 283 CFDataRefObj_New, _rv); 284 return _res; 285 } 286 287 static PyObject *CFTypeRefObj_CFPropertyListCreateDeepCopy(CFTypeRefObject *_self, PyObject *_args) 288 { 289 PyObject *_res = NULL; 290 CFTypeRef _rv; 291 CFOptionFlags mutabilityOption; 292 if (!PyArg_ParseTuple(_args, "l", 293 &mutabilityOption)) 294 return NULL; 295 _rv = CFPropertyListCreateDeepCopy((CFAllocatorRef)NULL, 296 _self->ob_itself, 297 mutabilityOption); 298 _res = Py_BuildValue("O&", 299 CFTypeRefObj_New, _rv); 300 return _res; 301 } 302 303 static PyObject *CFTypeRefObj_CFShow(CFTypeRefObject *_self, PyObject *_args) 304 { 305 PyObject *_res = NULL; 306 #ifndef CFShow 307 PyMac_PRECHECK(CFShow); 308 #endif 309 if (!PyArg_ParseTuple(_args, "")) 310 return NULL; 311 CFShow(_self->ob_itself); 312 Py_INCREF(Py_None); 313 _res = Py_None; 314 return _res; 315 } 316 317 static PyObject *CFTypeRefObj_CFPropertyListCreateFromXMLData(CFTypeRefObject *_self, PyObject *_args) 318 { 319 PyObject *_res = NULL; 320 321 CFTypeRef _rv; 322 CFOptionFlags mutabilityOption; 323 CFStringRef errorString; 324 if (!PyArg_ParseTuple(_args, "l", 325 &mutabilityOption)) 326 return NULL; 327 _rv = CFPropertyListCreateFromXMLData((CFAllocatorRef)NULL, 328 _self->ob_itself, 329 mutabilityOption, 330 &errorString); 331 if (errorString) 332 CFRelease(errorString); 333 if (_rv == NULL) { 334 PyErr_SetString(PyExc_RuntimeError, "Parse error in XML data"); 335 return NULL; 336 } 337 _res = Py_BuildValue("O&", 338 CFTypeRefObj_New, _rv); 339 return _res; 340 341 } 342 343 static PyObject *CFTypeRefObj_toPython(CFTypeRefObject *_self, PyObject *_args) 344 { 345 PyObject *_res = NULL; 346 347 _res = PyCF_CF2Python(_self->ob_itself); 348 return _res; 349 350 } 351 352 static PyMethodDef CFTypeRefObj_methods[] = { 353 {"CFGetTypeID", (PyCFunction)CFTypeRefObj_CFGetTypeID, 1, 354 PyDoc_STR("() -> (CFTypeID _rv)")}, 355 {"CFRetain", (PyCFunction)CFTypeRefObj_CFRetain, 1, 356 PyDoc_STR("() -> (CFTypeRef _rv)")}, 357 {"CFRelease", (PyCFunction)CFTypeRefObj_CFRelease, 1, 358 PyDoc_STR("() -> None")}, 359 {"CFGetRetainCount", (PyCFunction)CFTypeRefObj_CFGetRetainCount, 1, 360 PyDoc_STR("() -> (CFIndex _rv)")}, 361 {"CFEqual", (PyCFunction)CFTypeRefObj_CFEqual, 1, 362 PyDoc_STR("(CFTypeRef cf2) -> (Boolean _rv)")}, 363 {"CFHash", (PyCFunction)CFTypeRefObj_CFHash, 1, 364 PyDoc_STR("() -> (CFHashCode _rv)")}, 365 {"CFCopyDescription", (PyCFunction)CFTypeRefObj_CFCopyDescription, 1, 366 PyDoc_STR("() -> (CFStringRef _rv)")}, 367 {"CFPropertyListCreateXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateXMLData, 1, 368 PyDoc_STR("() -> (CFDataRef _rv)")}, 369 {"CFPropertyListCreateDeepCopy", (PyCFunction)CFTypeRefObj_CFPropertyListCreateDeepCopy, 1, 370 PyDoc_STR("(CFOptionFlags mutabilityOption) -> (CFTypeRef _rv)")}, 371 {"CFShow", (PyCFunction)CFTypeRefObj_CFShow, 1, 372 PyDoc_STR("() -> None")}, 373 {"CFPropertyListCreateFromXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateFromXMLData, 1, 374 PyDoc_STR("(CFOptionFlags mutabilityOption) -> (CFTypeRefObj)")}, 375 {"toPython", (PyCFunction)CFTypeRefObj_toPython, 1, 376 PyDoc_STR("() -> (python_object)")}, 377 {NULL, NULL, 0} 378 }; 379 380 #define CFTypeRefObj_getsetlist NULL 381 382 383 static int CFTypeRefObj_compare(CFTypeRefObject *self, CFTypeRefObject *other) 384 { 385 /* XXXX Or should we use CFEqual?? */ 386 if ( self->ob_itself > other->ob_itself ) return 1; 387 if ( self->ob_itself < other->ob_itself ) return -1; 388 return 0; 389 } 390 391 static PyObject * CFTypeRefObj_repr(CFTypeRefObject *self) 392 { 393 char buf[100]; 394 sprintf(buf, "<CFTypeRef type-%d object at 0x%8.8x for 0x%8.8x>", (int)CFGetTypeID(self->ob_itself), (unsigned)self, (unsigned)self->ob_itself); 395 return PyString_FromString(buf); 396 } 397 398 static int CFTypeRefObj_hash(CFTypeRefObject *self) 399 { 400 /* XXXX Or should we use CFHash?? */ 401 return (int)self->ob_itself; 402 } 403 static int CFTypeRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 404 { 405 CFTypeRef itself; 406 char *kw[] = {"itself", 0}; 407 408 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 409 { 410 ((CFTypeRefObject *)_self)->ob_itself = itself; 411 return 0; 412 } 413 return -1; 414 } 415 416 #define CFTypeRefObj_tp_alloc PyType_GenericAlloc 417 418 static PyObject *CFTypeRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 419 { 420 PyObject *self; 421 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 422 ((CFTypeRefObject *)self)->ob_itself = NULL; 423 ((CFTypeRefObject *)self)->ob_freeit = CFRelease; 424 return self; 425 } 426 427 #define CFTypeRefObj_tp_free PyObject_Del 428 429 430 PyTypeObject CFTypeRef_Type = { 431 PyObject_HEAD_INIT(NULL) 432 0, /*ob_size*/ 433 "_CF.CFTypeRef", /*tp_name*/ 434 sizeof(CFTypeRefObject), /*tp_basicsize*/ 435 0, /*tp_itemsize*/ 436 /* methods */ 437 (destructor) CFTypeRefObj_dealloc, /*tp_dealloc*/ 438 0, /*tp_print*/ 439 (getattrfunc)0, /*tp_getattr*/ 440 (setattrfunc)0, /*tp_setattr*/ 441 (cmpfunc) CFTypeRefObj_compare, /*tp_compare*/ 442 (reprfunc) CFTypeRefObj_repr, /*tp_repr*/ 443 (PyNumberMethods *)0, /* tp_as_number */ 444 (PySequenceMethods *)0, /* tp_as_sequence */ 445 (PyMappingMethods *)0, /* tp_as_mapping */ 446 (hashfunc) CFTypeRefObj_hash, /*tp_hash*/ 447 0, /*tp_call*/ 448 0, /*tp_str*/ 449 PyObject_GenericGetAttr, /*tp_getattro*/ 450 PyObject_GenericSetAttr, /*tp_setattro */ 451 0, /*tp_as_buffer*/ 452 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 453 0, /*tp_doc*/ 454 0, /*tp_traverse*/ 455 0, /*tp_clear*/ 456 0, /*tp_richcompare*/ 457 0, /*tp_weaklistoffset*/ 458 0, /*tp_iter*/ 459 0, /*tp_iternext*/ 460 CFTypeRefObj_methods, /* tp_methods */ 461 0, /*tp_members*/ 462 CFTypeRefObj_getsetlist, /*tp_getset*/ 463 0, /*tp_base*/ 464 0, /*tp_dict*/ 465 0, /*tp_descr_get*/ 466 0, /*tp_descr_set*/ 467 0, /*tp_dictoffset*/ 468 CFTypeRefObj_tp_init, /* tp_init */ 469 CFTypeRefObj_tp_alloc, /* tp_alloc */ 470 CFTypeRefObj_tp_new, /* tp_new */ 471 CFTypeRefObj_tp_free, /* tp_free */ 472 }; 473 474 /* ------------------- End object type CFTypeRef -------------------- */ 475 476 477 /* --------------------- Object type CFArrayRef --------------------- */ 478 479 PyTypeObject CFArrayRef_Type; 480 481 #define CFArrayRefObj_Check(x) ((x)->ob_type == &CFArrayRef_Type || PyObject_TypeCheck((x), &CFArrayRef_Type)) 482 483 typedef struct CFArrayRefObject { 484 PyObject_HEAD 485 CFArrayRef ob_itself; 486 void (*ob_freeit)(CFTypeRef ptr); 487 } CFArrayRefObject; 488 489 PyObject *CFArrayRefObj_New(CFArrayRef itself) 490 { 491 CFArrayRefObject *it; 492 if (itself == NULL) 493 { 494 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 495 return NULL; 496 } 497 it = PyObject_NEW(CFArrayRefObject, &CFArrayRef_Type); 498 if (it == NULL) return NULL; 499 /* XXXX Should we tp_init or tp_new our basetype? */ 500 it->ob_itself = itself; 501 it->ob_freeit = CFRelease; 502 return (PyObject *)it; 503 } 504 505 int CFArrayRefObj_Convert(PyObject *v, CFArrayRef *p_itself) 506 { 507 508 if (v == Py_None) { *p_itself = NULL; return 1; } 509 /* Check for other CF objects here */ 510 511 if (!CFArrayRefObj_Check(v)) 512 { 513 PyErr_SetString(PyExc_TypeError, "CFArrayRef required"); 514 return 0; 515 } 516 *p_itself = ((CFArrayRefObject *)v)->ob_itself; 517 return 1; 518 } 519 520 static void CFArrayRefObj_dealloc(CFArrayRefObject *self) 521 { 522 if (self->ob_freeit && self->ob_itself) 523 { 524 self->ob_freeit((CFTypeRef)self->ob_itself); 525 self->ob_itself = NULL; 526 } 527 CFTypeRef_Type.tp_dealloc((PyObject *)self); 528 } 529 530 static PyObject *CFArrayRefObj_CFArrayCreateCopy(CFArrayRefObject *_self, PyObject *_args) 531 { 532 PyObject *_res = NULL; 533 CFArrayRef _rv; 534 if (!PyArg_ParseTuple(_args, "")) 535 return NULL; 536 _rv = CFArrayCreateCopy((CFAllocatorRef)NULL, 537 _self->ob_itself); 538 _res = Py_BuildValue("O&", 539 CFArrayRefObj_New, _rv); 540 return _res; 541 } 542 543 static PyObject *CFArrayRefObj_CFArrayGetCount(CFArrayRefObject *_self, PyObject *_args) 544 { 545 PyObject *_res = NULL; 546 CFIndex _rv; 547 #ifndef CFArrayGetCount 548 PyMac_PRECHECK(CFArrayGetCount); 549 #endif 550 if (!PyArg_ParseTuple(_args, "")) 551 return NULL; 552 _rv = CFArrayGetCount(_self->ob_itself); 553 _res = Py_BuildValue("l", 554 _rv); 555 return _res; 556 } 557 558 static PyObject *CFArrayRefObj_CFStringCreateByCombiningStrings(CFArrayRefObject *_self, PyObject *_args) 559 { 560 PyObject *_res = NULL; 561 CFStringRef _rv; 562 CFStringRef separatorString; 563 if (!PyArg_ParseTuple(_args, "O&", 564 CFStringRefObj_Convert, &separatorString)) 565 return NULL; 566 _rv = CFStringCreateByCombiningStrings((CFAllocatorRef)NULL, 567 _self->ob_itself, 568 separatorString); 569 _res = Py_BuildValue("O&", 570 CFStringRefObj_New, _rv); 571 return _res; 572 } 573 574 static PyMethodDef CFArrayRefObj_methods[] = { 575 {"CFArrayCreateCopy", (PyCFunction)CFArrayRefObj_CFArrayCreateCopy, 1, 576 PyDoc_STR("() -> (CFArrayRef _rv)")}, 577 {"CFArrayGetCount", (PyCFunction)CFArrayRefObj_CFArrayGetCount, 1, 578 PyDoc_STR("() -> (CFIndex _rv)")}, 579 {"CFStringCreateByCombiningStrings", (PyCFunction)CFArrayRefObj_CFStringCreateByCombiningStrings, 1, 580 PyDoc_STR("(CFStringRef separatorString) -> (CFStringRef _rv)")}, 581 {NULL, NULL, 0} 582 }; 583 584 #define CFArrayRefObj_getsetlist NULL 585 586 587 static int CFArrayRefObj_compare(CFArrayRefObject *self, CFArrayRefObject *other) 588 { 589 /* XXXX Or should we use CFEqual?? */ 590 if ( self->ob_itself > other->ob_itself ) return 1; 591 if ( self->ob_itself < other->ob_itself ) return -1; 592 return 0; 593 } 594 595 static PyObject * CFArrayRefObj_repr(CFArrayRefObject *self) 596 { 597 char buf[100]; 598 sprintf(buf, "<CFArrayRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 599 return PyString_FromString(buf); 600 } 601 602 static int CFArrayRefObj_hash(CFArrayRefObject *self) 603 { 604 /* XXXX Or should we use CFHash?? */ 605 return (int)self->ob_itself; 606 } 607 static int CFArrayRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 608 { 609 CFArrayRef itself; 610 char *kw[] = {"itself", 0}; 611 612 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFArrayRefObj_Convert, &itself)) 613 { 614 ((CFArrayRefObject *)_self)->ob_itself = itself; 615 return 0; 616 } 617 618 /* Any CFTypeRef descendent is allowed as initializer too */ 619 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 620 { 621 ((CFArrayRefObject *)_self)->ob_itself = itself; 622 return 0; 623 } 624 return -1; 625 } 626 627 #define CFArrayRefObj_tp_alloc PyType_GenericAlloc 628 629 static PyObject *CFArrayRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 630 { 631 PyObject *self; 632 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 633 ((CFArrayRefObject *)self)->ob_itself = NULL; 634 ((CFArrayRefObject *)self)->ob_freeit = CFRelease; 635 return self; 636 } 637 638 #define CFArrayRefObj_tp_free PyObject_Del 639 640 641 PyTypeObject CFArrayRef_Type = { 642 PyObject_HEAD_INIT(NULL) 643 0, /*ob_size*/ 644 "_CF.CFArrayRef", /*tp_name*/ 645 sizeof(CFArrayRefObject), /*tp_basicsize*/ 646 0, /*tp_itemsize*/ 647 /* methods */ 648 (destructor) CFArrayRefObj_dealloc, /*tp_dealloc*/ 649 0, /*tp_print*/ 650 (getattrfunc)0, /*tp_getattr*/ 651 (setattrfunc)0, /*tp_setattr*/ 652 (cmpfunc) CFArrayRefObj_compare, /*tp_compare*/ 653 (reprfunc) CFArrayRefObj_repr, /*tp_repr*/ 654 (PyNumberMethods *)0, /* tp_as_number */ 655 (PySequenceMethods *)0, /* tp_as_sequence */ 656 (PyMappingMethods *)0, /* tp_as_mapping */ 657 (hashfunc) CFArrayRefObj_hash, /*tp_hash*/ 658 0, /*tp_call*/ 659 0, /*tp_str*/ 660 PyObject_GenericGetAttr, /*tp_getattro*/ 661 PyObject_GenericSetAttr, /*tp_setattro */ 662 0, /*tp_as_buffer*/ 663 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 664 0, /*tp_doc*/ 665 0, /*tp_traverse*/ 666 0, /*tp_clear*/ 667 0, /*tp_richcompare*/ 668 0, /*tp_weaklistoffset*/ 669 0, /*tp_iter*/ 670 0, /*tp_iternext*/ 671 CFArrayRefObj_methods, /* tp_methods */ 672 0, /*tp_members*/ 673 CFArrayRefObj_getsetlist, /*tp_getset*/ 674 0, /*tp_base*/ 675 0, /*tp_dict*/ 676 0, /*tp_descr_get*/ 677 0, /*tp_descr_set*/ 678 0, /*tp_dictoffset*/ 679 CFArrayRefObj_tp_init, /* tp_init */ 680 CFArrayRefObj_tp_alloc, /* tp_alloc */ 681 CFArrayRefObj_tp_new, /* tp_new */ 682 CFArrayRefObj_tp_free, /* tp_free */ 683 }; 684 685 /* ------------------- End object type CFArrayRef ------------------- */ 686 687 688 /* ----------------- Object type CFMutableArrayRef ------------------ */ 689 690 PyTypeObject CFMutableArrayRef_Type; 691 692 #define CFMutableArrayRefObj_Check(x) ((x)->ob_type == &CFMutableArrayRef_Type || PyObject_TypeCheck((x), &CFMutableArrayRef_Type)) 693 694 typedef struct CFMutableArrayRefObject { 695 PyObject_HEAD 696 CFMutableArrayRef ob_itself; 697 void (*ob_freeit)(CFTypeRef ptr); 698 } CFMutableArrayRefObject; 699 700 PyObject *CFMutableArrayRefObj_New(CFMutableArrayRef itself) 701 { 702 CFMutableArrayRefObject *it; 703 if (itself == NULL) 704 { 705 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 706 return NULL; 707 } 708 it = PyObject_NEW(CFMutableArrayRefObject, &CFMutableArrayRef_Type); 709 if (it == NULL) return NULL; 710 /* XXXX Should we tp_init or tp_new our basetype? */ 711 it->ob_itself = itself; 712 it->ob_freeit = CFRelease; 713 return (PyObject *)it; 714 } 715 716 int CFMutableArrayRefObj_Convert(PyObject *v, CFMutableArrayRef *p_itself) 717 { 718 719 if (v == Py_None) { *p_itself = NULL; return 1; } 720 /* Check for other CF objects here */ 721 722 if (!CFMutableArrayRefObj_Check(v)) 723 { 724 PyErr_SetString(PyExc_TypeError, "CFMutableArrayRef required"); 725 return 0; 726 } 727 *p_itself = ((CFMutableArrayRefObject *)v)->ob_itself; 728 return 1; 729 } 730 731 static void CFMutableArrayRefObj_dealloc(CFMutableArrayRefObject *self) 732 { 733 if (self->ob_freeit && self->ob_itself) 734 { 735 self->ob_freeit((CFTypeRef)self->ob_itself); 736 self->ob_itself = NULL; 737 } 738 CFArrayRef_Type.tp_dealloc((PyObject *)self); 739 } 740 741 static PyObject *CFMutableArrayRefObj_CFArrayRemoveValueAtIndex(CFMutableArrayRefObject *_self, PyObject *_args) 742 { 743 PyObject *_res = NULL; 744 CFIndex idx; 745 #ifndef CFArrayRemoveValueAtIndex 746 PyMac_PRECHECK(CFArrayRemoveValueAtIndex); 747 #endif 748 if (!PyArg_ParseTuple(_args, "l", 749 &idx)) 750 return NULL; 751 CFArrayRemoveValueAtIndex(_self->ob_itself, 752 idx); 753 Py_INCREF(Py_None); 754 _res = Py_None; 755 return _res; 756 } 757 758 static PyObject *CFMutableArrayRefObj_CFArrayRemoveAllValues(CFMutableArrayRefObject *_self, PyObject *_args) 759 { 760 PyObject *_res = NULL; 761 #ifndef CFArrayRemoveAllValues 762 PyMac_PRECHECK(CFArrayRemoveAllValues); 763 #endif 764 if (!PyArg_ParseTuple(_args, "")) 765 return NULL; 766 CFArrayRemoveAllValues(_self->ob_itself); 767 Py_INCREF(Py_None); 768 _res = Py_None; 769 return _res; 770 } 771 772 static PyObject *CFMutableArrayRefObj_CFArrayExchangeValuesAtIndices(CFMutableArrayRefObject *_self, PyObject *_args) 773 { 774 PyObject *_res = NULL; 775 CFIndex idx1; 776 CFIndex idx2; 777 #ifndef CFArrayExchangeValuesAtIndices 778 PyMac_PRECHECK(CFArrayExchangeValuesAtIndices); 779 #endif 780 if (!PyArg_ParseTuple(_args, "ll", 781 &idx1, 782 &idx2)) 783 return NULL; 784 CFArrayExchangeValuesAtIndices(_self->ob_itself, 785 idx1, 786 idx2); 787 Py_INCREF(Py_None); 788 _res = Py_None; 789 return _res; 790 } 791 792 static PyObject *CFMutableArrayRefObj_CFArrayAppendArray(CFMutableArrayRefObject *_self, PyObject *_args) 793 { 794 PyObject *_res = NULL; 795 CFArrayRef otherArray; 796 CFRange otherRange; 797 #ifndef CFArrayAppendArray 798 PyMac_PRECHECK(CFArrayAppendArray); 799 #endif 800 if (!PyArg_ParseTuple(_args, "O&O&", 801 CFArrayRefObj_Convert, &otherArray, 802 CFRange_Convert, &otherRange)) 803 return NULL; 804 CFArrayAppendArray(_self->ob_itself, 805 otherArray, 806 otherRange); 807 Py_INCREF(Py_None); 808 _res = Py_None; 809 return _res; 810 } 811 812 static PyMethodDef CFMutableArrayRefObj_methods[] = { 813 {"CFArrayRemoveValueAtIndex", (PyCFunction)CFMutableArrayRefObj_CFArrayRemoveValueAtIndex, 1, 814 PyDoc_STR("(CFIndex idx) -> None")}, 815 {"CFArrayRemoveAllValues", (PyCFunction)CFMutableArrayRefObj_CFArrayRemoveAllValues, 1, 816 PyDoc_STR("() -> None")}, 817 {"CFArrayExchangeValuesAtIndices", (PyCFunction)CFMutableArrayRefObj_CFArrayExchangeValuesAtIndices, 1, 818 PyDoc_STR("(CFIndex idx1, CFIndex idx2) -> None")}, 819 {"CFArrayAppendArray", (PyCFunction)CFMutableArrayRefObj_CFArrayAppendArray, 1, 820 PyDoc_STR("(CFArrayRef otherArray, CFRange otherRange) -> None")}, 821 {NULL, NULL, 0} 822 }; 823 824 #define CFMutableArrayRefObj_getsetlist NULL 825 826 827 static int CFMutableArrayRefObj_compare(CFMutableArrayRefObject *self, CFMutableArrayRefObject *other) 828 { 829 /* XXXX Or should we use CFEqual?? */ 830 if ( self->ob_itself > other->ob_itself ) return 1; 831 if ( self->ob_itself < other->ob_itself ) return -1; 832 return 0; 833 } 834 835 static PyObject * CFMutableArrayRefObj_repr(CFMutableArrayRefObject *self) 836 { 837 char buf[100]; 838 sprintf(buf, "<CFMutableArrayRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 839 return PyString_FromString(buf); 840 } 841 842 static int CFMutableArrayRefObj_hash(CFMutableArrayRefObject *self) 843 { 844 /* XXXX Or should we use CFHash?? */ 845 return (int)self->ob_itself; 846 } 847 static int CFMutableArrayRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 848 { 849 CFMutableArrayRef itself; 850 char *kw[] = {"itself", 0}; 851 852 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableArrayRefObj_Convert, &itself)) 853 { 854 ((CFMutableArrayRefObject *)_self)->ob_itself = itself; 855 return 0; 856 } 857 858 /* Any CFTypeRef descendent is allowed as initializer too */ 859 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 860 { 861 ((CFMutableArrayRefObject *)_self)->ob_itself = itself; 862 return 0; 863 } 864 return -1; 865 } 866 867 #define CFMutableArrayRefObj_tp_alloc PyType_GenericAlloc 868 869 static PyObject *CFMutableArrayRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 870 { 871 PyObject *self; 872 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 873 ((CFMutableArrayRefObject *)self)->ob_itself = NULL; 874 ((CFMutableArrayRefObject *)self)->ob_freeit = CFRelease; 875 return self; 876 } 877 878 #define CFMutableArrayRefObj_tp_free PyObject_Del 879 880 881 PyTypeObject CFMutableArrayRef_Type = { 882 PyObject_HEAD_INIT(NULL) 883 0, /*ob_size*/ 884 "_CF.CFMutableArrayRef", /*tp_name*/ 885 sizeof(CFMutableArrayRefObject), /*tp_basicsize*/ 886 0, /*tp_itemsize*/ 887 /* methods */ 888 (destructor) CFMutableArrayRefObj_dealloc, /*tp_dealloc*/ 889 0, /*tp_print*/ 890 (getattrfunc)0, /*tp_getattr*/ 891 (setattrfunc)0, /*tp_setattr*/ 892 (cmpfunc) CFMutableArrayRefObj_compare, /*tp_compare*/ 893 (reprfunc) CFMutableArrayRefObj_repr, /*tp_repr*/ 894 (PyNumberMethods *)0, /* tp_as_number */ 895 (PySequenceMethods *)0, /* tp_as_sequence */ 896 (PyMappingMethods *)0, /* tp_as_mapping */ 897 (hashfunc) CFMutableArrayRefObj_hash, /*tp_hash*/ 898 0, /*tp_call*/ 899 0, /*tp_str*/ 900 PyObject_GenericGetAttr, /*tp_getattro*/ 901 PyObject_GenericSetAttr, /*tp_setattro */ 902 0, /*tp_as_buffer*/ 903 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 904 0, /*tp_doc*/ 905 0, /*tp_traverse*/ 906 0, /*tp_clear*/ 907 0, /*tp_richcompare*/ 908 0, /*tp_weaklistoffset*/ 909 0, /*tp_iter*/ 910 0, /*tp_iternext*/ 911 CFMutableArrayRefObj_methods, /* tp_methods */ 912 0, /*tp_members*/ 913 CFMutableArrayRefObj_getsetlist, /*tp_getset*/ 914 0, /*tp_base*/ 915 0, /*tp_dict*/ 916 0, /*tp_descr_get*/ 917 0, /*tp_descr_set*/ 918 0, /*tp_dictoffset*/ 919 CFMutableArrayRefObj_tp_init, /* tp_init */ 920 CFMutableArrayRefObj_tp_alloc, /* tp_alloc */ 921 CFMutableArrayRefObj_tp_new, /* tp_new */ 922 CFMutableArrayRefObj_tp_free, /* tp_free */ 923 }; 924 925 /* --------------- End object type CFMutableArrayRef ---------------- */ 926 927 928 /* ------------------ Object type CFDictionaryRef ------------------- */ 929 930 PyTypeObject CFDictionaryRef_Type; 931 932 #define CFDictionaryRefObj_Check(x) ((x)->ob_type == &CFDictionaryRef_Type || PyObject_TypeCheck((x), &CFDictionaryRef_Type)) 933 934 typedef struct CFDictionaryRefObject { 935 PyObject_HEAD 936 CFDictionaryRef ob_itself; 937 void (*ob_freeit)(CFTypeRef ptr); 938 } CFDictionaryRefObject; 939 940 PyObject *CFDictionaryRefObj_New(CFDictionaryRef itself) 941 { 942 CFDictionaryRefObject *it; 943 if (itself == NULL) 944 { 945 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 946 return NULL; 947 } 948 it = PyObject_NEW(CFDictionaryRefObject, &CFDictionaryRef_Type); 949 if (it == NULL) return NULL; 950 /* XXXX Should we tp_init or tp_new our basetype? */ 951 it->ob_itself = itself; 952 it->ob_freeit = CFRelease; 953 return (PyObject *)it; 954 } 955 956 int CFDictionaryRefObj_Convert(PyObject *v, CFDictionaryRef *p_itself) 957 { 958 959 if (v == Py_None) { *p_itself = NULL; return 1; } 960 /* Check for other CF objects here */ 961 962 if (!CFDictionaryRefObj_Check(v)) 963 { 964 PyErr_SetString(PyExc_TypeError, "CFDictionaryRef required"); 965 return 0; 966 } 967 *p_itself = ((CFDictionaryRefObject *)v)->ob_itself; 968 return 1; 969 } 970 971 static void CFDictionaryRefObj_dealloc(CFDictionaryRefObject *self) 972 { 973 if (self->ob_freeit && self->ob_itself) 974 { 975 self->ob_freeit((CFTypeRef)self->ob_itself); 976 self->ob_itself = NULL; 977 } 978 CFTypeRef_Type.tp_dealloc((PyObject *)self); 979 } 980 981 static PyObject *CFDictionaryRefObj_CFDictionaryCreateCopy(CFDictionaryRefObject *_self, PyObject *_args) 982 { 983 PyObject *_res = NULL; 984 CFDictionaryRef _rv; 985 if (!PyArg_ParseTuple(_args, "")) 986 return NULL; 987 _rv = CFDictionaryCreateCopy((CFAllocatorRef)NULL, 988 _self->ob_itself); 989 _res = Py_BuildValue("O&", 990 CFDictionaryRefObj_New, _rv); 991 return _res; 992 } 993 994 static PyObject *CFDictionaryRefObj_CFDictionaryGetCount(CFDictionaryRefObject *_self, PyObject *_args) 995 { 996 PyObject *_res = NULL; 997 CFIndex _rv; 998 #ifndef CFDictionaryGetCount 999 PyMac_PRECHECK(CFDictionaryGetCount); 1000 #endif 1001 if (!PyArg_ParseTuple(_args, "")) 1002 return NULL; 1003 _rv = CFDictionaryGetCount(_self->ob_itself); 1004 _res = Py_BuildValue("l", 1005 _rv); 1006 return _res; 1007 } 1008 1009 static PyMethodDef CFDictionaryRefObj_methods[] = { 1010 {"CFDictionaryCreateCopy", (PyCFunction)CFDictionaryRefObj_CFDictionaryCreateCopy, 1, 1011 PyDoc_STR("() -> (CFDictionaryRef _rv)")}, 1012 {"CFDictionaryGetCount", (PyCFunction)CFDictionaryRefObj_CFDictionaryGetCount, 1, 1013 PyDoc_STR("() -> (CFIndex _rv)")}, 1014 {NULL, NULL, 0} 1015 }; 1016 1017 #define CFDictionaryRefObj_getsetlist NULL 1018 1019 1020 static int CFDictionaryRefObj_compare(CFDictionaryRefObject *self, CFDictionaryRefObject *other) 1021 { 1022 /* XXXX Or should we use CFEqual?? */ 1023 if ( self->ob_itself > other->ob_itself ) return 1; 1024 if ( self->ob_itself < other->ob_itself ) return -1; 1025 return 0; 1026 } 1027 1028 static PyObject * CFDictionaryRefObj_repr(CFDictionaryRefObject *self) 1029 { 1030 char buf[100]; 1031 sprintf(buf, "<CFDictionaryRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 1032 return PyString_FromString(buf); 1033 } 1034 1035 static int CFDictionaryRefObj_hash(CFDictionaryRefObject *self) 1036 { 1037 /* XXXX Or should we use CFHash?? */ 1038 return (int)self->ob_itself; 1039 } 1040 static int CFDictionaryRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 1041 { 1042 CFDictionaryRef itself; 1043 char *kw[] = {"itself", 0}; 1044 1045 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFDictionaryRefObj_Convert, &itself)) 1046 { 1047 ((CFDictionaryRefObject *)_self)->ob_itself = itself; 1048 return 0; 1049 } 1050 1051 /* Any CFTypeRef descendent is allowed as initializer too */ 1052 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 1053 { 1054 ((CFDictionaryRefObject *)_self)->ob_itself = itself; 1055 return 0; 1056 } 1057 return -1; 1058 } 1059 1060 #define CFDictionaryRefObj_tp_alloc PyType_GenericAlloc 1061 1062 static PyObject *CFDictionaryRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 1063 { 1064 PyObject *self; 1065 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 1066 ((CFDictionaryRefObject *)self)->ob_itself = NULL; 1067 ((CFDictionaryRefObject *)self)->ob_freeit = CFRelease; 1068 return self; 1069 } 1070 1071 #define CFDictionaryRefObj_tp_free PyObject_Del 1072 1073 1074 PyTypeObject CFDictionaryRef_Type = { 1075 PyObject_HEAD_INIT(NULL) 1076 0, /*ob_size*/ 1077 "_CF.CFDictionaryRef", /*tp_name*/ 1078 sizeof(CFDictionaryRefObject), /*tp_basicsize*/ 1079 0, /*tp_itemsize*/ 1080 /* methods */ 1081 (destructor) CFDictionaryRefObj_dealloc, /*tp_dealloc*/ 1082 0, /*tp_print*/ 1083 (getattrfunc)0, /*tp_getattr*/ 1084 (setattrfunc)0, /*tp_setattr*/ 1085 (cmpfunc) CFDictionaryRefObj_compare, /*tp_compare*/ 1086 (reprfunc) CFDictionaryRefObj_repr, /*tp_repr*/ 1087 (PyNumberMethods *)0, /* tp_as_number */ 1088 (PySequenceMethods *)0, /* tp_as_sequence */ 1089 (PyMappingMethods *)0, /* tp_as_mapping */ 1090 (hashfunc) CFDictionaryRefObj_hash, /*tp_hash*/ 1091 0, /*tp_call*/ 1092 0, /*tp_str*/ 1093 PyObject_GenericGetAttr, /*tp_getattro*/ 1094 PyObject_GenericSetAttr, /*tp_setattro */ 1095 0, /*tp_as_buffer*/ 1096 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 1097 0, /*tp_doc*/ 1098 0, /*tp_traverse*/ 1099 0, /*tp_clear*/ 1100 0, /*tp_richcompare*/ 1101 0, /*tp_weaklistoffset*/ 1102 0, /*tp_iter*/ 1103 0, /*tp_iternext*/ 1104 CFDictionaryRefObj_methods, /* tp_methods */ 1105 0, /*tp_members*/ 1106 CFDictionaryRefObj_getsetlist, /*tp_getset*/ 1107 0, /*tp_base*/ 1108 0, /*tp_dict*/ 1109 0, /*tp_descr_get*/ 1110 0, /*tp_descr_set*/ 1111 0, /*tp_dictoffset*/ 1112 CFDictionaryRefObj_tp_init, /* tp_init */ 1113 CFDictionaryRefObj_tp_alloc, /* tp_alloc */ 1114 CFDictionaryRefObj_tp_new, /* tp_new */ 1115 CFDictionaryRefObj_tp_free, /* tp_free */ 1116 }; 1117 1118 /* ---------------- End object type CFDictionaryRef ----------------- */ 1119 1120 1121 /* --------------- Object type CFMutableDictionaryRef --------------- */ 1122 1123 PyTypeObject CFMutableDictionaryRef_Type; 1124 1125 #define CFMutableDictionaryRefObj_Check(x) ((x)->ob_type == &CFMutableDictionaryRef_Type || PyObject_TypeCheck((x), &CFMutableDictionaryRef_Type)) 1126 1127 typedef struct CFMutableDictionaryRefObject { 1128 PyObject_HEAD 1129 CFMutableDictionaryRef ob_itself; 1130 void (*ob_freeit)(CFTypeRef ptr); 1131 } CFMutableDictionaryRefObject; 1132 1133 PyObject *CFMutableDictionaryRefObj_New(CFMutableDictionaryRef itself) 1134 { 1135 CFMutableDictionaryRefObject *it; 1136 if (itself == NULL) 1137 { 1138 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 1139 return NULL; 1140 } 1141 it = PyObject_NEW(CFMutableDictionaryRefObject, &CFMutableDictionaryRef_Type); 1142 if (it == NULL) return NULL; 1143 /* XXXX Should we tp_init or tp_new our basetype? */ 1144 it->ob_itself = itself; 1145 it->ob_freeit = CFRelease; 1146 return (PyObject *)it; 1147 } 1148 1149 int CFMutableDictionaryRefObj_Convert(PyObject *v, CFMutableDictionaryRef *p_itself) 1150 { 1151 1152 if (v == Py_None) { *p_itself = NULL; return 1; } 1153 /* Check for other CF objects here */ 1154 1155 if (!CFMutableDictionaryRefObj_Check(v)) 1156 { 1157 PyErr_SetString(PyExc_TypeError, "CFMutableDictionaryRef required"); 1158 return 0; 1159 } 1160 *p_itself = ((CFMutableDictionaryRefObject *)v)->ob_itself; 1161 return 1; 1162 } 1163 1164 static void CFMutableDictionaryRefObj_dealloc(CFMutableDictionaryRefObject *self) 1165 { 1166 if (self->ob_freeit && self->ob_itself) 1167 { 1168 self->ob_freeit((CFTypeRef)self->ob_itself); 1169 self->ob_itself = NULL; 1170 } 1171 CFDictionaryRef_Type.tp_dealloc((PyObject *)self); 1172 } 1173 1174 static PyObject *CFMutableDictionaryRefObj_CFDictionaryRemoveAllValues(CFMutableDictionaryRefObject *_self, PyObject *_args) 1175 { 1176 PyObject *_res = NULL; 1177 #ifndef CFDictionaryRemoveAllValues 1178 PyMac_PRECHECK(CFDictionaryRemoveAllValues); 1179 #endif 1180 if (!PyArg_ParseTuple(_args, "")) 1181 return NULL; 1182 CFDictionaryRemoveAllValues(_self->ob_itself); 1183 Py_INCREF(Py_None); 1184 _res = Py_None; 1185 return _res; 1186 } 1187 1188 static PyMethodDef CFMutableDictionaryRefObj_methods[] = { 1189 {"CFDictionaryRemoveAllValues", (PyCFunction)CFMutableDictionaryRefObj_CFDictionaryRemoveAllValues, 1, 1190 PyDoc_STR("() -> None")}, 1191 {NULL, NULL, 0} 1192 }; 1193 1194 #define CFMutableDictionaryRefObj_getsetlist NULL 1195 1196 1197 static int CFMutableDictionaryRefObj_compare(CFMutableDictionaryRefObject *self, CFMutableDictionaryRefObject *other) 1198 { 1199 /* XXXX Or should we use CFEqual?? */ 1200 if ( self->ob_itself > other->ob_itself ) return 1; 1201 if ( self->ob_itself < other->ob_itself ) return -1; 1202 return 0; 1203 } 1204 1205 static PyObject * CFMutableDictionaryRefObj_repr(CFMutableDictionaryRefObject *self) 1206 { 1207 char buf[100]; 1208 sprintf(buf, "<CFMutableDictionaryRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 1209 return PyString_FromString(buf); 1210 } 1211 1212 static int CFMutableDictionaryRefObj_hash(CFMutableDictionaryRefObject *self) 1213 { 1214 /* XXXX Or should we use CFHash?? */ 1215 return (int)self->ob_itself; 1216 } 1217 static int CFMutableDictionaryRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 1218 { 1219 CFMutableDictionaryRef itself; 1220 char *kw[] = {"itself", 0}; 1221 1222 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableDictionaryRefObj_Convert, &itself)) 1223 { 1224 ((CFMutableDictionaryRefObject *)_self)->ob_itself = itself; 1225 return 0; 1226 } 1227 1228 /* Any CFTypeRef descendent is allowed as initializer too */ 1229 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 1230 { 1231 ((CFMutableDictionaryRefObject *)_self)->ob_itself = itself; 1232 return 0; 1233 } 1234 return -1; 1235 } 1236 1237 #define CFMutableDictionaryRefObj_tp_alloc PyType_GenericAlloc 1238 1239 static PyObject *CFMutableDictionaryRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 1240 { 1241 PyObject *self; 1242 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 1243 ((CFMutableDictionaryRefObject *)self)->ob_itself = NULL; 1244 ((CFMutableDictionaryRefObject *)self)->ob_freeit = CFRelease; 1245 return self; 1246 } 1247 1248 #define CFMutableDictionaryRefObj_tp_free PyObject_Del 1249 1250 1251 PyTypeObject CFMutableDictionaryRef_Type = { 1252 PyObject_HEAD_INIT(NULL) 1253 0, /*ob_size*/ 1254 "_CF.CFMutableDictionaryRef", /*tp_name*/ 1255 sizeof(CFMutableDictionaryRefObject), /*tp_basicsize*/ 1256 0, /*tp_itemsize*/ 1257 /* methods */ 1258 (destructor) CFMutableDictionaryRefObj_dealloc, /*tp_dealloc*/ 1259 0, /*tp_print*/ 1260 (getattrfunc)0, /*tp_getattr*/ 1261 (setattrfunc)0, /*tp_setattr*/ 1262 (cmpfunc) CFMutableDictionaryRefObj_compare, /*tp_compare*/ 1263 (reprfunc) CFMutableDictionaryRefObj_repr, /*tp_repr*/ 1264 (PyNumberMethods *)0, /* tp_as_number */ 1265 (PySequenceMethods *)0, /* tp_as_sequence */ 1266 (PyMappingMethods *)0, /* tp_as_mapping */ 1267 (hashfunc) CFMutableDictionaryRefObj_hash, /*tp_hash*/ 1268 0, /*tp_call*/ 1269 0, /*tp_str*/ 1270 PyObject_GenericGetAttr, /*tp_getattro*/ 1271 PyObject_GenericSetAttr, /*tp_setattro */ 1272 0, /*tp_as_buffer*/ 1273 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 1274 0, /*tp_doc*/ 1275 0, /*tp_traverse*/ 1276 0, /*tp_clear*/ 1277 0, /*tp_richcompare*/ 1278 0, /*tp_weaklistoffset*/ 1279 0, /*tp_iter*/ 1280 0, /*tp_iternext*/ 1281 CFMutableDictionaryRefObj_methods, /* tp_methods */ 1282 0, /*tp_members*/ 1283 CFMutableDictionaryRefObj_getsetlist, /*tp_getset*/ 1284 0, /*tp_base*/ 1285 0, /*tp_dict*/ 1286 0, /*tp_descr_get*/ 1287 0, /*tp_descr_set*/ 1288 0, /*tp_dictoffset*/ 1289 CFMutableDictionaryRefObj_tp_init, /* tp_init */ 1290 CFMutableDictionaryRefObj_tp_alloc, /* tp_alloc */ 1291 CFMutableDictionaryRefObj_tp_new, /* tp_new */ 1292 CFMutableDictionaryRefObj_tp_free, /* tp_free */ 1293 }; 1294 1295 /* ------------- End object type CFMutableDictionaryRef ------------- */ 1296 1297 1298 /* --------------------- Object type CFDataRef ---------------------- */ 1299 1300 PyTypeObject CFDataRef_Type; 1301 1302 #define CFDataRefObj_Check(x) ((x)->ob_type == &CFDataRef_Type || PyObject_TypeCheck((x), &CFDataRef_Type)) 1303 1304 typedef struct CFDataRefObject { 1305 PyObject_HEAD 1306 CFDataRef ob_itself; 1307 void (*ob_freeit)(CFTypeRef ptr); 1308 } CFDataRefObject; 1309 1310 PyObject *CFDataRefObj_New(CFDataRef itself) 1311 { 1312 CFDataRefObject *it; 1313 if (itself == NULL) 1314 { 1315 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 1316 return NULL; 1317 } 1318 it = PyObject_NEW(CFDataRefObject, &CFDataRef_Type); 1319 if (it == NULL) return NULL; 1320 /* XXXX Should we tp_init or tp_new our basetype? */ 1321 it->ob_itself = itself; 1322 it->ob_freeit = CFRelease; 1323 return (PyObject *)it; 1324 } 1325 1326 int CFDataRefObj_Convert(PyObject *v, CFDataRef *p_itself) 1327 { 1328 1329 if (v == Py_None) { *p_itself = NULL; return 1; } 1330 if (PyString_Check(v)) { 1331 char *cStr; 1332 Py_ssize_t cLen; 1333 if( PyString_AsStringAndSize(v, &cStr, &cLen) < 0 ) return 0; 1334 *p_itself = CFDataCreate((CFAllocatorRef)NULL, (unsigned char *)cStr, cLen); 108 1335 return 1; 109 1336 } 110 return CFURLRefObj_Convert(v, p_itself); 111 } 112 113 static PyObject *CF_Error; 114 115 /* --------------------- Object type CFTypeRef ---------------------- */ 116 117 PyTypeObject CFTypeRef_Type; 118 119 #define CFTypeRefObj_Check(x) ((x)->ob_type == &CFTypeRef_Type || PyObject_TypeCheck((x), &CFTypeRef_Type)) 120 121 typedef struct CFTypeRefObject { 122 PyObject_HEAD 123 CFTypeRef ob_itself; 124 void (*ob_freeit)(CFTypeRef ptr); 125 } CFTypeRefObject; 126 127 PyObject *CFTypeRefObj_New(CFTypeRef itself) 128 { 129 CFTypeRefObject *it; 130 if (itself == NULL) 131 { 132 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 133 return NULL; 134 } 135 it = PyObject_NEW(CFTypeRefObject, &CFTypeRef_Type); 136 if (it == NULL) return NULL; 137 it->ob_itself = itself; 138 it->ob_freeit = CFRelease; 139 return (PyObject *)it; 140 } 141 142 int CFTypeRefObj_Convert(PyObject *v, CFTypeRef *p_itself) 143 { 144 145 if (v == Py_None) { *p_itself = NULL; return 1; } 146 /* Check for other CF objects here */ 147 148 if (!CFTypeRefObj_Check(v)) 149 { 150 PyErr_SetString(PyExc_TypeError, "CFTypeRef required"); 151 return 0; 152 } 153 *p_itself = ((CFTypeRefObject *)v)->ob_itself; 154 return 1; 155 } 156 157 static void CFTypeRefObj_dealloc(CFTypeRefObject *self) 158 { 159 if (self->ob_freeit && self->ob_itself) 160 { 161 self->ob_freeit((CFTypeRef)self->ob_itself); 162 self->ob_itself = NULL; 163 } 164 self->ob_type->tp_free((PyObject *)self); 165 } 166 167 static PyObject *CFTypeRefObj_CFGetTypeID(CFTypeRefObject *_self, PyObject *_args) 168 { 169 PyObject *_res = NULL; 170 CFTypeID _rv; 171 #ifndef CFGetTypeID 172 PyMac_PRECHECK(CFGetTypeID); 173 #endif 174 if (!PyArg_ParseTuple(_args, "")) 175 return NULL; 176 _rv = CFGetTypeID(_self->ob_itself); 177 _res = Py_BuildValue("l", 178 _rv); 179 return _res; 180 } 181 182 static PyObject *CFTypeRefObj_CFRetain(CFTypeRefObject *_self, PyObject *_args) 183 { 184 PyObject *_res = NULL; 185 CFTypeRef _rv; 186 #ifndef CFRetain 187 PyMac_PRECHECK(CFRetain); 188 #endif 189 if (!PyArg_ParseTuple(_args, "")) 190 return NULL; 191 _rv = CFRetain(_self->ob_itself); 192 _res = Py_BuildValue("O&", 193 CFTypeRefObj_New, _rv); 194 return _res; 195 } 196 197 static PyObject *CFTypeRefObj_CFRelease(CFTypeRefObject *_self, PyObject *_args) 198 { 199 PyObject *_res = NULL; 200 #ifndef CFRelease 201 PyMac_PRECHECK(CFRelease); 202 #endif 203 if (!PyArg_ParseTuple(_args, "")) 204 return NULL; 205 CFRelease(_self->ob_itself); 206 Py_INCREF(Py_None); 207 _res = Py_None; 208 return _res; 209 } 210 211 static PyObject *CFTypeRefObj_CFGetRetainCount(CFTypeRefObject *_self, PyObject *_args) 212 { 213 PyObject *_res = NULL; 214 CFIndex _rv; 215 #ifndef CFGetRetainCount 216 PyMac_PRECHECK(CFGetRetainCount); 217 #endif 218 if (!PyArg_ParseTuple(_args, "")) 219 return NULL; 220 _rv = CFGetRetainCount(_self->ob_itself); 221 _res = Py_BuildValue("l", 222 _rv); 223 return _res; 224 } 225 226 static PyObject *CFTypeRefObj_CFEqual(CFTypeRefObject *_self, PyObject *_args) 227 { 228 PyObject *_res = NULL; 229 Boolean _rv; 230 CFTypeRef cf2; 231 #ifndef CFEqual 232 PyMac_PRECHECK(CFEqual); 233 #endif 234 if (!PyArg_ParseTuple(_args, "O&", 235 CFTypeRefObj_Convert, &cf2)) 236 return NULL; 237 _rv = CFEqual(_self->ob_itself, 238 cf2); 239 _res = Py_BuildValue("l", 240 _rv); 241 return _res; 242 } 243 244 static PyObject *CFTypeRefObj_CFHash(CFTypeRefObject *_self, PyObject *_args) 245 { 246 PyObject *_res = NULL; 247 CFHashCode _rv; 248 #ifndef CFHash 249 PyMac_PRECHECK(CFHash); 250 #endif 251 if (!PyArg_ParseTuple(_args, "")) 252 return NULL; 253 _rv = CFHash(_self->ob_itself); 254 _res = Py_BuildValue("l", 255 _rv); 256 return _res; 257 } 258 259 static PyObject *CFTypeRefObj_CFCopyDescription(CFTypeRefObject *_self, PyObject *_args) 260 { 261 PyObject *_res = NULL; 262 CFStringRef _rv; 263 #ifndef CFCopyDescription 264 PyMac_PRECHECK(CFCopyDescription); 265 #endif 266 if (!PyArg_ParseTuple(_args, "")) 267 return NULL; 268 _rv = CFCopyDescription(_self->ob_itself); 269 _res = Py_BuildValue("O&", 270 CFStringRefObj_New, _rv); 271 return _res; 272 } 273 274 static PyObject *CFTypeRefObj_CFPropertyListCreateXMLData(CFTypeRefObject *_self, PyObject *_args) 275 { 276 PyObject *_res = NULL; 277 CFDataRef _rv; 278 if (!PyArg_ParseTuple(_args, "")) 279 return NULL; 280 _rv = CFPropertyListCreateXMLData((CFAllocatorRef)NULL, 281 _self->ob_itself); 282 _res = Py_BuildValue("O&", 283 CFDataRefObj_New, _rv); 284 return _res; 285 } 286 287 static PyObject *CFTypeRefObj_CFPropertyListCreateDeepCopy(CFTypeRefObject *_self, PyObject *_args) 288 { 289 PyObject *_res = NULL; 290 CFTypeRef _rv; 291 CFOptionFlags mutabilityOption; 292 if (!PyArg_ParseTuple(_args, "l", 293 &mutabilityOption)) 294 return NULL; 295 _rv = CFPropertyListCreateDeepCopy((CFAllocatorRef)NULL, 296 _self->ob_itself, 297 mutabilityOption); 298 _res = Py_BuildValue("O&", 299 CFTypeRefObj_New, _rv); 300 return _res; 301 } 302 303 static PyObject *CFTypeRefObj_CFShow(CFTypeRefObject *_self, PyObject *_args) 304 { 305 PyObject *_res = NULL; 306 #ifndef CFShow 307 PyMac_PRECHECK(CFShow); 308 #endif 309 if (!PyArg_ParseTuple(_args, "")) 310 return NULL; 311 CFShow(_self->ob_itself); 312 Py_INCREF(Py_None); 313 _res = Py_None; 314 return _res; 315 } 316 317 static PyObject *CFTypeRefObj_CFPropertyListCreateFromXMLData(CFTypeRefObject *_self, PyObject *_args) 318 { 319 PyObject *_res = NULL; 320 321 CFTypeRef _rv; 322 CFOptionFlags mutabilityOption; 323 CFStringRef errorString; 324 if (!PyArg_ParseTuple(_args, "l", 325 &mutabilityOption)) 326 return NULL; 327 _rv = CFPropertyListCreateFromXMLData((CFAllocatorRef)NULL, 328 _self->ob_itself, 329 mutabilityOption, 330 &errorString); 331 if (errorString) 332 CFRelease(errorString); 333 if (_rv == NULL) { 334 PyErr_SetString(PyExc_RuntimeError, "Parse error in XML data"); 335 return NULL; 336 } 337 _res = Py_BuildValue("O&", 338 CFTypeRefObj_New, _rv); 339 return _res; 340 341 } 342 343 static PyObject *CFTypeRefObj_toPython(CFTypeRefObject *_self, PyObject *_args) 344 { 345 PyObject *_res = NULL; 346 347 _res = PyCF_CF2Python(_self->ob_itself); 348 return _res; 349 350 } 351 352 static PyMethodDef CFTypeRefObj_methods[] = { 353 {"CFGetTypeID", (PyCFunction)CFTypeRefObj_CFGetTypeID, 1, 354 PyDoc_STR("() -> (CFTypeID _rv)")}, 355 {"CFRetain", (PyCFunction)CFTypeRefObj_CFRetain, 1, 356 PyDoc_STR("() -> (CFTypeRef _rv)")}, 357 {"CFRelease", (PyCFunction)CFTypeRefObj_CFRelease, 1, 358 PyDoc_STR("() -> None")}, 359 {"CFGetRetainCount", (PyCFunction)CFTypeRefObj_CFGetRetainCount, 1, 360 PyDoc_STR("() -> (CFIndex _rv)")}, 361 {"CFEqual", (PyCFunction)CFTypeRefObj_CFEqual, 1, 362 PyDoc_STR("(CFTypeRef cf2) -> (Boolean _rv)")}, 363 {"CFHash", (PyCFunction)CFTypeRefObj_CFHash, 1, 364 PyDoc_STR("() -> (CFHashCode _rv)")}, 365 {"CFCopyDescription", (PyCFunction)CFTypeRefObj_CFCopyDescription, 1, 366 PyDoc_STR("() -> (CFStringRef _rv)")}, 367 {"CFPropertyListCreateXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateXMLData, 1, 368 PyDoc_STR("() -> (CFDataRef _rv)")}, 369 {"CFPropertyListCreateDeepCopy", (PyCFunction)CFTypeRefObj_CFPropertyListCreateDeepCopy, 1, 370 PyDoc_STR("(CFOptionFlags mutabilityOption) -> (CFTypeRef _rv)")}, 371 {"CFShow", (PyCFunction)CFTypeRefObj_CFShow, 1, 372 PyDoc_STR("() -> None")}, 373 {"CFPropertyListCreateFromXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateFromXMLData, 1, 374 PyDoc_STR("(CFOptionFlags mutabilityOption) -> (CFTypeRefObj)")}, 375 {"toPython", (PyCFunction)CFTypeRefObj_toPython, 1, 376 PyDoc_STR("() -> (python_object)")}, 377 {NULL, NULL, 0} 1337 1338 if (!CFDataRefObj_Check(v)) 1339 { 1340 PyErr_SetString(PyExc_TypeError, "CFDataRef required"); 1341 return 0; 1342 } 1343 *p_itself = ((CFDataRefObject *)v)->ob_itself; 1344 return 1; 1345 } 1346 1347 static void CFDataRefObj_dealloc(CFDataRefObject *self) 1348 { 1349 if (self->ob_freeit && self->ob_itself) 1350 { 1351 self->ob_freeit((CFTypeRef)self->ob_itself); 1352 self->ob_itself = NULL; 1353 } 1354 CFTypeRef_Type.tp_dealloc((PyObject *)self); 1355 } 1356 1357 static PyObject *CFDataRefObj_CFDataCreateCopy(CFDataRefObject *_self, PyObject *_args) 1358 { 1359 PyObject *_res = NULL; 1360 CFDataRef _rv; 1361 if (!PyArg_ParseTuple(_args, "")) 1362 return NULL; 1363 _rv = CFDataCreateCopy((CFAllocatorRef)NULL, 1364 _self->ob_itself); 1365 _res = Py_BuildValue("O&", 1366 CFDataRefObj_New, _rv); 1367 return _res; 1368 } 1369 1370 static PyObject *CFDataRefObj_CFDataGetLength(CFDataRefObject *_self, PyObject *_args) 1371 { 1372 PyObject *_res = NULL; 1373 CFIndex _rv; 1374 #ifndef CFDataGetLength 1375 PyMac_PRECHECK(CFDataGetLength); 1376 #endif 1377 if (!PyArg_ParseTuple(_args, "")) 1378 return NULL; 1379 _rv = CFDataGetLength(_self->ob_itself); 1380 _res = Py_BuildValue("l", 1381 _rv); 1382 return _res; 1383 } 1384 1385 static PyObject *CFDataRefObj_CFStringCreateFromExternalRepresentation(CFDataRefObject *_self, PyObject *_args) 1386 { 1387 PyObject *_res = NULL; 1388 CFStringRef _rv; 1389 CFStringEncoding encoding; 1390 if (!PyArg_ParseTuple(_args, "l", 1391 &encoding)) 1392 return NULL; 1393 _rv = CFStringCreateFromExternalRepresentation((CFAllocatorRef)NULL, 1394 _self->ob_itself, 1395 encoding); 1396 _res = Py_BuildValue("O&", 1397 CFStringRefObj_New, _rv); 1398 return _res; 1399 } 1400 1401 static PyObject *CFDataRefObj_CFDataGetData(CFDataRefObject *_self, PyObject *_args) 1402 { 1403 PyObject *_res = NULL; 1404 1405 int size = CFDataGetLength(_self->ob_itself); 1406 char *data = (char *)CFDataGetBytePtr(_self->ob_itself); 1407 1408 _res = (PyObject *)PyString_FromStringAndSize(data, size); 1409 return _res; 1410 1411 } 1412 1413 static PyMethodDef CFDataRefObj_methods[] = { 1414 {"CFDataCreateCopy", (PyCFunction)CFDataRefObj_CFDataCreateCopy, 1, 1415 PyDoc_STR("() -> (CFDataRef _rv)")}, 1416 {"CFDataGetLength", (PyCFunction)CFDataRefObj_CFDataGetLength, 1, 1417 PyDoc_STR("() -> (CFIndex _rv)")}, 1418 {"CFStringCreateFromExternalRepresentation", (PyCFunction)CFDataRefObj_CFStringCreateFromExternalRepresentation, 1, 1419 PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")}, 1420 {"CFDataGetData", (PyCFunction)CFDataRefObj_CFDataGetData, 1, 1421 PyDoc_STR("() -> (string _rv)")}, 1422 {NULL, NULL, 0} 378 1423 }; 379 1424 380 #define CFTypeRefObj_getsetlist NULL 381 382 383 static int CFTypeRefObj_compare(CFTypeRefObject *self, CFTypeRefObject *other) 384 { 385 /* XXXX Or should we use CFEqual?? */ 386 if ( self->ob_itself > other->ob_itself ) return 1; 387 if ( self->ob_itself < other->ob_itself ) return -1; 388 return 0; 389 } 390 391 static PyObject * CFTypeRefObj_repr(CFTypeRefObject *self) 392 { 393 char buf[100]; 394 sprintf(buf, "<CFTypeRef type-%d object at 0x%8.8x for 0x%8.8x>", (int)CFGetTypeID(self->ob_itself), (unsigned)self, (unsigned)self->ob_itself); 395 return PyString_FromString(buf); 396 } 397 398 static int CFTypeRefObj_hash(CFTypeRefObject *self) 399 { 400 /* XXXX Or should we use CFHash?? */ 401 return (int)self->ob_itself; 402 } 403 static int CFTypeRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 404 { 405 CFTypeRef itself; 406 char *kw[] = {"itself", 0}; 407 408 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 409 { 410 ((CFTypeRefObject *)_self)->ob_itself = itself; 411 return 0; 412 } 413 return -1; 414 } 415 416 #define CFTypeRefObj_tp_alloc PyType_GenericAlloc 417 418 static PyObject *CFTypeRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 419 { 420 PyObject *self; 421 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 422 ((CFTypeRefObject *)self)->ob_itself = NULL; 423 ((CFTypeRefObject *)self)->ob_freeit = CFRelease; 424 return self; 425 } 426 427 #define CFTypeRefObj_tp_free PyObject_Del 428 429 430 PyTypeObject CFTypeRef_Type = { 431 PyObject_HEAD_INIT(NULL) 432 0, /*ob_size*/ 433 "_CF.CFTypeRef", /*tp_name*/ 434 sizeof(CFTypeRefObject), /*tp_basicsize*/ 435 0, /*tp_itemsize*/ 436 /* methods */ 437 (destructor) CFTypeRefObj_dealloc, /*tp_dealloc*/ 438 0, /*tp_print*/ 439 (getattrfunc)0, /*tp_getattr*/ 440 (setattrfunc)0, /*tp_setattr*/ 441 (cmpfunc) CFTypeRefObj_compare, /*tp_compare*/ 442 (reprfunc) CFTypeRefObj_repr, /*tp_repr*/ 443 (PyNumberMethods *)0, /* tp_as_number */ 444 (PySequenceMethods *)0, /* tp_as_sequence */ 445 (PyMappingMethods *)0, /* tp_as_mapping */ 446 (hashfunc) CFTypeRefObj_hash, /*tp_hash*/ 447 0, /*tp_call*/ 448 0, /*tp_str*/ 449 PyObject_GenericGetAttr, /*tp_getattro*/ 450 PyObject_GenericSetAttr, /*tp_setattro */ 451 0, /*tp_as_buffer*/ 452 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 453 0, /*tp_doc*/ 454 0, /*tp_traverse*/ 455 0, /*tp_clear*/ 456 0, /*tp_richcompare*/ 457 0, /*tp_weaklistoffset*/ 458 0, /*tp_iter*/ 459 0, /*tp_iternext*/ 460 CFTypeRefObj_methods, /* tp_methods */ 461 0, /*tp_members*/ 462 CFTypeRefObj_getsetlist, /*tp_getset*/ 463 0, /*tp_base*/ 464 0, /*tp_dict*/ 465 0, /*tp_descr_get*/ 466 0, /*tp_descr_set*/ 467 0, /*tp_dictoffset*/ 468 CFTypeRefObj_tp_init, /* tp_init */ 469 CFTypeRefObj_tp_alloc, /* tp_alloc */ 470 CFTypeRefObj_tp_new, /* tp_new */ 471 CFTypeRefObj_tp_free, /* tp_free */ 1425 #define CFDataRefObj_getsetlist NULL 1426 1427 1428 static int CFDataRefObj_compare(CFDataRefObject *self, CFDataRefObject *other) 1429 { 1430 /* XXXX Or should we use CFEqual?? */ 1431 if ( self->ob_itself > other->ob_itself ) return 1; 1432 if ( self->ob_itself < other->ob_itself ) return -1; 1433 return 0; 1434 } 1435 1436 static PyObject * CFDataRefObj_repr(CFDataRefObject *self) 1437 { 1438 char buf[100]; 1439 sprintf(buf, "<CFDataRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 1440 return PyString_FromString(buf); 1441 } 1442 1443 static int CFDataRefObj_hash(CFDataRefObject *self) 1444 { 1445 /* XXXX Or should we use CFHash?? */ 1446 return (int)self->ob_itself; 1447 } 1448 static int CFDataRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 1449 { 1450 CFDataRef itself; 1451 char *kw[] = {"itself", 0}; 1452 1453 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFDataRefObj_Convert, &itself)) 1454 { 1455 ((CFDataRefObject *)_self)->ob_itself = itself; 1456 return 0; 1457 } 1458 1459 /* Any CFTypeRef descendent is allowed as initializer too */ 1460 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 1461 { 1462 ((CFDataRefObject *)_self)->ob_itself = itself; 1463 return 0; 1464 } 1465 return -1; 1466 } 1467 1468 #define CFDataRefObj_tp_alloc PyType_GenericAlloc 1469 1470 static PyObject *CFDataRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 1471 { 1472 PyObject *self; 1473 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 1474 ((CFDataRefObject *)self)->ob_itself = NULL; 1475 ((CFDataRefObject *)self)->ob_freeit = CFRelease; 1476 return self; 1477 } 1478 1479 #define CFDataRefObj_tp_free PyObject_Del 1480 1481 1482 PyTypeObject CFDataRef_Type = { 1483 PyObject_HEAD_INIT(NULL) 1484 0, /*ob_size*/ 1485 "_CF.CFDataRef", /*tp_name*/ 1486 sizeof(CFDataRefObject), /*tp_basicsize*/ 1487 0, /*tp_itemsize*/ 1488 /* methods */ 1489 (destructor) CFDataRefObj_dealloc, /*tp_dealloc*/ 1490 0, /*tp_print*/ 1491 (getattrfunc)0, /*tp_getattr*/ 1492 (setattrfunc)0, /*tp_setattr*/ 1493 (cmpfunc) CFDataRefObj_compare, /*tp_compare*/ 1494 (reprfunc) CFDataRefObj_repr, /*tp_repr*/ 1495 (PyNumberMethods *)0, /* tp_as_number */ 1496 (PySequenceMethods *)0, /* tp_as_sequence */ 1497 (PyMappingMethods *)0, /* tp_as_mapping */ 1498 (hashfunc) CFDataRefObj_hash, /*tp_hash*/ 1499 0, /*tp_call*/ 1500 0, /*tp_str*/ 1501 PyObject_GenericGetAttr, /*tp_getattro*/ 1502 PyObject_GenericSetAttr, /*tp_setattro */ 1503 0, /*tp_as_buffer*/ 1504 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 1505 0, /*tp_doc*/ 1506 0, /*tp_traverse*/ 1507 0, /*tp_clear*/ 1508 0, /*tp_richcompare*/ 1509 0, /*tp_weaklistoffset*/ 1510 0, /*tp_iter*/ 1511 0, /*tp_iternext*/ 1512 CFDataRefObj_methods, /* tp_methods */ 1513 0, /*tp_members*/ 1514 CFDataRefObj_getsetlist, /*tp_getset*/ 1515 0, /*tp_base*/ 1516 0, /*tp_dict*/ 1517 0, /*tp_descr_get*/ 1518 0, /*tp_descr_set*/ 1519 0, /*tp_dictoffset*/ 1520 CFDataRefObj_tp_init, /* tp_init */ 1521 CFDataRefObj_tp_alloc, /* tp_alloc */ 1522 CFDataRefObj_tp_new, /* tp_new */ 1523 CFDataRefObj_tp_free, /* tp_free */ 472 1524 }; 473 1525 474 /* ------------------- End object type CFTypeRef -------------------- */ 475 476 477 /* --------------------- Object type CFArrayRef --------------------- */ 478 479 PyTypeObject CFArrayRef_Type; 480 481 #define CFArrayRefObj_Check(x) ((x)->ob_type == &CFArrayRef_Type || PyObject_TypeCheck((x), &CFArrayRef_Type)) 482 483 typedef struct CFArrayRefObject { 484 PyObject_HEAD 485 CFArrayRef ob_itself; 486 void (*ob_freeit)(CFTypeRef ptr); 487 } CFArrayRefObject; 488 489 PyObject *CFArrayRefObj_New(CFArrayRef itself) 490 { 491 CFArrayRefObject *it; 492 if (itself == NULL) 493 { 494 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 495 return NULL; 496 } 497 it = PyObject_NEW(CFArrayRefObject, &CFArrayRef_Type); 498 if (it == NULL) return NULL; 499 /* XXXX Should we tp_init or tp_new our basetype? */ 500 it->ob_itself = itself; 501 it->ob_freeit = CFRelease; 502 return (PyObject *)it; 503 } 504 505 int CFArrayRefObj_Convert(PyObject *v, CFArrayRef *p_itself) 506 { 507 508 if (v == Py_None) { *p_itself = NULL; return 1; } 509 /* Check for other CF objects here */ 510 511 if (!CFArrayRefObj_Check(v)) 512 { 513 PyErr_SetString(PyExc_TypeError, "CFArrayRef required"); 514 return 0; 515 } 516 *p_itself = ((CFArrayRefObject *)v)->ob_itself; 517 return 1; 518 } 519 520 static void CFArrayRefObj_dealloc(CFArrayRefObject *self) 521 { 522 if (self->ob_freeit && self->ob_itself) 523 { 524 self->ob_freeit((CFTypeRef)self->ob_itself); 525 self->ob_itself = NULL; 526 } 527 CFTypeRef_Type.tp_dealloc((PyObject *)self); 528 } 529 530 static PyObject *CFArrayRefObj_CFArrayCreateCopy(CFArrayRefObject *_self, PyObject *_args) 531 { 532 PyObject *_res = NULL; 533 CFArrayRef _rv; 534 if (!PyArg_ParseTuple(_args, "")) 535 return NULL; 536 _rv = CFArrayCreateCopy((CFAllocatorRef)NULL, 537 _self->ob_itself); 538 _res = Py_BuildValue("O&", 539 CFArrayRefObj_New, _rv); 540 return _res; 541 } 542 543 static PyObject *CFArrayRefObj_CFArrayGetCount(CFArrayRefObject *_self, PyObject *_args) 544 { 545 PyObject *_res = NULL; 546 CFIndex _rv; 547 #ifndef CFArrayGetCount 548 PyMac_PRECHECK(CFArrayGetCount); 549 #endif 550 if (!PyArg_ParseTuple(_args, "")) 551 return NULL; 552 _rv = CFArrayGetCount(_self->ob_itself); 553 _res = Py_BuildValue("l", 554 _rv); 555 return _res; 556 } 557 558 static PyObject *CFArrayRefObj_CFStringCreateByCombiningStrings(CFArrayRefObject *_self, PyObject *_args) 559 { 560 PyObject *_res = NULL; 561 CFStringRef _rv; 562 CFStringRef separatorString; 563 if (!PyArg_ParseTuple(_args, "O&", 564 CFStringRefObj_Convert, &separatorString)) 565 return NULL; 566 _rv = CFStringCreateByCombiningStrings((CFAllocatorRef)NULL, 567 _self->ob_itself, 568 separatorString); 569 _res = Py_BuildValue("O&", 570 CFStringRefObj_New, _rv); 571 return _res; 572 } 573 574 static PyMethodDef CFArrayRefObj_methods[] = { 575 {"CFArrayCreateCopy", (PyCFunction)CFArrayRefObj_CFArrayCreateCopy, 1, 576 PyDoc_STR("() -> (CFArrayRef _rv)")}, 577 {"CFArrayGetCount", (PyCFunction)CFArrayRefObj_CFArrayGetCount, 1, 578 PyDoc_STR("() -> (CFIndex _rv)")}, 579 {"CFStringCreateByCombiningStrings", (PyCFunction)CFArrayRefObj_CFStringCreateByCombiningStrings, 1, 580 PyDoc_STR("(CFStringRef separatorString) -> (CFStringRef _rv)")}, 581 {NULL, NULL, 0} 1526 /* ------------------- End object type CFDataRef -------------------- */ 1527 1528 1529 /* ------------------ Object type CFMutableDataRef ------------------ */ 1530 1531 PyTypeObject CFMutableDataRef_Type; 1532 1533 #define CFMutableDataRefObj_Check(x) ((x)->ob_type == &CFMutableDataRef_Type || PyObject_TypeCheck((x), &CFMutableDataRef_Type)) 1534 1535 typedef struct CFMutableDataRefObject { 1536 PyObject_HEAD 1537 CFMutableDataRef ob_itself; 1538 void (*ob_freeit)(CFTypeRef ptr); 1539 } CFMutableDataRefObject; 1540 1541 PyObject *CFMutableDataRefObj_New(CFMutableDataRef itself) 1542 { 1543 CFMutableDataRefObject *it; 1544 if (itself == NULL) 1545 { 1546 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 1547 return NULL; 1548 } 1549 it = PyObject_NEW(CFMutableDataRefObject, &CFMutableDataRef_Type); 1550 if (it == NULL) return NULL; 1551 /* XXXX Should we tp_init or tp_new our basetype? */ 1552 it->ob_itself = itself; 1553 it->ob_freeit = CFRelease; 1554 return (PyObject *)it; 1555 } 1556 1557 int CFMutableDataRefObj_Convert(PyObject *v, CFMutableDataRef *p_itself) 1558 { 1559 1560 if (v == Py_None) { *p_itself = NULL; return 1; } 1561 /* Check for other CF objects here */ 1562 1563 if (!CFMutableDataRefObj_Check(v)) 1564 { 1565 PyErr_SetString(PyExc_TypeError, "CFMutableDataRef required"); 1566 return 0; 1567 } 1568 *p_itself = ((CFMutableDataRefObject *)v)->ob_itself; 1569 return 1; 1570 } 1571 1572 static void CFMutableDataRefObj_dealloc(CFMutableDataRefObject *self) 1573 { 1574 if (self->ob_freeit && self->ob_itself) 1575 { 1576 self->ob_freeit((CFTypeRef)self->ob_itself); 1577 self->ob_itself = NULL; 1578 } 1579 CFDataRef_Type.tp_dealloc((PyObject *)self); 1580 } 1581 1582 static PyObject *CFMutableDataRefObj_CFDataSetLength(CFMutableDataRefObject *_self, PyObject *_args) 1583 { 1584 PyObject *_res = NULL; 1585 CFIndex length; 1586 #ifndef CFDataSetLength 1587 PyMac_PRECHECK(CFDataSetLength); 1588 #endif 1589 if (!PyArg_ParseTuple(_args, "l", 1590 &length)) 1591 return NULL; 1592 CFDataSetLength(_self->ob_itself, 1593 length); 1594 Py_INCREF(Py_None); 1595 _res = Py_None; 1596 return _res; 1597 } 1598 1599 static PyObject *CFMutableDataRefObj_CFDataIncreaseLength(CFMutableDataRefObject *_self, PyObject *_args) 1600 { 1601 PyObject *_res = NULL; 1602 CFIndex extraLength; 1603 #ifndef CFDataIncreaseLength 1604 PyMac_PRECHECK(CFDataIncreaseLength); 1605 #endif 1606 if (!PyArg_ParseTuple(_args, "l", 1607 &extraLength)) 1608 return NULL; 1609 CFDataIncreaseLength(_self->ob_itself, 1610 extraLength); 1611 Py_INCREF(Py_None); 1612 _res = Py_None; 1613 return _res; 1614 } 1615 1616 static PyObject *CFMutableDataRefObj_CFDataAppendBytes(CFMutableDataRefObject *_self, PyObject *_args) 1617 { 1618 PyObject *_res = NULL; 1619 unsigned char *bytes__in__; 1620 long bytes__len__; 1621 int bytes__in_len__; 1622 #ifndef CFDataAppendBytes 1623 PyMac_PRECHECK(CFDataAppendBytes); 1624 #endif 1625 if (!PyArg_ParseTuple(_args, "s#", 1626 &bytes__in__, &bytes__in_len__)) 1627 return NULL; 1628 bytes__len__ = bytes__in_len__; 1629 CFDataAppendBytes(_self->ob_itself, 1630 bytes__in__, bytes__len__); 1631 Py_INCREF(Py_None); 1632 _res = Py_None; 1633 return _res; 1634 } 1635 1636 static PyObject *CFMutableDataRefObj_CFDataReplaceBytes(CFMutableDataRefObject *_self, PyObject *_args) 1637 { 1638 PyObject *_res = NULL; 1639 CFRange range; 1640 unsigned char *newBytes__in__; 1641 long newBytes__len__; 1642 int newBytes__in_len__; 1643 #ifndef CFDataReplaceBytes 1644 PyMac_PRECHECK(CFDataReplaceBytes); 1645 #endif 1646 if (!PyArg_ParseTuple(_args, "O&s#", 1647 CFRange_Convert, &range, 1648 &newBytes__in__, &newBytes__in_len__)) 1649 return NULL; 1650 newBytes__len__ = newBytes__in_len__; 1651 CFDataReplaceBytes(_self->ob_itself, 1652 range, 1653 newBytes__in__, newBytes__len__); 1654 Py_INCREF(Py_None); 1655 _res = Py_None; 1656 return _res; 1657 } 1658 1659 static PyObject *CFMutableDataRefObj_CFDataDeleteBytes(CFMutableDataRefObject *_self, PyObject *_args) 1660 { 1661 PyObject *_res = NULL; 1662 CFRange range; 1663 #ifndef CFDataDeleteBytes 1664 PyMac_PRECHECK(CFDataDeleteBytes); 1665 #endif 1666 if (!PyArg_ParseTuple(_args, "O&", 1667 CFRange_Convert, &range)) 1668 return NULL; 1669 CFDataDeleteBytes(_self->ob_itself, 1670 range); 1671 Py_INCREF(Py_None); 1672 _res = Py_None; 1673 return _res; 1674 } 1675 1676 static PyMethodDef CFMutableDataRefObj_methods[] = { 1677 {"CFDataSetLength", (PyCFunction)CFMutableDataRefObj_CFDataSetLength, 1, 1678 PyDoc_STR("(CFIndex length) -> None")}, 1679 {"CFDataIncreaseLength", (PyCFunction)CFMutableDataRefObj_CFDataIncreaseLength, 1, 1680 PyDoc_STR("(CFIndex extraLength) -> None")}, 1681 {"CFDataAppendBytes", (PyCFunction)CFMutableDataRefObj_CFDataAppendBytes, 1, 1682 PyDoc_STR("(Buffer bytes) -> None")}, 1683 {"CFDataReplaceBytes", (PyCFunction)CFMutableDataRefObj_CFDataReplaceBytes, 1, 1684 PyDoc_STR("(CFRange range, Buffer newBytes) -> None")}, 1685 {"CFDataDeleteBytes", (PyCFunction)CFMutableDataRefObj_CFDataDeleteBytes, 1, 1686 PyDoc_STR("(CFRange range) -> None")}, 1687 {NULL, NULL, 0} 582 1688 }; 583 1689 584 #define CF ArrayRefObj_getsetlist NULL585 586 587 static int CF ArrayRefObj_compare(CFArrayRefObject *self, CFArrayRefObject *other)588 { 589 /* XXXX Or should we use CFEqual?? */590 if ( self->ob_itself > other->ob_itself ) return 1;591 if ( self->ob_itself < other->ob_itself ) return -1;592 return 0;593 } 594 595 static PyObject * CF ArrayRefObj_repr(CFArrayRefObject *self)596 { 597 char buf[100];598 sprintf(buf, "<CFArrayRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);599 return PyString_FromString(buf);600 } 601 602 static int CF ArrayRefObj_hash(CFArrayRefObject *self)603 { 604 /* XXXX Or should we use CFHash?? */605 return (int)self->ob_itself;606 } 607 static int CF ArrayRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)608 { 609 CFArrayRef itself;610 char *kw[] = {"itself", 0};611 612 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFArrayRefObj_Convert, &itself))613 {614 ((CFArrayRefObject *)_self)->ob_itself = itself;615 return 0;616 }617 618 /* Any CFTypeRef descendent is allowed as initializer too */619 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))620 {621 ((CFArrayRefObject *)_self)->ob_itself = itself;622 return 0;623 }624 return -1;625 } 626 627 #define CF ArrayRefObj_tp_alloc PyType_GenericAlloc628 629 static PyObject *CF ArrayRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)630 { 631 PyObject *self;632 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;633 ((CFArrayRefObject *)self)->ob_itself = NULL;634 ((CFArrayRefObject *)self)->ob_freeit = CFRelease;635 return self;636 } 637 638 #define CF ArrayRefObj_tp_free PyObject_Del639 640 641 PyTypeObject CF ArrayRef_Type = {642 PyObject_HEAD_INIT(NULL)643 0, /*ob_size*/644 "_CF.CFArrayRef", /*tp_name*/645 sizeof(CFArrayRefObject), /*tp_basicsize*/646 0, /*tp_itemsize*/647 /* methods */648 (destructor) CFArrayRefObj_dealloc, /*tp_dealloc*/649 0, /*tp_print*/650 (getattrfunc)0, /*tp_getattr*/651 (setattrfunc)0, /*tp_setattr*/652 (cmpfunc) CFArrayRefObj_compare, /*tp_compare*/653 (reprfunc) CFArrayRefObj_repr, /*tp_repr*/654 (PyNumberMethods *)0, /* tp_as_number */655 (PySequenceMethods *)0, /* tp_as_sequence */656 (PyMappingMethods *)0, /* tp_as_mapping */657 (hashfunc) CFArrayRefObj_hash, /*tp_hash*/658 0, /*tp_call*/659 0, /*tp_str*/660 PyObject_GenericGetAttr, /*tp_getattro*/661 PyObject_GenericSetAttr, /*tp_setattro */662 0, /*tp_as_buffer*/663 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */664 0, /*tp_doc*/665 0, /*tp_traverse*/666 0, /*tp_clear*/667 0, /*tp_richcompare*/668 0, /*tp_weaklistoffset*/669 0, /*tp_iter*/670 0, /*tp_iternext*/671 CFArrayRefObj_methods, /* tp_methods */672 0, /*tp_members*/673 CFArrayRefObj_getsetlist, /*tp_getset*/674 0, /*tp_base*/675 0, /*tp_dict*/676 0, /*tp_descr_get*/677 0, /*tp_descr_set*/678 0, /*tp_dictoffset*/679 CFArrayRefObj_tp_init, /* tp_init */680 CFArrayRefObj_tp_alloc, /* tp_alloc */681 CFArrayRefObj_tp_new, /* tp_new */682 CFArrayRefObj_tp_free, /* tp_free */1690 #define CFMutableDataRefObj_getsetlist NULL 1691 1692 1693 static int CFMutableDataRefObj_compare(CFMutableDataRefObject *self, CFMutableDataRefObject *other) 1694 { 1695 /* XXXX Or should we use CFEqual?? */ 1696 if ( self->ob_itself > other->ob_itself ) return 1; 1697 if ( self->ob_itself < other->ob_itself ) return -1; 1698 return 0; 1699 } 1700 1701 static PyObject * CFMutableDataRefObj_repr(CFMutableDataRefObject *self) 1702 { 1703 char buf[100]; 1704 sprintf(buf, "<CFMutableDataRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 1705 return PyString_FromString(buf); 1706 } 1707 1708 static int CFMutableDataRefObj_hash(CFMutableDataRefObject *self) 1709 { 1710 /* XXXX Or should we use CFHash?? */ 1711 return (int)self->ob_itself; 1712 } 1713 static int CFMutableDataRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 1714 { 1715 CFMutableDataRef itself; 1716 char *kw[] = {"itself", 0}; 1717 1718 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableDataRefObj_Convert, &itself)) 1719 { 1720 ((CFMutableDataRefObject *)_self)->ob_itself = itself; 1721 return 0; 1722 } 1723 1724 /* Any CFTypeRef descendent is allowed as initializer too */ 1725 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 1726 { 1727 ((CFMutableDataRefObject *)_self)->ob_itself = itself; 1728 return 0; 1729 } 1730 return -1; 1731 } 1732 1733 #define CFMutableDataRefObj_tp_alloc PyType_GenericAlloc 1734 1735 static PyObject *CFMutableDataRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 1736 { 1737 PyObject *self; 1738 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 1739 ((CFMutableDataRefObject *)self)->ob_itself = NULL; 1740 ((CFMutableDataRefObject *)self)->ob_freeit = CFRelease; 1741 return self; 1742 } 1743 1744 #define CFMutableDataRefObj_tp_free PyObject_Del 1745 1746 1747 PyTypeObject CFMutableDataRef_Type = { 1748 PyObject_HEAD_INIT(NULL) 1749 0, /*ob_size*/ 1750 "_CF.CFMutableDataRef", /*tp_name*/ 1751 sizeof(CFMutableDataRefObject), /*tp_basicsize*/ 1752 0, /*tp_itemsize*/ 1753 /* methods */ 1754 (destructor) CFMutableDataRefObj_dealloc, /*tp_dealloc*/ 1755 0, /*tp_print*/ 1756 (getattrfunc)0, /*tp_getattr*/ 1757 (setattrfunc)0, /*tp_setattr*/ 1758 (cmpfunc) CFMutableDataRefObj_compare, /*tp_compare*/ 1759 (reprfunc) CFMutableDataRefObj_repr, /*tp_repr*/ 1760 (PyNumberMethods *)0, /* tp_as_number */ 1761 (PySequenceMethods *)0, /* tp_as_sequence */ 1762 (PyMappingMethods *)0, /* tp_as_mapping */ 1763 (hashfunc) CFMutableDataRefObj_hash, /*tp_hash*/ 1764 0, /*tp_call*/ 1765 0, /*tp_str*/ 1766 PyObject_GenericGetAttr, /*tp_getattro*/ 1767 PyObject_GenericSetAttr, /*tp_setattro */ 1768 0, /*tp_as_buffer*/ 1769 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 1770 0, /*tp_doc*/ 1771 0, /*tp_traverse*/ 1772 0, /*tp_clear*/ 1773 0, /*tp_richcompare*/ 1774 0, /*tp_weaklistoffset*/ 1775 0, /*tp_iter*/ 1776 0, /*tp_iternext*/ 1777 CFMutableDataRefObj_methods, /* tp_methods */ 1778 0, /*tp_members*/ 1779 CFMutableDataRefObj_getsetlist, /*tp_getset*/ 1780 0, /*tp_base*/ 1781 0, /*tp_dict*/ 1782 0, /*tp_descr_get*/ 1783 0, /*tp_descr_set*/ 1784 0, /*tp_dictoffset*/ 1785 CFMutableDataRefObj_tp_init, /* tp_init */ 1786 CFMutableDataRefObj_tp_alloc, /* tp_alloc */ 1787 CFMutableDataRefObj_tp_new, /* tp_new */ 1788 CFMutableDataRefObj_tp_free, /* tp_free */ 683 1789 }; 684 1790 685 /* ------------------- End object type CFArrayRef ------------------- */ 686 687 688 /* ----------------- Object type CFMutableArrayRef ------------------ */ 689 690 PyTypeObject CFMutableArrayRef_Type; 691 692 #define CFMutableArrayRefObj_Check(x) ((x)->ob_type == &CFMutableArrayRef_Type || PyObject_TypeCheck((x), &CFMutableArrayRef_Type)) 693 694 typedef struct CFMutableArrayRefObject { 695 PyObject_HEAD 696 CFMutableArrayRef ob_itself; 697 void (*ob_freeit)(CFTypeRef ptr); 698 } CFMutableArrayRefObject; 699 700 PyObject *CFMutableArrayRefObj_New(CFMutableArrayRef itself) 701 { 702 CFMutableArrayRefObject *it; 703 if (itself == NULL) 704 { 705 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 706 return NULL; 707 } 708 it = PyObject_NEW(CFMutableArrayRefObject, &CFMutableArrayRef_Type); 709 if (it == NULL) return NULL; 710 /* XXXX Should we tp_init or tp_new our basetype? */ 711 it->ob_itself = itself; 712 it->ob_freeit = CFRelease; 713 return (PyObject *)it; 714 } 715 716 int CFMutableArrayRefObj_Convert(PyObject *v, CFMutableArrayRef *p_itself) 717 { 718 719 if (v == Py_None) { *p_itself = NULL; return 1; } 720 /* Check for other CF objects here */ 721 722 if (!CFMutableArrayRefObj_Check(v)) 723 { 724 PyErr_SetString(PyExc_TypeError, "CFMutableArrayRef required"); 725 return 0; 726 } 727 *p_itself = ((CFMutableArrayRefObject *)v)->ob_itself; 728 return 1; 729 } 730 731 static void CFMutableArrayRefObj_dealloc(CFMutableArrayRefObject *self) 732 { 733 if (self->ob_freeit && self->ob_itself) 734 { 735 self->ob_freeit((CFTypeRef)self->ob_itself); 736 self->ob_itself = NULL; 737 } 738 CFArrayRef_Type.tp_dealloc((PyObject *)self); 739 } 740 741 static PyObject *CFMutableArrayRefObj_CFArrayRemoveValueAtIndex(CFMutableArrayRefObject *_self, PyObject *_args) 742 { 743 PyObject *_res = NULL; 744 CFIndex idx; 745 #ifndef CFArrayRemoveValueAtIndex 746 PyMac_PRECHECK(CFArrayRemoveValueAtIndex); 747 #endif 748 if (!PyArg_ParseTuple(_args, "l", 749 &idx)) 750 return NULL; 751 CFArrayRemoveValueAtIndex(_self->ob_itself, 752 idx); 753 Py_INCREF(Py_None); 754 _res = Py_None; 755 return _res; 756 } 757 758 static PyObject *CFMutableArrayRefObj_CFArrayRemoveAllValues(CFMutableArrayRefObject *_self, PyObject *_args) 759 { 760 PyObject *_res = NULL; 761 #ifndef CFArrayRemoveAllValues 762 PyMac_PRECHECK(CFArrayRemoveAllValues); 763 #endif 764 if (!PyArg_ParseTuple(_args, "")) 765 return NULL; 766 CFArrayRemoveAllValues(_self->ob_itself); 767 Py_INCREF(Py_None); 768 _res = Py_None; 769 return _res; 770 } 771 772 static PyObject *CFMutableArrayRefObj_CFArrayExchangeValuesAtIndices(CFMutableArrayRefObject *_self, PyObject *_args) 773 { 774 PyObject *_res = NULL; 775 CFIndex idx1; 776 CFIndex idx2; 777 #ifndef CFArrayExchangeValuesAtIndices 778 PyMac_PRECHECK(CFArrayExchangeValuesAtIndices); 779 #endif 780 if (!PyArg_ParseTuple(_args, "ll", 781 &idx1, 782 &idx2)) 783 return NULL; 784 CFArrayExchangeValuesAtIndices(_self->ob_itself, 785 idx1, 786 idx2); 787 Py_INCREF(Py_None); 788 _res = Py_None; 789 return _res; 790 } 791 792 static PyObject *CFMutableArrayRefObj_CFArrayAppendArray(CFMutableArrayRefObject *_self, PyObject *_args) 793 { 794 PyObject *_res = NULL; 795 CFArrayRef otherArray; 796 CFRange otherRange; 797 #ifndef CFArrayAppendArray 798 PyMac_PRECHECK(CFArrayAppendArray); 799 #endif 800 if (!PyArg_ParseTuple(_args, "O&O&", 801 CFArrayRefObj_Convert, &otherArray, 802 CFRange_Convert, &otherRange)) 803 return NULL; 804 CFArrayAppendArray(_self->ob_itself, 805 otherArray, 806 otherRange); 807 Py_INCREF(Py_None); 808 _res = Py_None; 809 return _res; 810 } 811 812 static PyMethodDef CFMutableArrayRefObj_methods[] = { 813 {"CFArrayRemoveValueAtIndex", (PyCFunction)CFMutableArrayRefObj_CFArrayRemoveValueAtIndex, 1, 814 PyDoc_STR("(CFIndex idx) -> None")}, 815 {"CFArrayRemoveAllValues", (PyCFunction)CFMutableArrayRefObj_CFArrayRemoveAllValues, 1, 816 PyDoc_STR("() -> None")}, 817 {"CFArrayExchangeValuesAtIndices", (PyCFunction)CFMutableArrayRefObj_CFArrayExchangeValuesAtIndices, 1, 818 PyDoc_STR("(CFIndex idx1, CFIndex idx2) -> None")}, 819 {"CFArrayAppendArray", (PyCFunction)CFMutableArrayRefObj_CFArrayAppendArray, 1, 820 PyDoc_STR("(CFArrayRef otherArray, CFRange otherRange) -> None")}, 821 {NULL, NULL, 0} 1791 /* ---------------- End object type CFMutableDataRef ---------------- */ 1792 1793 1794 /* -------------------- Object type CFStringRef --------------------- */ 1795 1796 PyTypeObject CFStringRef_Type; 1797 1798 #define CFStringRefObj_Check(x) ((x)->ob_type == &CFStringRef_Type || PyObject_TypeCheck((x), &CFStringRef_Type)) 1799 1800 typedef struct CFStringRefObject { 1801 PyObject_HEAD 1802 CFStringRef ob_itself; 1803 void (*ob_freeit)(CFTypeRef ptr); 1804 } CFStringRefObject; 1805 1806 PyObject *CFStringRefObj_New(CFStringRef itself) 1807 { 1808 CFStringRefObject *it; 1809 if (itself == NULL) 1810 { 1811 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 1812 return NULL; 1813 } 1814 it = PyObject_NEW(CFStringRefObject, &CFStringRef_Type); 1815 if (it == NULL) return NULL; 1816 /* XXXX Should we tp_init or tp_new our basetype? */ 1817 it->ob_itself = itself; 1818 it->ob_freeit = CFRelease; 1819 return (PyObject *)it; 1820 } 1821 1822 int CFStringRefObj_Convert(PyObject *v, CFStringRef *p_itself) 1823 { 1824 1825 if (v == Py_None) { *p_itself = NULL; return 1; } 1826 if (PyString_Check(v)) { 1827 char *cStr; 1828 if (!PyArg_Parse(v, "es", "ascii", &cStr)) 1829 return 0; 1830 *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII); 1831 PyMem_Free(cStr); 1832 return 1; 1833 } 1834 if (PyUnicode_Check(v)) { 1835 /* We use the CF types here, if Python was configured differently that will give an error */ 1836 CFIndex size = PyUnicode_GetSize(v); 1837 UniChar *unichars = PyUnicode_AsUnicode(v); 1838 if (!unichars) return 0; 1839 *p_itself = CFStringCreateWithCharacters((CFAllocatorRef)NULL, unichars, size); 1840 return 1; 1841 } 1842 1843 1844 if (!CFStringRefObj_Check(v)) 1845 { 1846 PyErr_SetString(PyExc_TypeError, "CFStringRef required"); 1847 return 0; 1848 } 1849 *p_itself = ((CFStringRefObject *)v)->ob_itself; 1850 return 1; 1851 } 1852 1853 static void CFStringRefObj_dealloc(CFStringRefObject *self) 1854 { 1855 if (self->ob_freeit && self->ob_itself) 1856 { 1857 self->ob_freeit((CFTypeRef)self->ob_itself); 1858 self->ob_itself = NULL; 1859 } 1860 CFTypeRef_Type.tp_dealloc((PyObject *)self); 1861 } 1862 1863 static PyObject *CFStringRefObj_CFStringCreateWithSubstring(CFStringRefObject *_self, PyObject *_args) 1864 { 1865 PyObject *_res = NULL; 1866 CFStringRef _rv; 1867 CFRange range; 1868 if (!PyArg_ParseTuple(_args, "O&", 1869 CFRange_Convert, &range)) 1870 return NULL; 1871 _rv = CFStringCreateWithSubstring((CFAllocatorRef)NULL, 1872 _self->ob_itself, 1873 range); 1874 _res = Py_BuildValue("O&", 1875 CFStringRefObj_New, _rv); 1876 return _res; 1877 } 1878 1879 static PyObject *CFStringRefObj_CFStringCreateCopy(CFStringRefObject *_self, PyObject *_args) 1880 { 1881 PyObject *_res = NULL; 1882 CFStringRef _rv; 1883 if (!PyArg_ParseTuple(_args, "")) 1884 return NULL; 1885 _rv = CFStringCreateCopy((CFAllocatorRef)NULL, 1886 _self->ob_itself); 1887 _res = Py_BuildValue("O&", 1888 CFStringRefObj_New, _rv); 1889 return _res; 1890 } 1891 1892 static PyObject *CFStringRefObj_CFStringGetLength(CFStringRefObject *_self, PyObject *_args) 1893 { 1894 PyObject *_res = NULL; 1895 CFIndex _rv; 1896 #ifndef CFStringGetLength 1897 PyMac_PRECHECK(CFStringGetLength); 1898 #endif 1899 if (!PyArg_ParseTuple(_args, "")) 1900 return NULL; 1901 _rv = CFStringGetLength(_self->ob_itself); 1902 _res = Py_BuildValue("l", 1903 _rv); 1904 return _res; 1905 } 1906 1907 static PyObject *CFStringRefObj_CFStringGetBytes(CFStringRefObject *_self, PyObject *_args) 1908 { 1909 PyObject *_res = NULL; 1910 CFIndex _rv; 1911 CFRange range; 1912 CFStringEncoding encoding; 1913 UInt8 lossByte; 1914 Boolean isExternalRepresentation; 1915 UInt8 buffer; 1916 CFIndex maxBufLen; 1917 CFIndex usedBufLen; 1918 #ifndef CFStringGetBytes 1919 PyMac_PRECHECK(CFStringGetBytes); 1920 #endif 1921 if (!PyArg_ParseTuple(_args, "O&lbll", 1922 CFRange_Convert, &range, 1923 &encoding, 1924 &lossByte, 1925 &isExternalRepresentation, 1926 &maxBufLen)) 1927 return NULL; 1928 _rv = CFStringGetBytes(_self->ob_itself, 1929 range, 1930 encoding, 1931 lossByte, 1932 isExternalRepresentation, 1933 &buffer, 1934 maxBufLen, 1935 &usedBufLen); 1936 _res = Py_BuildValue("lbl", 1937 _rv, 1938 buffer, 1939 usedBufLen); 1940 return _res; 1941 } 1942 1943 static PyObject *CFStringRefObj_CFStringCreateExternalRepresentation(CFStringRefObject *_self, PyObject *_args) 1944 { 1945 PyObject *_res = NULL; 1946 CFDataRef _rv; 1947 CFStringEncoding encoding; 1948 UInt8 lossByte; 1949 if (!PyArg_ParseTuple(_args, "lb", 1950 &encoding, 1951 &lossByte)) 1952 return NULL; 1953 _rv = CFStringCreateExternalRepresentation((CFAllocatorRef)NULL, 1954 _self->ob_itself, 1955 encoding, 1956 lossByte); 1957 _res = Py_BuildValue("O&", 1958 CFDataRefObj_New, _rv); 1959 return _res; 1960 } 1961 1962 static PyObject *CFStringRefObj_CFStringGetSmallestEncoding(CFStringRefObject *_self, PyObject *_args) 1963 { 1964 PyObject *_res = NULL; 1965 CFStringEncoding _rv; 1966 #ifndef CFStringGetSmallestEncoding 1967 PyMac_PRECHECK(CFStringGetSmallestEncoding); 1968 #endif 1969 if (!PyArg_ParseTuple(_args, "")) 1970 return NULL; 1971 _rv = CFStringGetSmallestEncoding(_self->ob_itself); 1972 _res = Py_BuildValue("l", 1973 _rv); 1974 return _res; 1975 } 1976 1977 static PyObject *CFStringRefObj_CFStringGetFastestEncoding(CFStringRefObject *_self, PyObject *_args) 1978 { 1979 PyObject *_res = NULL; 1980 CFStringEncoding _rv; 1981 #ifndef CFStringGetFastestEncoding 1982 PyMac_PRECHECK(CFStringGetFastestEncoding); 1983 #endif 1984 if (!PyArg_ParseTuple(_args, "")) 1985 return NULL; 1986 _rv = CFStringGetFastestEncoding(_self->ob_itself); 1987 _res = Py_BuildValue("l", 1988 _rv); 1989 return _res; 1990 } 1991 1992 static PyObject *CFStringRefObj_CFStringCompareWithOptions(CFStringRefObject *_self, PyObject *_args) 1993 { 1994 PyObject *_res = NULL; 1995 CFComparisonResult _rv; 1996 CFStringRef theString2; 1997 CFRange rangeToCompare; 1998 CFOptionFlags compareOptions; 1999 #ifndef CFStringCompareWithOptions 2000 PyMac_PRECHECK(CFStringCompareWithOptions); 2001 #endif 2002 if (!PyArg_ParseTuple(_args, "O&O&l", 2003 CFStringRefObj_Convert, &theString2, 2004 CFRange_Convert, &rangeToCompare, 2005 &compareOptions)) 2006 return NULL; 2007 _rv = CFStringCompareWithOptions(_self->ob_itself, 2008 theString2, 2009 rangeToCompare, 2010 compareOptions); 2011 _res = Py_BuildValue("l", 2012 _rv); 2013 return _res; 2014 } 2015 2016 static PyObject *CFStringRefObj_CFStringCompare(CFStringRefObject *_self, PyObject *_args) 2017 { 2018 PyObject *_res = NULL; 2019 CFComparisonResult _rv; 2020 CFStringRef theString2; 2021 CFOptionFlags compareOptions; 2022 #ifndef CFStringCompare 2023 PyMac_PRECHECK(CFStringCompare); 2024 #endif 2025 if (!PyArg_ParseTuple(_args, "O&l", 2026 CFStringRefObj_Convert, &theString2, 2027 &compareOptions)) 2028 return NULL; 2029 _rv = CFStringCompare(_self->ob_itself, 2030 theString2, 2031 compareOptions); 2032 _res = Py_BuildValue("l", 2033 _rv); 2034 return _res; 2035 } 2036 2037 static PyObject *CFStringRefObj_CFStringFindWithOptions(CFStringRefObject *_self, PyObject *_args) 2038 { 2039 PyObject *_res = NULL; 2040 Boolean _rv; 2041 CFStringRef stringToFind; 2042 CFRange rangeToSearch; 2043 CFOptionFlags searchOptions; 2044 CFRange result; 2045 #ifndef CFStringFindWithOptions 2046 PyMac_PRECHECK(CFStringFindWithOptions); 2047 #endif 2048 if (!PyArg_ParseTuple(_args, "O&O&l", 2049 CFStringRefObj_Convert, &stringToFind, 2050 CFRange_Convert, &rangeToSearch, 2051 &searchOptions)) 2052 return NULL; 2053 _rv = CFStringFindWithOptions(_self->ob_itself, 2054 stringToFind, 2055 rangeToSearch, 2056 searchOptions, 2057 &result); 2058 _res = Py_BuildValue("lO&", 2059 _rv, 2060 CFRange_New, result); 2061 return _res; 2062 } 2063 2064 static PyObject *CFStringRefObj_CFStringCreateArrayWithFindResults(CFStringRefObject *_self, PyObject *_args) 2065 { 2066 PyObject *_res = NULL; 2067 CFArrayRef _rv; 2068 CFStringRef stringToFind; 2069 CFRange rangeToSearch; 2070 CFOptionFlags compareOptions; 2071 if (!PyArg_ParseTuple(_args, "O&O&l", 2072 CFStringRefObj_Convert, &stringToFind, 2073 CFRange_Convert, &rangeToSearch, 2074 &compareOptions)) 2075 return NULL; 2076 _rv = CFStringCreateArrayWithFindResults((CFAllocatorRef)NULL, 2077 _self->ob_itself, 2078 stringToFind, 2079 rangeToSearch, 2080 compareOptions); 2081 _res = Py_BuildValue("O&", 2082 CFArrayRefObj_New, _rv); 2083 return _res; 2084 } 2085 2086 static PyObject *CFStringRefObj_CFStringFind(CFStringRefObject *_self, PyObject *_args) 2087 { 2088 PyObject *_res = NULL; 2089 CFRange _rv; 2090 CFStringRef stringToFind; 2091 CFOptionFlags compareOptions; 2092 #ifndef CFStringFind 2093 PyMac_PRECHECK(CFStringFind); 2094 #endif 2095 if (!PyArg_ParseTuple(_args, "O&l", 2096 CFStringRefObj_Convert, &stringToFind, 2097 &compareOptions)) 2098 return NULL; 2099 _rv = CFStringFind(_self->ob_itself, 2100 stringToFind, 2101 compareOptions); 2102 _res = Py_BuildValue("O&", 2103 CFRange_New, _rv); 2104 return _res; 2105 } 2106 2107 static PyObject *CFStringRefObj_CFStringHasPrefix(CFStringRefObject *_self, PyObject *_args) 2108 { 2109 PyObject *_res = NULL; 2110 Boolean _rv; 2111 CFStringRef prefix; 2112 #ifndef CFStringHasPrefix 2113 PyMac_PRECHECK(CFStringHasPrefix); 2114 #endif 2115 if (!PyArg_ParseTuple(_args, "O&", 2116 CFStringRefObj_Convert, &prefix)) 2117 return NULL; 2118 _rv = CFStringHasPrefix(_self->ob_itself, 2119 prefix); 2120 _res = Py_BuildValue("l", 2121 _rv); 2122 return _res; 2123 } 2124 2125 static PyObject *CFStringRefObj_CFStringHasSuffix(CFStringRefObject *_self, PyObject *_args) 2126 { 2127 PyObject *_res = NULL; 2128 Boolean _rv; 2129 CFStringRef suffix; 2130 #ifndef CFStringHasSuffix 2131 PyMac_PRECHECK(CFStringHasSuffix); 2132 #endif 2133 if (!PyArg_ParseTuple(_args, "O&", 2134 CFStringRefObj_Convert, &suffix)) 2135 return NULL; 2136 _rv = CFStringHasSuffix(_self->ob_itself, 2137 suffix); 2138 _res = Py_BuildValue("l", 2139 _rv); 2140 return _res; 2141 } 2142 2143 static PyObject *CFStringRefObj_CFStringGetLineBounds(CFStringRefObject *_self, PyObject *_args) 2144 { 2145 PyObject *_res = NULL; 2146 CFRange range; 2147 CFIndex lineBeginIndex; 2148 CFIndex lineEndIndex; 2149 CFIndex contentsEndIndex; 2150 #ifndef CFStringGetLineBounds 2151 PyMac_PRECHECK(CFStringGetLineBounds); 2152 #endif 2153 if (!PyArg_ParseTuple(_args, "O&", 2154 CFRange_Convert, &range)) 2155 return NULL; 2156 CFStringGetLineBounds(_self->ob_itself, 2157 range, 2158 &lineBeginIndex, 2159 &lineEndIndex, 2160 &contentsEndIndex); 2161 _res = Py_BuildValue("lll", 2162 lineBeginIndex, 2163 lineEndIndex, 2164 contentsEndIndex); 2165 return _res; 2166 } 2167 2168 static PyObject *CFStringRefObj_CFStringCreateArrayBySeparatingStrings(CFStringRefObject *_self, PyObject *_args) 2169 { 2170 PyObject *_res = NULL; 2171 CFArrayRef _rv; 2172 CFStringRef separatorString; 2173 if (!PyArg_ParseTuple(_args, "O&", 2174 CFStringRefObj_Convert, &separatorString)) 2175 return NULL; 2176 _rv = CFStringCreateArrayBySeparatingStrings((CFAllocatorRef)NULL, 2177 _self->ob_itself, 2178 separatorString); 2179 _res = Py_BuildValue("O&", 2180 CFArrayRefObj_New, _rv); 2181 return _res; 2182 } 2183 2184 static PyObject *CFStringRefObj_CFStringGetIntValue(CFStringRefObject *_self, PyObject *_args) 2185 { 2186 PyObject *_res = NULL; 2187 SInt32 _rv; 2188 #ifndef CFStringGetIntValue 2189 PyMac_PRECHECK(CFStringGetIntValue); 2190 #endif 2191 if (!PyArg_ParseTuple(_args, "")) 2192 return NULL; 2193 _rv = CFStringGetIntValue(_self->ob_itself); 2194 _res = Py_BuildValue("l", 2195 _rv); 2196 return _res; 2197 } 2198 2199 static PyObject *CFStringRefObj_CFStringGetDoubleValue(CFStringRefObject *_self, PyObject *_args) 2200 { 2201 PyObject *_res = NULL; 2202 double _rv; 2203 #ifndef CFStringGetDoubleValue 2204 PyMac_PRECHECK(CFStringGetDoubleValue); 2205 #endif 2206 if (!PyArg_ParseTuple(_args, "")) 2207 return NULL; 2208 _rv = CFStringGetDoubleValue(_self->ob_itself); 2209 _res = Py_BuildValue("d", 2210 _rv); 2211 return _res; 2212 } 2213 2214 static PyObject *CFStringRefObj_CFStringConvertIANACharSetNameToEncoding(CFStringRefObject *_self, PyObject *_args) 2215 { 2216 PyObject *_res = NULL; 2217 CFStringEncoding _rv; 2218 #ifndef CFStringConvertIANACharSetNameToEncoding 2219 PyMac_PRECHECK(CFStringConvertIANACharSetNameToEncoding); 2220 #endif 2221 if (!PyArg_ParseTuple(_args, "")) 2222 return NULL; 2223 _rv = CFStringConvertIANACharSetNameToEncoding(_self->ob_itself); 2224 _res = Py_BuildValue("l", 2225 _rv); 2226 return _res; 2227 } 2228 2229 static PyObject *CFStringRefObj_CFShowStr(CFStringRefObject *_self, PyObject *_args) 2230 { 2231 PyObject *_res = NULL; 2232 #ifndef CFShowStr 2233 PyMac_PRECHECK(CFShowStr); 2234 #endif 2235 if (!PyArg_ParseTuple(_args, "")) 2236 return NULL; 2237 CFShowStr(_self->ob_itself); 2238 Py_INCREF(Py_None); 2239 _res = Py_None; 2240 return _res; 2241 } 2242 2243 static PyObject *CFStringRefObj_CFURLCreateWithString(CFStringRefObject *_self, PyObject *_args) 2244 { 2245 PyObject *_res = NULL; 2246 CFURLRef _rv; 2247 CFURLRef baseURL; 2248 if (!PyArg_ParseTuple(_args, "O&", 2249 OptionalCFURLRefObj_Convert, &baseURL)) 2250 return NULL; 2251 _rv = CFURLCreateWithString((CFAllocatorRef)NULL, 2252 _self->ob_itself, 2253 baseURL); 2254 _res = Py_BuildValue("O&", 2255 CFURLRefObj_New, _rv); 2256 return _res; 2257 } 2258 2259 static PyObject *CFStringRefObj_CFURLCreateWithFileSystemPath(CFStringRefObject *_self, PyObject *_args) 2260 { 2261 PyObject *_res = NULL; 2262 CFURLRef _rv; 2263 CFURLPathStyle pathStyle; 2264 Boolean isDirectory; 2265 if (!PyArg_ParseTuple(_args, "ll", 2266 &pathStyle, 2267 &isDirectory)) 2268 return NULL; 2269 _rv = CFURLCreateWithFileSystemPath((CFAllocatorRef)NULL, 2270 _self->ob_itself, 2271 pathStyle, 2272 isDirectory); 2273 _res = Py_BuildValue("O&", 2274 CFURLRefObj_New, _rv); 2275 return _res; 2276 } 2277 2278 static PyObject *CFStringRefObj_CFURLCreateWithFileSystemPathRelativeToBase(CFStringRefObject *_self, PyObject *_args) 2279 { 2280 PyObject *_res = NULL; 2281 CFURLRef _rv; 2282 CFURLPathStyle pathStyle; 2283 Boolean isDirectory; 2284 CFURLRef baseURL; 2285 if (!PyArg_ParseTuple(_args, "llO&", 2286 &pathStyle, 2287 &isDirectory, 2288 OptionalCFURLRefObj_Convert, &baseURL)) 2289 return NULL; 2290 _rv = CFURLCreateWithFileSystemPathRelativeToBase((CFAllocatorRef)NULL, 2291 _self->ob_itself, 2292 pathStyle, 2293 isDirectory, 2294 baseURL); 2295 _res = Py_BuildValue("O&", 2296 CFURLRefObj_New, _rv); 2297 return _res; 2298 } 2299 2300 static PyObject *CFStringRefObj_CFURLCreateStringByReplacingPercentEscapes(CFStringRefObject *_self, PyObject *_args) 2301 { 2302 PyObject *_res = NULL; 2303 CFStringRef _rv; 2304 CFStringRef charactersToLeaveEscaped; 2305 if (!PyArg_ParseTuple(_args, "O&", 2306 CFStringRefObj_Convert, &charactersToLeaveEscaped)) 2307 return NULL; 2308 _rv = CFURLCreateStringByReplacingPercentEscapes((CFAllocatorRef)NULL, 2309 _self->ob_itself, 2310 charactersToLeaveEscaped); 2311 _res = Py_BuildValue("O&", 2312 CFStringRefObj_New, _rv); 2313 return _res; 2314 } 2315 2316 static PyObject *CFStringRefObj_CFURLCreateStringByAddingPercentEscapes(CFStringRefObject *_self, PyObject *_args) 2317 { 2318 PyObject *_res = NULL; 2319 CFStringRef _rv; 2320 CFStringRef charactersToLeaveUnescaped; 2321 CFStringRef legalURLCharactersToBeEscaped; 2322 CFStringEncoding encoding; 2323 if (!PyArg_ParseTuple(_args, "O&O&l", 2324 CFStringRefObj_Convert, &charactersToLeaveUnescaped, 2325 CFStringRefObj_Convert, &legalURLCharactersToBeEscaped, 2326 &encoding)) 2327 return NULL; 2328 _rv = CFURLCreateStringByAddingPercentEscapes((CFAllocatorRef)NULL, 2329 _self->ob_itself, 2330 charactersToLeaveUnescaped, 2331 legalURLCharactersToBeEscaped, 2332 encoding); 2333 _res = Py_BuildValue("O&", 2334 CFStringRefObj_New, _rv); 2335 return _res; 2336 } 2337 2338 static PyObject *CFStringRefObj_CFStringGetString(CFStringRefObject *_self, PyObject *_args) 2339 { 2340 PyObject *_res = NULL; 2341 2342 int size = CFStringGetLength(_self->ob_itself)+1; 2343 char *data = malloc(size); 2344 2345 if( data == NULL ) return PyErr_NoMemory(); 2346 if ( CFStringGetCString(_self->ob_itself, data, size, 0) ) { 2347 _res = (PyObject *)PyString_FromString(data); 2348 } else { 2349 PyErr_SetString(PyExc_RuntimeError, "CFStringGetCString could not fit the string"); 2350 _res = NULL; 2351 } 2352 free(data); 2353 return _res; 2354 2355 } 2356 2357 static PyObject *CFStringRefObj_CFStringGetUnicode(CFStringRefObject *_self, PyObject *_args) 2358 { 2359 PyObject *_res = NULL; 2360 2361 int size = CFStringGetLength(_self->ob_itself)+1; 2362 Py_UNICODE *data = malloc(size*sizeof(Py_UNICODE)); 2363 CFRange range; 2364 2365 range.location = 0; 2366 range.length = size; 2367 if( data == NULL ) return PyErr_NoMemory(); 2368 CFStringGetCharacters(_self->ob_itself, range, data); 2369 _res = (PyObject *)PyUnicode_FromUnicode(data, size-1); 2370 free(data); 2371 return _res; 2372 2373 } 2374 2375 static PyMethodDef CFStringRefObj_methods[] = { 2376 {"CFStringCreateWithSubstring", (PyCFunction)CFStringRefObj_CFStringCreateWithSubstring, 1, 2377 PyDoc_STR("(CFRange range) -> (CFStringRef _rv)")}, 2378 {"CFStringCreateCopy", (PyCFunction)CFStringRefObj_CFStringCreateCopy, 1, 2379 PyDoc_STR("() -> (CFStringRef _rv)")}, 2380 {"CFStringGetLength", (PyCFunction)CFStringRefObj_CFStringGetLength, 1, 2381 PyDoc_STR("() -> (CFIndex _rv)")}, 2382 {"CFStringGetBytes", (PyCFunction)CFStringRefObj_CFStringGetBytes, 1, 2383 PyDoc_STR("(CFRange range, CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation, CFIndex maxBufLen) -> (CFIndex _rv, UInt8 buffer, CFIndex usedBufLen)")}, 2384 {"CFStringCreateExternalRepresentation", (PyCFunction)CFStringRefObj_CFStringCreateExternalRepresentation, 1, 2385 PyDoc_STR("(CFStringEncoding encoding, UInt8 lossByte) -> (CFDataRef _rv)")}, 2386 {"CFStringGetSmallestEncoding", (PyCFunction)CFStringRefObj_CFStringGetSmallestEncoding, 1, 2387 PyDoc_STR("() -> (CFStringEncoding _rv)")}, 2388 {"CFStringGetFastestEncoding", (PyCFunction)CFStringRefObj_CFStringGetFastestEncoding, 1, 2389 PyDoc_STR("() -> (CFStringEncoding _rv)")}, 2390 {"CFStringCompareWithOptions", (PyCFunction)CFStringRefObj_CFStringCompareWithOptions, 1, 2391 PyDoc_STR("(CFStringRef theString2, CFRange rangeToCompare, CFOptionFlags compareOptions) -> (CFComparisonResult _rv)")}, 2392 {"CFStringCompare", (PyCFunction)CFStringRefObj_CFStringCompare, 1, 2393 PyDoc_STR("(CFStringRef theString2, CFOptionFlags compareOptions) -> (CFComparisonResult _rv)")}, 2394 {"CFStringFindWithOptions", (PyCFunction)CFStringRefObj_CFStringFindWithOptions, 1, 2395 PyDoc_STR("(CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags searchOptions) -> (Boolean _rv, CFRange result)")}, 2396 {"CFStringCreateArrayWithFindResults", (PyCFunction)CFStringRefObj_CFStringCreateArrayWithFindResults, 1, 2397 PyDoc_STR("(CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags compareOptions) -> (CFArrayRef _rv)")}, 2398 {"CFStringFind", (PyCFunction)CFStringRefObj_CFStringFind, 1, 2399 PyDoc_STR("(CFStringRef stringToFind, CFOptionFlags compareOptions) -> (CFRange _rv)")}, 2400 {"CFStringHasPrefix", (PyCFunction)CFStringRefObj_CFStringHasPrefix, 1, 2401 PyDoc_STR("(CFStringRef prefix) -> (Boolean _rv)")}, 2402 {"CFStringHasSuffix", (PyCFunction)CFStringRefObj_CFStringHasSuffix, 1, 2403 PyDoc_STR("(CFStringRef suffix) -> (Boolean _rv)")}, 2404 {"CFStringGetLineBounds", (PyCFunction)CFStringRefObj_CFStringGetLineBounds, 1, 2405 PyDoc_STR("(CFRange range) -> (CFIndex lineBeginIndex, CFIndex lineEndIndex, CFIndex contentsEndIndex)")}, 2406 {"CFStringCreateArrayBySeparatingStrings", (PyCFunction)CFStringRefObj_CFStringCreateArrayBySeparatingStrings, 1, 2407 PyDoc_STR("(CFStringRef separatorString) -> (CFArrayRef _rv)")}, 2408 {"CFStringGetIntValue", (PyCFunction)CFStringRefObj_CFStringGetIntValue, 1, 2409 PyDoc_STR("() -> (SInt32 _rv)")}, 2410 {"CFStringGetDoubleValue", (PyCFunction)CFStringRefObj_CFStringGetDoubleValue, 1, 2411 PyDoc_STR("() -> (double _rv)")}, 2412 {"CFStringConvertIANACharSetNameToEncoding", (PyCFunction)CFStringRefObj_CFStringConvertIANACharSetNameToEncoding, 1, 2413 PyDoc_STR("() -> (CFStringEncoding _rv)")}, 2414 {"CFShowStr", (PyCFunction)CFStringRefObj_CFShowStr, 1, 2415 PyDoc_STR("() -> None")}, 2416 {"CFURLCreateWithString", (PyCFunction)CFStringRefObj_CFURLCreateWithString, 1, 2417 PyDoc_STR("(CFURLRef baseURL) -> (CFURLRef _rv)")}, 2418 {"CFURLCreateWithFileSystemPath", (PyCFunction)CFStringRefObj_CFURLCreateWithFileSystemPath, 1, 2419 PyDoc_STR("(CFURLPathStyle pathStyle, Boolean isDirectory) -> (CFURLRef _rv)")}, 2420 {"CFURLCreateWithFileSystemPathRelativeToBase", (PyCFunction)CFStringRefObj_CFURLCreateWithFileSystemPathRelativeToBase, 1, 2421 PyDoc_STR("(CFURLPathStyle pathStyle, Boolean isDirectory, CFURLRef baseURL) -> (CFURLRef _rv)")}, 2422 {"CFURLCreateStringByReplacingPercentEscapes", (PyCFunction)CFStringRefObj_CFURLCreateStringByReplacingPercentEscapes, 1, 2423 PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, 2424 {"CFURLCreateStringByAddingPercentEscapes", (PyCFunction)CFStringRefObj_CFURLCreateStringByAddingPercentEscapes, 1, 2425 PyDoc_STR("(CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding) -> (CFStringRef _rv)")}, 2426 {"CFStringGetString", (PyCFunction)CFStringRefObj_CFStringGetString, 1, 2427 PyDoc_STR("() -> (string _rv)")}, 2428 {"CFStringGetUnicode", (PyCFunction)CFStringRefObj_CFStringGetUnicode, 1, 2429 PyDoc_STR("() -> (unicode _rv)")}, 2430 {NULL, NULL, 0} 822 2431 }; 823 2432 824 #define CF MutableArrayRefObj_getsetlist NULL825 826 827 static int CF MutableArrayRefObj_compare(CFMutableArrayRefObject *self, CFMutableArrayRefObject *other)828 { 829 /* XXXX Or should we use CFEqual?? */830 if ( self->ob_itself > other->ob_itself ) return 1;831 if ( self->ob_itself < other->ob_itself ) return -1;832 return 0;833 } 834 835 static PyObject * CF MutableArrayRefObj_repr(CFMutableArrayRefObject *self)836 { 837 char buf[100];838 sprintf(buf, "<CFMutableArrayRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);839 return PyString_FromString(buf);840 } 841 842 static int CF MutableArrayRefObj_hash(CFMutableArrayRefObject *self)843 { 844 /* XXXX Or should we use CFHash?? */845 return (int)self->ob_itself;846 } 847 static int CF MutableArrayRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)848 { 849 CFMutableArrayRef itself;850 char *kw[] = {"itself", 0};851 852 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableArrayRefObj_Convert, &itself))853 {854 ((CFMutableArrayRefObject *)_self)->ob_itself = itself;855 return 0;856 }857 858 /* Any CFTypeRef descendent is allowed as initializer too */859 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))860 {861 ((CFMutableArrayRefObject *)_self)->ob_itself = itself;862 return 0;863 }864 return -1;865 } 866 867 #define CF MutableArrayRefObj_tp_alloc PyType_GenericAlloc868 869 static PyObject *CF MutableArrayRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)870 { 871 PyObject *self;872 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;873 ((CFMutableArrayRefObject *)self)->ob_itself = NULL;874 ((CFMutableArrayRefObject *)self)->ob_freeit = CFRelease;875 return self;876 } 877 878 #define CF MutableArrayRefObj_tp_free PyObject_Del879 880 881 PyTypeObject CF MutableArrayRef_Type = {882 PyObject_HEAD_INIT(NULL)883 0, /*ob_size*/884 "_CF.CFMutableArrayRef", /*tp_name*/885 sizeof(CFMutableArrayRefObject), /*tp_basicsize*/886 0, /*tp_itemsize*/887 /* methods */888 (destructor) CFMutableArrayRefObj_dealloc, /*tp_dealloc*/889 0, /*tp_print*/890 (getattrfunc)0, /*tp_getattr*/891 (setattrfunc)0, /*tp_setattr*/892 (cmpfunc) CFMutableArrayRefObj_compare, /*tp_compare*/893 (reprfunc) CFMutableArrayRefObj_repr, /*tp_repr*/894 (PyNumberMethods *)0, /* tp_as_number */895 (PySequenceMethods *)0, /* tp_as_sequence */896 (PyMappingMethods *)0, /* tp_as_mapping */897 (hashfunc) CFMutableArrayRefObj_hash, /*tp_hash*/898 0, /*tp_call*/899 0, /*tp_str*/900 PyObject_GenericGetAttr, /*tp_getattro*/901 PyObject_GenericSetAttr, /*tp_setattro */902 0, /*tp_as_buffer*/903 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */904 0, /*tp_doc*/905 0, /*tp_traverse*/906 0, /*tp_clear*/907 0, /*tp_richcompare*/908 0, /*tp_weaklistoffset*/909 0, /*tp_iter*/910 0, /*tp_iternext*/911 CFMutableArrayRefObj_methods, /* tp_methods */912 0, /*tp_members*/913 CFMutableArrayRefObj_getsetlist, /*tp_getset*/914 0, /*tp_base*/915 0, /*tp_dict*/916 0, /*tp_descr_get*/917 0, /*tp_descr_set*/918 0, /*tp_dictoffset*/919 CFMutableArrayRefObj_tp_init, /* tp_init */920 CFMutableArrayRefObj_tp_alloc, /* tp_alloc */921 CFMutableArrayRefObj_tp_new, /* tp_new */922 CFMutableArrayRefObj_tp_free, /* tp_free */2433 #define CFStringRefObj_getsetlist NULL 2434 2435 2436 static int CFStringRefObj_compare(CFStringRefObject *self, CFStringRefObject *other) 2437 { 2438 /* XXXX Or should we use CFEqual?? */ 2439 if ( self->ob_itself > other->ob_itself ) return 1; 2440 if ( self->ob_itself < other->ob_itself ) return -1; 2441 return 0; 2442 } 2443 2444 static PyObject * CFStringRefObj_repr(CFStringRefObject *self) 2445 { 2446 char buf[100]; 2447 sprintf(buf, "<CFStringRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 2448 return PyString_FromString(buf); 2449 } 2450 2451 static int CFStringRefObj_hash(CFStringRefObject *self) 2452 { 2453 /* XXXX Or should we use CFHash?? */ 2454 return (int)self->ob_itself; 2455 } 2456 static int CFStringRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 2457 { 2458 CFStringRef itself; 2459 char *kw[] = {"itself", 0}; 2460 2461 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFStringRefObj_Convert, &itself)) 2462 { 2463 ((CFStringRefObject *)_self)->ob_itself = itself; 2464 return 0; 2465 } 2466 2467 /* Any CFTypeRef descendent is allowed as initializer too */ 2468 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 2469 { 2470 ((CFStringRefObject *)_self)->ob_itself = itself; 2471 return 0; 2472 } 2473 return -1; 2474 } 2475 2476 #define CFStringRefObj_tp_alloc PyType_GenericAlloc 2477 2478 static PyObject *CFStringRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 2479 { 2480 PyObject *self; 2481 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 2482 ((CFStringRefObject *)self)->ob_itself = NULL; 2483 ((CFStringRefObject *)self)->ob_freeit = CFRelease; 2484 return self; 2485 } 2486 2487 #define CFStringRefObj_tp_free PyObject_Del 2488 2489 2490 PyTypeObject CFStringRef_Type = { 2491 PyObject_HEAD_INIT(NULL) 2492 0, /*ob_size*/ 2493 "_CF.CFStringRef", /*tp_name*/ 2494 sizeof(CFStringRefObject), /*tp_basicsize*/ 2495 0, /*tp_itemsize*/ 2496 /* methods */ 2497 (destructor) CFStringRefObj_dealloc, /*tp_dealloc*/ 2498 0, /*tp_print*/ 2499 (getattrfunc)0, /*tp_getattr*/ 2500 (setattrfunc)0, /*tp_setattr*/ 2501 (cmpfunc) CFStringRefObj_compare, /*tp_compare*/ 2502 (reprfunc) CFStringRefObj_repr, /*tp_repr*/ 2503 (PyNumberMethods *)0, /* tp_as_number */ 2504 (PySequenceMethods *)0, /* tp_as_sequence */ 2505 (PyMappingMethods *)0, /* tp_as_mapping */ 2506 (hashfunc) CFStringRefObj_hash, /*tp_hash*/ 2507 0, /*tp_call*/ 2508 0, /*tp_str*/ 2509 PyObject_GenericGetAttr, /*tp_getattro*/ 2510 PyObject_GenericSetAttr, /*tp_setattro */ 2511 0, /*tp_as_buffer*/ 2512 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 2513 0, /*tp_doc*/ 2514 0, /*tp_traverse*/ 2515 0, /*tp_clear*/ 2516 0, /*tp_richcompare*/ 2517 0, /*tp_weaklistoffset*/ 2518 0, /*tp_iter*/ 2519 0, /*tp_iternext*/ 2520 CFStringRefObj_methods, /* tp_methods */ 2521 0, /*tp_members*/ 2522 CFStringRefObj_getsetlist, /*tp_getset*/ 2523 0, /*tp_base*/ 2524 0, /*tp_dict*/ 2525 0, /*tp_descr_get*/ 2526 0, /*tp_descr_set*/ 2527 0, /*tp_dictoffset*/ 2528 CFStringRefObj_tp_init, /* tp_init */ 2529 CFStringRefObj_tp_alloc, /* tp_alloc */ 2530 CFStringRefObj_tp_new, /* tp_new */ 2531 CFStringRefObj_tp_free, /* tp_free */ 923 2532 }; 924 2533 925 /* --------------- End object type CFMutableArrayRef ---------------- */ 926 927 928 /* ------------------ Object type CFDictionaryRef ------------------- */ 929 930 PyTypeObject CFDictionaryRef_Type; 931 932 #define CFDictionaryRefObj_Check(x) ((x)->ob_type == &CFDictionaryRef_Type || PyObject_TypeCheck((x), &CFDictionaryRef_Type)) 933 934 typedef struct CFDictionaryRefObject { 935 PyObject_HEAD 936 CFDictionaryRef ob_itself; 937 void (*ob_freeit)(CFTypeRef ptr); 938 } CFDictionaryRefObject; 939 940 PyObject *CFDictionaryRefObj_New(CFDictionaryRef itself) 941 { 942 CFDictionaryRefObject *it; 943 if (itself == NULL) 944 { 945 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 946 return NULL; 947 } 948 it = PyObject_NEW(CFDictionaryRefObject, &CFDictionaryRef_Type); 949 if (it == NULL) return NULL; 950 /* XXXX Should we tp_init or tp_new our basetype? */ 951 it->ob_itself = itself; 952 it->ob_freeit = CFRelease; 953 return (PyObject *)it; 954 } 955 956 int CFDictionaryRefObj_Convert(PyObject *v, CFDictionaryRef *p_itself) 957 { 958 959 if (v == Py_None) { *p_itself = NULL; return 1; } 960 /* Check for other CF objects here */ 961 962 if (!CFDictionaryRefObj_Check(v)) 963 { 964 PyErr_SetString(PyExc_TypeError, "CFDictionaryRef required"); 965 return 0; 966 } 967 *p_itself = ((CFDictionaryRefObject *)v)->ob_itself; 968 return 1; 969 } 970 971 static void CFDictionaryRefObj_dealloc(CFDictionaryRefObject *self) 972 { 973 if (self->ob_freeit && self->ob_itself) 974 { 975 self->ob_freeit((CFTypeRef)self->ob_itself); 976 self->ob_itself = NULL; 977 } 978 CFTypeRef_Type.tp_dealloc((PyObject *)self); 979 } 980 981 static PyObject *CFDictionaryRefObj_CFDictionaryCreateCopy(CFDictionaryRefObject *_self, PyObject *_args) 982 { 983 PyObject *_res = NULL; 984 CFDictionaryRef _rv; 985 if (!PyArg_ParseTuple(_args, "")) 986 return NULL; 987 _rv = CFDictionaryCreateCopy((CFAllocatorRef)NULL, 988 _self->ob_itself); 989 _res = Py_BuildValue("O&", 990 CFDictionaryRefObj_New, _rv); 991 return _res; 992 } 993 994 static PyObject *CFDictionaryRefObj_CFDictionaryGetCount(CFDictionaryRefObject *_self, PyObject *_args) 995 { 996 PyObject *_res = NULL; 997 CFIndex _rv; 998 #ifndef CFDictionaryGetCount 999 PyMac_PRECHECK(CFDictionaryGetCount); 1000 #endif 1001 if (!PyArg_ParseTuple(_args, "")) 1002 return NULL; 1003 _rv = CFDictionaryGetCount(_self->ob_itself); 1004 _res = Py_BuildValue("l", 1005 _rv); 1006 return _res; 1007 } 1008 1009 static PyMethodDef CFDictionaryRefObj_methods[] = { 1010 {"CFDictionaryCreateCopy", (PyCFunction)CFDictionaryRefObj_CFDictionaryCreateCopy, 1, 1011 PyDoc_STR("() -> (CFDictionaryRef _rv)")}, 1012 {"CFDictionaryGetCount", (PyCFunction)CFDictionaryRefObj_CFDictionaryGetCount, 1, 1013 PyDoc_STR("() -> (CFIndex _rv)")}, 1014 {NULL, NULL, 0} 2534 /* ------------------ End object type CFStringRef ------------------- */ 2535 2536 2537 /* ----------------- Object type CFMutableStringRef ----------------- */ 2538 2539 PyTypeObject CFMutableStringRef_Type; 2540 2541 #define CFMutableStringRefObj_Check(x) ((x)->ob_type == &CFMutableStringRef_Type || PyObject_TypeCheck((x), &CFMutableStringRef_Type)) 2542 2543 typedef struct CFMutableStringRefObject { 2544 PyObject_HEAD 2545 CFMutableStringRef ob_itself; 2546 void (*ob_freeit)(CFTypeRef ptr); 2547 } CFMutableStringRefObject; 2548 2549 PyObject *CFMutableStringRefObj_New(CFMutableStringRef itself) 2550 { 2551 CFMutableStringRefObject *it; 2552 if (itself == NULL) 2553 { 2554 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 2555 return NULL; 2556 } 2557 it = PyObject_NEW(CFMutableStringRefObject, &CFMutableStringRef_Type); 2558 if (it == NULL) return NULL; 2559 /* XXXX Should we tp_init or tp_new our basetype? */ 2560 it->ob_itself = itself; 2561 it->ob_freeit = CFRelease; 2562 return (PyObject *)it; 2563 } 2564 2565 int CFMutableStringRefObj_Convert(PyObject *v, CFMutableStringRef *p_itself) 2566 { 2567 2568 if (v == Py_None) { *p_itself = NULL; return 1; } 2569 /* Check for other CF objects here */ 2570 2571 if (!CFMutableStringRefObj_Check(v)) 2572 { 2573 PyErr_SetString(PyExc_TypeError, "CFMutableStringRef required"); 2574 return 0; 2575 } 2576 *p_itself = ((CFMutableStringRefObject *)v)->ob_itself; 2577 return 1; 2578 } 2579 2580 static void CFMutableStringRefObj_dealloc(CFMutableStringRefObject *self) 2581 { 2582 if (self->ob_freeit && self->ob_itself) 2583 { 2584 self->ob_freeit((CFTypeRef)self->ob_itself); 2585 self->ob_itself = NULL; 2586 } 2587 CFStringRef_Type.tp_dealloc((PyObject *)self); 2588 } 2589 2590 static PyObject *CFMutableStringRefObj_CFStringAppend(CFMutableStringRefObject *_self, PyObject *_args) 2591 { 2592 PyObject *_res = NULL; 2593 CFStringRef appendedString; 2594 #ifndef CFStringAppend 2595 PyMac_PRECHECK(CFStringAppend); 2596 #endif 2597 if (!PyArg_ParseTuple(_args, "O&", 2598 CFStringRefObj_Convert, &appendedString)) 2599 return NULL; 2600 CFStringAppend(_self->ob_itself, 2601 appendedString); 2602 Py_INCREF(Py_None); 2603 _res = Py_None; 2604 return _res; 2605 } 2606 2607 static PyObject *CFMutableStringRefObj_CFStringAppendCharacters(CFMutableStringRefObject *_self, PyObject *_args) 2608 { 2609 PyObject *_res = NULL; 2610 UniChar *chars__in__; 2611 UniCharCount chars__len__; 2612 int chars__in_len__; 2613 #ifndef CFStringAppendCharacters 2614 PyMac_PRECHECK(CFStringAppendCharacters); 2615 #endif 2616 if (!PyArg_ParseTuple(_args, "u#", 2617 &chars__in__, &chars__in_len__)) 2618 return NULL; 2619 chars__len__ = chars__in_len__; 2620 CFStringAppendCharacters(_self->ob_itself, 2621 chars__in__, chars__len__); 2622 Py_INCREF(Py_None); 2623 _res = Py_None; 2624 return _res; 2625 } 2626 2627 static PyObject *CFMutableStringRefObj_CFStringAppendPascalString(CFMutableStringRefObject *_self, PyObject *_args) 2628 { 2629 PyObject *_res = NULL; 2630 Str255 pStr; 2631 CFStringEncoding encoding; 2632 #ifndef CFStringAppendPascalString 2633 PyMac_PRECHECK(CFStringAppendPascalString); 2634 #endif 2635 if (!PyArg_ParseTuple(_args, "O&l", 2636 PyMac_GetStr255, pStr, 2637 &encoding)) 2638 return NULL; 2639 CFStringAppendPascalString(_self->ob_itself, 2640 pStr, 2641 encoding); 2642 Py_INCREF(Py_None); 2643 _res = Py_None; 2644 return _res; 2645 } 2646 2647 static PyObject *CFMutableStringRefObj_CFStringAppendCString(CFMutableStringRefObject *_self, PyObject *_args) 2648 { 2649 PyObject *_res = NULL; 2650 char* cStr; 2651 CFStringEncoding encoding; 2652 #ifndef CFStringAppendCString 2653 PyMac_PRECHECK(CFStringAppendCString); 2654 #endif 2655 if (!PyArg_ParseTuple(_args, "sl", 2656 &cStr, 2657 &encoding)) 2658 return NULL; 2659 CFStringAppendCString(_self->ob_itself, 2660 cStr, 2661 encoding); 2662 Py_INCREF(Py_None); 2663 _res = Py_None; 2664 return _res; 2665 } 2666 2667 static PyObject *CFMutableStringRefObj_CFStringInsert(CFMutableStringRefObject *_self, PyObject *_args) 2668 { 2669 PyObject *_res = NULL; 2670 CFIndex idx; 2671 CFStringRef insertedStr; 2672 #ifndef CFStringInsert 2673 PyMac_PRECHECK(CFStringInsert); 2674 #endif 2675 if (!PyArg_ParseTuple(_args, "lO&", 2676 &idx, 2677 CFStringRefObj_Convert, &insertedStr)) 2678 return NULL; 2679 CFStringInsert(_self->ob_itself, 2680 idx, 2681 insertedStr); 2682 Py_INCREF(Py_None); 2683 _res = Py_None; 2684 return _res; 2685 } 2686 2687 static PyObject *CFMutableStringRefObj_CFStringDelete(CFMutableStringRefObject *_self, PyObject *_args) 2688 { 2689 PyObject *_res = NULL; 2690 CFRange range; 2691 #ifndef CFStringDelete 2692 PyMac_PRECHECK(CFStringDelete); 2693 #endif 2694 if (!PyArg_ParseTuple(_args, "O&", 2695 CFRange_Convert, &range)) 2696 return NULL; 2697 CFStringDelete(_self->ob_itself, 2698 range); 2699 Py_INCREF(Py_None); 2700 _res = Py_None; 2701 return _res; 2702 } 2703 2704 static PyObject *CFMutableStringRefObj_CFStringReplace(CFMutableStringRefObject *_self, PyObject *_args) 2705 { 2706 PyObject *_res = NULL; 2707 CFRange range; 2708 CFStringRef replacement; 2709 #ifndef CFStringReplace 2710 PyMac_PRECHECK(CFStringReplace); 2711 #endif 2712 if (!PyArg_ParseTuple(_args, "O&O&", 2713 CFRange_Convert, &range, 2714 CFStringRefObj_Convert, &replacement)) 2715 return NULL; 2716 CFStringReplace(_self->ob_itself, 2717 range, 2718 replacement); 2719 Py_INCREF(Py_None); 2720 _res = Py_None; 2721 return _res; 2722 } 2723 2724 static PyObject *CFMutableStringRefObj_CFStringReplaceAll(CFMutableStringRefObject *_self, PyObject *_args) 2725 { 2726 PyObject *_res = NULL; 2727 CFStringRef replacement; 2728 #ifndef CFStringReplaceAll 2729 PyMac_PRECHECK(CFStringReplaceAll); 2730 #endif 2731 if (!PyArg_ParseTuple(_args, "O&", 2732 CFStringRefObj_Convert, &replacement)) 2733 return NULL; 2734 CFStringReplaceAll(_self->ob_itself, 2735 replacement); 2736 Py_INCREF(Py_None); 2737 _res = Py_None; 2738 return _res; 2739 } 2740 2741 static PyObject *CFMutableStringRefObj_CFStringPad(CFMutableStringRefObject *_self, PyObject *_args) 2742 { 2743 PyObject *_res = NULL; 2744 CFStringRef padString; 2745 CFIndex length; 2746 CFIndex indexIntoPad; 2747 #ifndef CFStringPad 2748 PyMac_PRECHECK(CFStringPad); 2749 #endif 2750 if (!PyArg_ParseTuple(_args, "O&ll", 2751 CFStringRefObj_Convert, &padString, 2752 &length, 2753 &indexIntoPad)) 2754 return NULL; 2755 CFStringPad(_self->ob_itself, 2756 padString, 2757 length, 2758 indexIntoPad); 2759 Py_INCREF(Py_None); 2760 _res = Py_None; 2761 return _res; 2762 } 2763 2764 static PyObject *CFMutableStringRefObj_CFStringTrim(CFMutableStringRefObject *_self, PyObject *_args) 2765 { 2766 PyObject *_res = NULL; 2767 CFStringRef trimString; 2768 #ifndef CFStringTrim 2769 PyMac_PRECHECK(CFStringTrim); 2770 #endif 2771 if (!PyArg_ParseTuple(_args, "O&", 2772 CFStringRefObj_Convert, &trimString)) 2773 return NULL; 2774 CFStringTrim(_self->ob_itself, 2775 trimString); 2776 Py_INCREF(Py_None); 2777 _res = Py_None; 2778 return _res; 2779 } 2780 2781 static PyObject *CFMutableStringRefObj_CFStringTrimWhitespace(CFMutableStringRefObject *_self, PyObject *_args) 2782 { 2783 PyObject *_res = NULL; 2784 #ifndef CFStringTrimWhitespace 2785 PyMac_PRECHECK(CFStringTrimWhitespace); 2786 #endif 2787 if (!PyArg_ParseTuple(_args, "")) 2788 return NULL; 2789 CFStringTrimWhitespace(_self->ob_itself); 2790 Py_INCREF(Py_None); 2791 _res = Py_None; 2792 return _res; 2793 } 2794 2795 static PyMethodDef CFMutableStringRefObj_methods[] = { 2796 {"CFStringAppend", (PyCFunction)CFMutableStringRefObj_CFStringAppend, 1, 2797 PyDoc_STR("(CFStringRef appendedString) -> None")}, 2798 {"CFStringAppendCharacters", (PyCFunction)CFMutableStringRefObj_CFStringAppendCharacters, 1, 2799 PyDoc_STR("(Buffer chars) -> None")}, 2800 {"CFStringAppendPascalString", (PyCFunction)CFMutableStringRefObj_CFStringAppendPascalString, 1, 2801 PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> None")}, 2802 {"CFStringAppendCString", (PyCFunction)CFMutableStringRefObj_CFStringAppendCString, 1, 2803 PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> None")}, 2804 {"CFStringInsert", (PyCFunction)CFMutableStringRefObj_CFStringInsert, 1, 2805 PyDoc_STR("(CFIndex idx, CFStringRef insertedStr) -> None")}, 2806 {"CFStringDelete", (PyCFunction)CFMutableStringRefObj_CFStringDelete, 1, 2807 PyDoc_STR("(CFRange range) -> None")}, 2808 {"CFStringReplace", (PyCFunction)CFMutableStringRefObj_CFStringReplace, 1, 2809 PyDoc_STR("(CFRange range, CFStringRef replacement) -> None")}, 2810 {"CFStringReplaceAll", (PyCFunction)CFMutableStringRefObj_CFStringReplaceAll, 1, 2811 PyDoc_STR("(CFStringRef replacement) -> None")}, 2812 {"CFStringPad", (PyCFunction)CFMutableStringRefObj_CFStringPad, 1, 2813 PyDoc_STR("(CFStringRef padString, CFIndex length, CFIndex indexIntoPad) -> None")}, 2814 {"CFStringTrim", (PyCFunction)CFMutableStringRefObj_CFStringTrim, 1, 2815 PyDoc_STR("(CFStringRef trimString) -> None")}, 2816 {"CFStringTrimWhitespace", (PyCFunction)CFMutableStringRefObj_CFStringTrimWhitespace, 1, 2817 PyDoc_STR("() -> None")}, 2818 {NULL, NULL, 0} 1015 2819 }; 1016 2820 1017 #define CF DictionaryRefObj_getsetlist NULL1018 1019 1020 static int CF DictionaryRefObj_compare(CFDictionaryRefObject *self, CFDictionaryRefObject *other)1021 { 1022 /* XXXX Or should we use CFEqual?? */1023 if ( self->ob_itself > other->ob_itself ) return 1;1024 if ( self->ob_itself < other->ob_itself ) return -1;1025 return 0;1026 } 1027 1028 static PyObject * CF DictionaryRefObj_repr(CFDictionaryRefObject *self)1029 { 1030 char buf[100];1031 sprintf(buf, "<CFDictionaryRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);1032 return PyString_FromString(buf);1033 } 1034 1035 static int CF DictionaryRefObj_hash(CFDictionaryRefObject *self)1036 { 1037 /* XXXX Or should we use CFHash?? */1038 return (int)self->ob_itself;1039 } 1040 static int CF DictionaryRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)1041 { 1042 CFDictionaryRef itself;1043 char *kw[] = {"itself", 0};1044 1045 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFDictionaryRefObj_Convert, &itself))1046 {1047 ((CFDictionaryRefObject *)_self)->ob_itself = itself;1048 return 0;1049 }1050 1051 /* Any CFTypeRef descendent is allowed as initializer too */1052 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))1053 {1054 ((CFDictionaryRefObject *)_self)->ob_itself = itself;1055 return 0;1056 }1057 return -1;1058 } 1059 1060 #define CF DictionaryRefObj_tp_alloc PyType_GenericAlloc1061 1062 static PyObject *CF DictionaryRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)1063 { 1064 PyObject *self;1065 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;1066 ((CFDictionaryRefObject *)self)->ob_itself = NULL;1067 ((CFDictionaryRefObject *)self)->ob_freeit = CFRelease;1068 return self;1069 } 1070 1071 #define CF DictionaryRefObj_tp_free PyObject_Del1072 1073 1074 PyTypeObject CF DictionaryRef_Type = {1075 PyObject_HEAD_INIT(NULL)1076 0, /*ob_size*/1077 "_CF.CFDictionaryRef", /*tp_name*/1078 sizeof(CFDictionaryRefObject), /*tp_basicsize*/1079 0, /*tp_itemsize*/1080 /* methods */1081 (destructor) CFDictionaryRefObj_dealloc, /*tp_dealloc*/1082 0, /*tp_print*/1083 (getattrfunc)0, /*tp_getattr*/1084 (setattrfunc)0, /*tp_setattr*/1085 (cmpfunc) CFDictionaryRefObj_compare, /*tp_compare*/1086 (reprfunc) CFDictionaryRefObj_repr, /*tp_repr*/1087 (PyNumberMethods *)0, /* tp_as_number */1088 (PySequenceMethods *)0, /* tp_as_sequence */1089 (PyMappingMethods *)0, /* tp_as_mapping */1090 (hashfunc) CFDictionaryRefObj_hash, /*tp_hash*/1091 0, /*tp_call*/1092 0, /*tp_str*/1093 PyObject_GenericGetAttr, /*tp_getattro*/1094 PyObject_GenericSetAttr, /*tp_setattro */1095 0, /*tp_as_buffer*/1096 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */1097 0, /*tp_doc*/1098 0, /*tp_traverse*/1099 0, /*tp_clear*/1100 0, /*tp_richcompare*/1101 0, /*tp_weaklistoffset*/1102 0, /*tp_iter*/1103 0, /*tp_iternext*/1104 CFDictionaryRefObj_methods, /* tp_methods */1105 0, /*tp_members*/1106 CFDictionaryRefObj_getsetlist, /*tp_getset*/1107 0, /*tp_base*/1108 0, /*tp_dict*/1109 0, /*tp_descr_get*/1110 0, /*tp_descr_set*/1111 0, /*tp_dictoffset*/1112 CFDictionaryRefObj_tp_init, /* tp_init */1113 CFDictionaryRefObj_tp_alloc, /* tp_alloc */1114 CFDictionaryRefObj_tp_new, /* tp_new */1115 CFDictionaryRefObj_tp_free, /* tp_free */2821 #define CFMutableStringRefObj_getsetlist NULL 2822 2823 2824 static int CFMutableStringRefObj_compare(CFMutableStringRefObject *self, CFMutableStringRefObject *other) 2825 { 2826 /* XXXX Or should we use CFEqual?? */ 2827 if ( self->ob_itself > other->ob_itself ) return 1; 2828 if ( self->ob_itself < other->ob_itself ) return -1; 2829 return 0; 2830 } 2831 2832 static PyObject * CFMutableStringRefObj_repr(CFMutableStringRefObject *self) 2833 { 2834 char buf[100]; 2835 sprintf(buf, "<CFMutableStringRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 2836 return PyString_FromString(buf); 2837 } 2838 2839 static int CFMutableStringRefObj_hash(CFMutableStringRefObject *self) 2840 { 2841 /* XXXX Or should we use CFHash?? */ 2842 return (int)self->ob_itself; 2843 } 2844 static int CFMutableStringRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 2845 { 2846 CFMutableStringRef itself; 2847 char *kw[] = {"itself", 0}; 2848 2849 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableStringRefObj_Convert, &itself)) 2850 { 2851 ((CFMutableStringRefObject *)_self)->ob_itself = itself; 2852 return 0; 2853 } 2854 2855 /* Any CFTypeRef descendent is allowed as initializer too */ 2856 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 2857 { 2858 ((CFMutableStringRefObject *)_self)->ob_itself = itself; 2859 return 0; 2860 } 2861 return -1; 2862 } 2863 2864 #define CFMutableStringRefObj_tp_alloc PyType_GenericAlloc 2865 2866 static PyObject *CFMutableStringRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 2867 { 2868 PyObject *self; 2869 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 2870 ((CFMutableStringRefObject *)self)->ob_itself = NULL; 2871 ((CFMutableStringRefObject *)self)->ob_freeit = CFRelease; 2872 return self; 2873 } 2874 2875 #define CFMutableStringRefObj_tp_free PyObject_Del 2876 2877 2878 PyTypeObject CFMutableStringRef_Type = { 2879 PyObject_HEAD_INIT(NULL) 2880 0, /*ob_size*/ 2881 "_CF.CFMutableStringRef", /*tp_name*/ 2882 sizeof(CFMutableStringRefObject), /*tp_basicsize*/ 2883 0, /*tp_itemsize*/ 2884 /* methods */ 2885 (destructor) CFMutableStringRefObj_dealloc, /*tp_dealloc*/ 2886 0, /*tp_print*/ 2887 (getattrfunc)0, /*tp_getattr*/ 2888 (setattrfunc)0, /*tp_setattr*/ 2889 (cmpfunc) CFMutableStringRefObj_compare, /*tp_compare*/ 2890 (reprfunc) CFMutableStringRefObj_repr, /*tp_repr*/ 2891 (PyNumberMethods *)0, /* tp_as_number */ 2892 (PySequenceMethods *)0, /* tp_as_sequence */ 2893 (PyMappingMethods *)0, /* tp_as_mapping */ 2894 (hashfunc) CFMutableStringRefObj_hash, /*tp_hash*/ 2895 0, /*tp_call*/ 2896 0, /*tp_str*/ 2897 PyObject_GenericGetAttr, /*tp_getattro*/ 2898 PyObject_GenericSetAttr, /*tp_setattro */ 2899 0, /*tp_as_buffer*/ 2900 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 2901 0, /*tp_doc*/ 2902 0, /*tp_traverse*/ 2903 0, /*tp_clear*/ 2904 0, /*tp_richcompare*/ 2905 0, /*tp_weaklistoffset*/ 2906 0, /*tp_iter*/ 2907 0, /*tp_iternext*/ 2908 CFMutableStringRefObj_methods, /* tp_methods */ 2909 0, /*tp_members*/ 2910 CFMutableStringRefObj_getsetlist, /*tp_getset*/ 2911 0, /*tp_base*/ 2912 0, /*tp_dict*/ 2913 0, /*tp_descr_get*/ 2914 0, /*tp_descr_set*/ 2915 0, /*tp_dictoffset*/ 2916 CFMutableStringRefObj_tp_init, /* tp_init */ 2917 CFMutableStringRefObj_tp_alloc, /* tp_alloc */ 2918 CFMutableStringRefObj_tp_new, /* tp_new */ 2919 CFMutableStringRefObj_tp_free, /* tp_free */ 1116 2920 }; 1117 2921 1118 /* ---------------- End object type CFDictionaryRef ----------------- */ 1119 1120 1121 /* --------------- Object type CFMutableDictionaryRef --------------- */ 1122 1123 PyTypeObject CFMutableDictionaryRef_Type; 1124 1125 #define CFMutableDictionaryRefObj_Check(x) ((x)->ob_type == &CFMutableDictionaryRef_Type || PyObject_TypeCheck((x), &CFMutableDictionaryRef_Type)) 1126 1127 typedef struct CFMutableDictionaryRefObject { 1128 PyObject_HEAD 1129 CFMutableDictionaryRef ob_itself; 1130 void (*ob_freeit)(CFTypeRef ptr); 1131 } CFMutableDictionaryRefObject; 1132 1133 PyObject *CFMutableDictionaryRefObj_New(CFMutableDictionaryRef itself) 1134 { 1135 CFMutableDictionaryRefObject *it; 1136 if (itself == NULL) 1137 { 1138 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 1139 return NULL; 1140 } 1141 it = PyObject_NEW(CFMutableDictionaryRefObject, &CFMutableDictionaryRef_Type); 1142 if (it == NULL) return NULL; 1143 /* XXXX Should we tp_init or tp_new our basetype? */ 1144 it->ob_itself = itself; 1145 it->ob_freeit = CFRelease; 1146 return (PyObject *)it; 1147 } 1148 1149 int CFMutableDictionaryRefObj_Convert(PyObject *v, CFMutableDictionaryRef *p_itself) 1150 { 1151 1152 if (v == Py_None) { *p_itself = NULL; return 1; } 1153 /* Check for other CF objects here */ 1154 1155 if (!CFMutableDictionaryRefObj_Check(v)) 1156 { 1157 PyErr_SetString(PyExc_TypeError, "CFMutableDictionaryRef required"); 1158 return 0; 1159 } 1160 *p_itself = ((CFMutableDictionaryRefObject *)v)->ob_itself; 1161 return 1; 1162 } 1163 1164 static void CFMutableDictionaryRefObj_dealloc(CFMutableDictionaryRefObject *self) 1165 { 1166 if (self->ob_freeit && self->ob_itself) 1167 { 1168 self->ob_freeit((CFTypeRef)self->ob_itself); 1169 self->ob_itself = NULL; 1170 } 1171 CFDictionaryRef_Type.tp_dealloc((PyObject *)self); 1172 } 1173 1174 static PyObject *CFMutableDictionaryRefObj_CFDictionaryRemoveAllValues(CFMutableDictionaryRefObject *_self, PyObject *_args) 1175 { 1176 PyObject *_res = NULL; 1177 #ifndef CFDictionaryRemoveAllValues 1178 PyMac_PRECHECK(CFDictionaryRemoveAllValues); 1179 #endif 1180 if (!PyArg_ParseTuple(_args, "")) 1181 return NULL; 1182 CFDictionaryRemoveAllValues(_self->ob_itself); 1183 Py_INCREF(Py_None); 1184 _res = Py_None; 1185 return _res; 1186 } 1187 1188 static PyMethodDef CFMutableDictionaryRefObj_methods[] = { 1189 {"CFDictionaryRemoveAllValues", (PyCFunction)CFMutableDictionaryRefObj_CFDictionaryRemoveAllValues, 1, 1190 PyDoc_STR("() -> None")}, 1191 {NULL, NULL, 0} 2922 /* --------------- End object type CFMutableStringRef --------------- */ 2923 2924 2925 /* ---------------------- Object type CFURLRef ---------------------- */ 2926 2927 PyTypeObject CFURLRef_Type; 2928 2929 #define CFURLRefObj_Check(x) ((x)->ob_type == &CFURLRef_Type || PyObject_TypeCheck((x), &CFURLRef_Type)) 2930 2931 typedef struct CFURLRefObject { 2932 PyObject_HEAD 2933 CFURLRef ob_itself; 2934 void (*ob_freeit)(CFTypeRef ptr); 2935 } CFURLRefObject; 2936 2937 PyObject *CFURLRefObj_New(CFURLRef itself) 2938 { 2939 CFURLRefObject *it; 2940 if (itself == NULL) 2941 { 2942 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 2943 return NULL; 2944 } 2945 it = PyObject_NEW(CFURLRefObject, &CFURLRef_Type); 2946 if (it == NULL) return NULL; 2947 /* XXXX Should we tp_init or tp_new our basetype? */ 2948 it->ob_itself = itself; 2949 it->ob_freeit = CFRelease; 2950 return (PyObject *)it; 2951 } 2952 2953 int CFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself) 2954 { 2955 2956 if (v == Py_None) { *p_itself = NULL; return 1; } 2957 /* Check for other CF objects here */ 2958 2959 if (!CFURLRefObj_Check(v)) 2960 { 2961 PyErr_SetString(PyExc_TypeError, "CFURLRef required"); 2962 return 0; 2963 } 2964 *p_itself = ((CFURLRefObject *)v)->ob_itself; 2965 return 1; 2966 } 2967 2968 static void CFURLRefObj_dealloc(CFURLRefObject *self) 2969 { 2970 if (self->ob_freeit && self->ob_itself) 2971 { 2972 self->ob_freeit((CFTypeRef)self->ob_itself); 2973 self->ob_itself = NULL; 2974 } 2975 CFTypeRef_Type.tp_dealloc((PyObject *)self); 2976 } 2977 2978 static PyObject *CFURLRefObj_CFURLCreateData(CFURLRefObject *_self, PyObject *_args) 2979 { 2980 PyObject *_res = NULL; 2981 CFDataRef _rv; 2982 CFStringEncoding encoding; 2983 Boolean escapeWhitespace; 2984 if (!PyArg_ParseTuple(_args, "ll", 2985 &encoding, 2986 &escapeWhitespace)) 2987 return NULL; 2988 _rv = CFURLCreateData((CFAllocatorRef)NULL, 2989 _self->ob_itself, 2990 encoding, 2991 escapeWhitespace); 2992 _res = Py_BuildValue("O&", 2993 CFDataRefObj_New, _rv); 2994 return _res; 2995 } 2996 2997 static PyObject *CFURLRefObj_CFURLGetFileSystemRepresentation(CFURLRefObject *_self, PyObject *_args) 2998 { 2999 PyObject *_res = NULL; 3000 Boolean _rv; 3001 Boolean resolveAgainstBase; 3002 UInt8 buffer; 3003 CFIndex maxBufLen; 3004 #ifndef CFURLGetFileSystemRepresentation 3005 PyMac_PRECHECK(CFURLGetFileSystemRepresentation); 3006 #endif 3007 if (!PyArg_ParseTuple(_args, "ll", 3008 &resolveAgainstBase, 3009 &maxBufLen)) 3010 return NULL; 3011 _rv = CFURLGetFileSystemRepresentation(_self->ob_itself, 3012 resolveAgainstBase, 3013 &buffer, 3014 maxBufLen); 3015 _res = Py_BuildValue("lb", 3016 _rv, 3017 buffer); 3018 return _res; 3019 } 3020 3021 static PyObject *CFURLRefObj_CFURLCopyAbsoluteURL(CFURLRefObject *_self, PyObject *_args) 3022 { 3023 PyObject *_res = NULL; 3024 CFURLRef _rv; 3025 #ifndef CFURLCopyAbsoluteURL 3026 PyMac_PRECHECK(CFURLCopyAbsoluteURL); 3027 #endif 3028 if (!PyArg_ParseTuple(_args, "")) 3029 return NULL; 3030 _rv = CFURLCopyAbsoluteURL(_self->ob_itself); 3031 _res = Py_BuildValue("O&", 3032 CFURLRefObj_New, _rv); 3033 return _res; 3034 } 3035 3036 static PyObject *CFURLRefObj_CFURLGetString(CFURLRefObject *_self, PyObject *_args) 3037 { 3038 PyObject *_res = NULL; 3039 CFStringRef _rv; 3040 #ifndef CFURLGetString 3041 PyMac_PRECHECK(CFURLGetString); 3042 #endif 3043 if (!PyArg_ParseTuple(_args, "")) 3044 return NULL; 3045 _rv = CFURLGetString(_self->ob_itself); 3046 _res = Py_BuildValue("O&", 3047 CFStringRefObj_New, _rv); 3048 return _res; 3049 } 3050 3051 static PyObject *CFURLRefObj_CFURLGetBaseURL(CFURLRefObject *_self, PyObject *_args) 3052 { 3053 PyObject *_res = NULL; 3054 CFURLRef _rv; 3055 #ifndef CFURLGetBaseURL 3056 PyMac_PRECHECK(CFURLGetBaseURL); 3057 #endif 3058 if (!PyArg_ParseTuple(_args, "")) 3059 return NULL; 3060 _rv = CFURLGetBaseURL(_self->ob_itself); 3061 _res = Py_BuildValue("O&", 3062 CFURLRefObj_New, _rv); 3063 return _res; 3064 } 3065 3066 static PyObject *CFURLRefObj_CFURLCanBeDecomposed(CFURLRefObject *_self, PyObject *_args) 3067 { 3068 PyObject *_res = NULL; 3069 Boolean _rv; 3070 #ifndef CFURLCanBeDecomposed 3071 PyMac_PRECHECK(CFURLCanBeDecomposed); 3072 #endif 3073 if (!PyArg_ParseTuple(_args, "")) 3074 return NULL; 3075 _rv = CFURLCanBeDecomposed(_self->ob_itself); 3076 _res = Py_BuildValue("l", 3077 _rv); 3078 return _res; 3079 } 3080 3081 static PyObject *CFURLRefObj_CFURLCopyScheme(CFURLRefObject *_self, PyObject *_args) 3082 { 3083 PyObject *_res = NULL; 3084 CFStringRef _rv; 3085 #ifndef CFURLCopyScheme 3086 PyMac_PRECHECK(CFURLCopyScheme); 3087 #endif 3088 if (!PyArg_ParseTuple(_args, "")) 3089 return NULL; 3090 _rv = CFURLCopyScheme(_self->ob_itself); 3091 _res = Py_BuildValue("O&", 3092 CFStringRefObj_New, _rv); 3093 return _res; 3094 } 3095 3096 static PyObject *CFURLRefObj_CFURLCopyNetLocation(CFURLRefObject *_self, PyObject *_args) 3097 { 3098 PyObject *_res = NULL; 3099 CFStringRef _rv; 3100 #ifndef CFURLCopyNetLocation 3101 PyMac_PRECHECK(CFURLCopyNetLocation); 3102 #endif 3103 if (!PyArg_ParseTuple(_args, "")) 3104 return NULL; 3105 _rv = CFURLCopyNetLocation(_self->ob_itself); 3106 _res = Py_BuildValue("O&", 3107 CFStringRefObj_New, _rv); 3108 return _res; 3109 } 3110 3111 static PyObject *CFURLRefObj_CFURLCopyPath(CFURLRefObject *_self, PyObject *_args) 3112 { 3113 PyObject *_res = NULL; 3114 CFStringRef _rv; 3115 #ifndef CFURLCopyPath 3116 PyMac_PRECHECK(CFURLCopyPath); 3117 #endif 3118 if (!PyArg_ParseTuple(_args, "")) 3119 return NULL; 3120 _rv = CFURLCopyPath(_self->ob_itself); 3121 _res = Py_BuildValue("O&", 3122 CFStringRefObj_New, _rv); 3123 return _res; 3124 } 3125 3126 static PyObject *CFURLRefObj_CFURLCopyStrictPath(CFURLRefObject *_self, PyObject *_args) 3127 { 3128 PyObject *_res = NULL; 3129 CFStringRef _rv; 3130 Boolean isAbsolute; 3131 #ifndef CFURLCopyStrictPath 3132 PyMac_PRECHECK(CFURLCopyStrictPath); 3133 #endif 3134 if (!PyArg_ParseTuple(_args, "")) 3135 return NULL; 3136 _rv = CFURLCopyStrictPath(_self->ob_itself, 3137 &isAbsolute); 3138 _res = Py_BuildValue("O&l", 3139 CFStringRefObj_New, _rv, 3140 isAbsolute); 3141 return _res; 3142 } 3143 3144 static PyObject *CFURLRefObj_CFURLCopyFileSystemPath(CFURLRefObject *_self, PyObject *_args) 3145 { 3146 PyObject *_res = NULL; 3147 CFStringRef _rv; 3148 CFURLPathStyle pathStyle; 3149 #ifndef CFURLCopyFileSystemPath 3150 PyMac_PRECHECK(CFURLCopyFileSystemPath); 3151 #endif 3152 if (!PyArg_ParseTuple(_args, "l", 3153 &pathStyle)) 3154 return NULL; 3155 _rv = CFURLCopyFileSystemPath(_self->ob_itself, 3156 pathStyle); 3157 _res = Py_BuildValue("O&", 3158 CFStringRefObj_New, _rv); 3159 return _res; 3160 } 3161 3162 static PyObject *CFURLRefObj_CFURLHasDirectoryPath(CFURLRefObject *_self, PyObject *_args) 3163 { 3164 PyObject *_res = NULL; 3165 Boolean _rv; 3166 #ifndef CFURLHasDirectoryPath 3167 PyMac_PRECHECK(CFURLHasDirectoryPath); 3168 #endif 3169 if (!PyArg_ParseTuple(_args, "")) 3170 return NULL; 3171 _rv = CFURLHasDirectoryPath(_self->ob_itself); 3172 _res = Py_BuildValue("l", 3173 _rv); 3174 return _res; 3175 } 3176 3177 static PyObject *CFURLRefObj_CFURLCopyResourceSpecifier(CFURLRefObject *_self, PyObject *_args) 3178 { 3179 PyObject *_res = NULL; 3180 CFStringRef _rv; 3181 #ifndef CFURLCopyResourceSpecifier 3182 PyMac_PRECHECK(CFURLCopyResourceSpecifier); 3183 #endif 3184 if (!PyArg_ParseTuple(_args, "")) 3185 return NULL; 3186 _rv = CFURLCopyResourceSpecifier(_self->ob_itself); 3187 _res = Py_BuildValue("O&", 3188 CFStringRefObj_New, _rv); 3189 return _res; 3190 } 3191 3192 static PyObject *CFURLRefObj_CFURLCopyHostName(CFURLRefObject *_self, PyObject *_args) 3193 { 3194 PyObject *_res = NULL; 3195 CFStringRef _rv; 3196 #ifndef CFURLCopyHostName 3197 PyMac_PRECHECK(CFURLCopyHostName); 3198 #endif 3199 if (!PyArg_ParseTuple(_args, "")) 3200 return NULL; 3201 _rv = CFURLCopyHostName(_self->ob_itself); 3202 _res = Py_BuildValue("O&", 3203 CFStringRefObj_New, _rv); 3204 return _res; 3205 } 3206 3207 static PyObject *CFURLRefObj_CFURLGetPortNumber(CFURLRefObject *_self, PyObject *_args) 3208 { 3209 PyObject *_res = NULL; 3210 SInt32 _rv; 3211 #ifndef CFURLGetPortNumber 3212 PyMac_PRECHECK(CFURLGetPortNumber); 3213 #endif 3214 if (!PyArg_ParseTuple(_args, "")) 3215 return NULL; 3216 _rv = CFURLGetPortNumber(_self->ob_itself); 3217 _res = Py_BuildValue("l", 3218 _rv); 3219 return _res; 3220 } 3221 3222 static PyObject *CFURLRefObj_CFURLCopyUserName(CFURLRefObject *_self, PyObject *_args) 3223 { 3224 PyObject *_res = NULL; 3225 CFStringRef _rv; 3226 #ifndef CFURLCopyUserName 3227 PyMac_PRECHECK(CFURLCopyUserName); 3228 #endif 3229 if (!PyArg_ParseTuple(_args, "")) 3230 return NULL; 3231 _rv = CFURLCopyUserName(_self->ob_itself); 3232 _res = Py_BuildValue("O&", 3233 CFStringRefObj_New, _rv); 3234 return _res; 3235 } 3236 3237 static PyObject *CFURLRefObj_CFURLCopyPassword(CFURLRefObject *_self, PyObject *_args) 3238 { 3239 PyObject *_res = NULL; 3240 CFStringRef _rv; 3241 #ifndef CFURLCopyPassword 3242 PyMac_PRECHECK(CFURLCopyPassword); 3243 #endif 3244 if (!PyArg_ParseTuple(_args, "")) 3245 return NULL; 3246 _rv = CFURLCopyPassword(_self->ob_itself); 3247 _res = Py_BuildValue("O&", 3248 CFStringRefObj_New, _rv); 3249 return _res; 3250 } 3251 3252 static PyObject *CFURLRefObj_CFURLCopyParameterString(CFURLRefObject *_self, PyObject *_args) 3253 { 3254 PyObject *_res = NULL; 3255 CFStringRef _rv; 3256 CFStringRef charactersToLeaveEscaped; 3257 #ifndef CFURLCopyParameterString 3258 PyMac_PRECHECK(CFURLCopyParameterString); 3259 #endif 3260 if (!PyArg_ParseTuple(_args, "O&", 3261 CFStringRefObj_Convert, &charactersToLeaveEscaped)) 3262 return NULL; 3263 _rv = CFURLCopyParameterString(_self->ob_itself, 3264 charactersToLeaveEscaped); 3265 _res = Py_BuildValue("O&", 3266 CFStringRefObj_New, _rv); 3267 return _res; 3268 } 3269 3270 static PyObject *CFURLRefObj_CFURLCopyQueryString(CFURLRefObject *_self, PyObject *_args) 3271 { 3272 PyObject *_res = NULL; 3273 CFStringRef _rv; 3274 CFStringRef charactersToLeaveEscaped; 3275 #ifndef CFURLCopyQueryString 3276 PyMac_PRECHECK(CFURLCopyQueryString); 3277 #endif 3278 if (!PyArg_ParseTuple(_args, "O&", 3279 CFStringRefObj_Convert, &charactersToLeaveEscaped)) 3280 return NULL; 3281 _rv = CFURLCopyQueryString(_self->ob_itself, 3282 charactersToLeaveEscaped); 3283 _res = Py_BuildValue("O&", 3284 CFStringRefObj_New, _rv); 3285 return _res; 3286 } 3287 3288 static PyObject *CFURLRefObj_CFURLCopyFragment(CFURLRefObject *_self, PyObject *_args) 3289 { 3290 PyObject *_res = NULL; 3291 CFStringRef _rv; 3292 CFStringRef charactersToLeaveEscaped; 3293 #ifndef CFURLCopyFragment 3294 PyMac_PRECHECK(CFURLCopyFragment); 3295 #endif 3296 if (!PyArg_ParseTuple(_args, "O&", 3297 CFStringRefObj_Convert, &charactersToLeaveEscaped)) 3298 return NULL; 3299 _rv = CFURLCopyFragment(_self->ob_itself, 3300 charactersToLeaveEscaped); 3301 _res = Py_BuildValue("O&", 3302 CFStringRefObj_New, _rv); 3303 return _res; 3304 } 3305 3306 static PyObject *CFURLRefObj_CFURLCopyLastPathComponent(CFURLRefObject *_self, PyObject *_args) 3307 { 3308 PyObject *_res = NULL; 3309 CFStringRef _rv; 3310 #ifndef CFURLCopyLastPathComponent 3311 PyMac_PRECHECK(CFURLCopyLastPathComponent); 3312 #endif 3313 if (!PyArg_ParseTuple(_args, "")) 3314 return NULL; 3315 _rv = CFURLCopyLastPathComponent(_self->ob_itself); 3316 _res = Py_BuildValue("O&", 3317 CFStringRefObj_New, _rv); 3318 return _res; 3319 } 3320 3321 static PyObject *CFURLRefObj_CFURLCopyPathExtension(CFURLRefObject *_self, PyObject *_args) 3322 { 3323 PyObject *_res = NULL; 3324 CFStringRef _rv; 3325 #ifndef CFURLCopyPathExtension 3326 PyMac_PRECHECK(CFURLCopyPathExtension); 3327 #endif 3328 if (!PyArg_ParseTuple(_args, "")) 3329 return NULL; 3330 _rv = CFURLCopyPathExtension(_self->ob_itself); 3331 _res = Py_BuildValue("O&", 3332 CFStringRefObj_New, _rv); 3333 return _res; 3334 } 3335 3336 static PyObject *CFURLRefObj_CFURLCreateCopyAppendingPathComponent(CFURLRefObject *_self, PyObject *_args) 3337 { 3338 PyObject *_res = NULL; 3339 CFURLRef _rv; 3340 CFStringRef pathComponent; 3341 Boolean isDirectory; 3342 if (!PyArg_ParseTuple(_args, "O&l", 3343 CFStringRefObj_Convert, &pathComponent, 3344 &isDirectory)) 3345 return NULL; 3346 _rv = CFURLCreateCopyAppendingPathComponent((CFAllocatorRef)NULL, 3347 _self->ob_itself, 3348 pathComponent, 3349 isDirectory); 3350 _res = Py_BuildValue("O&", 3351 CFURLRefObj_New, _rv); 3352 return _res; 3353 } 3354 3355 static PyObject *CFURLRefObj_CFURLCreateCopyDeletingLastPathComponent(CFURLRefObject *_self, PyObject *_args) 3356 { 3357 PyObject *_res = NULL; 3358 CFURLRef _rv; 3359 if (!PyArg_ParseTuple(_args, "")) 3360 return NULL; 3361 _rv = CFURLCreateCopyDeletingLastPathComponent((CFAllocatorRef)NULL, 3362 _self->ob_itself); 3363 _res = Py_BuildValue("O&", 3364 CFURLRefObj_New, _rv); 3365 return _res; 3366 } 3367 3368 static PyObject *CFURLRefObj_CFURLCreateCopyAppendingPathExtension(CFURLRefObject *_self, PyObject *_args) 3369 { 3370 PyObject *_res = NULL; 3371 CFURLRef _rv; 3372 CFStringRef extension; 3373 if (!PyArg_ParseTuple(_args, "O&", 3374 CFStringRefObj_Convert, &extension)) 3375 return NULL; 3376 _rv = CFURLCreateCopyAppendingPathExtension((CFAllocatorRef)NULL, 3377 _self->ob_itself, 3378 extension); 3379 _res = Py_BuildValue("O&", 3380 CFURLRefObj_New, _rv); 3381 return _res; 3382 } 3383 3384 static PyObject *CFURLRefObj_CFURLCreateCopyDeletingPathExtension(CFURLRefObject *_self, PyObject *_args) 3385 { 3386 PyObject *_res = NULL; 3387 CFURLRef _rv; 3388 if (!PyArg_ParseTuple(_args, "")) 3389 return NULL; 3390 _rv = CFURLCreateCopyDeletingPathExtension((CFAllocatorRef)NULL, 3391 _self->ob_itself); 3392 _res = Py_BuildValue("O&", 3393 CFURLRefObj_New, _rv); 3394 return _res; 3395 } 3396 3397 static PyObject *CFURLRefObj_CFURLGetFSRef(CFURLRefObject *_self, PyObject *_args) 3398 { 3399 PyObject *_res = NULL; 3400 Boolean _rv; 3401 FSRef fsRef; 3402 #ifndef CFURLGetFSRef 3403 PyMac_PRECHECK(CFURLGetFSRef); 3404 #endif 3405 if (!PyArg_ParseTuple(_args, "")) 3406 return NULL; 3407 _rv = CFURLGetFSRef(_self->ob_itself, 3408 &fsRef); 3409 _res = Py_BuildValue("lO&", 3410 _rv, 3411 PyMac_BuildFSRef, &fsRef); 3412 return _res; 3413 } 3414 3415 static PyMethodDef CFURLRefObj_methods[] = { 3416 {"CFURLCreateData", (PyCFunction)CFURLRefObj_CFURLCreateData, 1, 3417 PyDoc_STR("(CFStringEncoding encoding, Boolean escapeWhitespace) -> (CFDataRef _rv)")}, 3418 {"CFURLGetFileSystemRepresentation", (PyCFunction)CFURLRefObj_CFURLGetFileSystemRepresentation, 1, 3419 PyDoc_STR("(Boolean resolveAgainstBase, CFIndex maxBufLen) -> (Boolean _rv, UInt8 buffer)")}, 3420 {"CFURLCopyAbsoluteURL", (PyCFunction)CFURLRefObj_CFURLCopyAbsoluteURL, 1, 3421 PyDoc_STR("() -> (CFURLRef _rv)")}, 3422 {"CFURLGetString", (PyCFunction)CFURLRefObj_CFURLGetString, 1, 3423 PyDoc_STR("() -> (CFStringRef _rv)")}, 3424 {"CFURLGetBaseURL", (PyCFunction)CFURLRefObj_CFURLGetBaseURL, 1, 3425 PyDoc_STR("() -> (CFURLRef _rv)")}, 3426 {"CFURLCanBeDecomposed", (PyCFunction)CFURLRefObj_CFURLCanBeDecomposed, 1, 3427 PyDoc_STR("() -> (Boolean _rv)")}, 3428 {"CFURLCopyScheme", (PyCFunction)CFURLRefObj_CFURLCopyScheme, 1, 3429 PyDoc_STR("() -> (CFStringRef _rv)")}, 3430 {"CFURLCopyNetLocation", (PyCFunction)CFURLRefObj_CFURLCopyNetLocation, 1, 3431 PyDoc_STR("() -> (CFStringRef _rv)")}, 3432 {"CFURLCopyPath", (PyCFunction)CFURLRefObj_CFURLCopyPath, 1, 3433 PyDoc_STR("() -> (CFStringRef _rv)")}, 3434 {"CFURLCopyStrictPath", (PyCFunction)CFURLRefObj_CFURLCopyStrictPath, 1, 3435 PyDoc_STR("() -> (CFStringRef _rv, Boolean isAbsolute)")}, 3436 {"CFURLCopyFileSystemPath", (PyCFunction)CFURLRefObj_CFURLCopyFileSystemPath, 1, 3437 PyDoc_STR("(CFURLPathStyle pathStyle) -> (CFStringRef _rv)")}, 3438 {"CFURLHasDirectoryPath", (PyCFunction)CFURLRefObj_CFURLHasDirectoryPath, 1, 3439 PyDoc_STR("() -> (Boolean _rv)")}, 3440 {"CFURLCopyResourceSpecifier", (PyCFunction)CFURLRefObj_CFURLCopyResourceSpecifier, 1, 3441 PyDoc_STR("() -> (CFStringRef _rv)")}, 3442 {"CFURLCopyHostName", (PyCFunction)CFURLRefObj_CFURLCopyHostName, 1, 3443 PyDoc_STR("() -> (CFStringRef _rv)")}, 3444 {"CFURLGetPortNumber", (PyCFunction)CFURLRefObj_CFURLGetPortNumber, 1, 3445 PyDoc_STR("() -> (SInt32 _rv)")}, 3446 {"CFURLCopyUserName", (PyCFunction)CFURLRefObj_CFURLCopyUserName, 1, 3447 PyDoc_STR("() -> (CFStringRef _rv)")}, 3448 {"CFURLCopyPassword", (PyCFunction)CFURLRefObj_CFURLCopyPassword, 1, 3449 PyDoc_STR("() -> (CFStringRef _rv)")}, 3450 {"CFURLCopyParameterString", (PyCFunction)CFURLRefObj_CFURLCopyParameterString, 1, 3451 PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, 3452 {"CFURLCopyQueryString", (PyCFunction)CFURLRefObj_CFURLCopyQueryString, 1, 3453 PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, 3454 {"CFURLCopyFragment", (PyCFunction)CFURLRefObj_CFURLCopyFragment, 1, 3455 PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, 3456 {"CFURLCopyLastPathComponent", (PyCFunction)CFURLRefObj_CFURLCopyLastPathComponent, 1, 3457 PyDoc_STR("() -> (CFStringRef _rv)")}, 3458 {"CFURLCopyPathExtension", (PyCFunction)CFURLRefObj_CFURLCopyPathExtension, 1, 3459 PyDoc_STR("() -> (CFStringRef _rv)")}, 3460 {"CFURLCreateCopyAppendingPathComponent", (PyCFunction)CFURLRefObj_CFURLCreateCopyAppendingPathComponent, 1, 3461 PyDoc_STR("(CFStringRef pathComponent, Boolean isDirectory) -> (CFURLRef _rv)")}, 3462 {"CFURLCreateCopyDeletingLastPathComponent", (PyCFunction)CFURLRefObj_CFURLCreateCopyDeletingLastPathComponent, 1, 3463 PyDoc_STR("() -> (CFURLRef _rv)")}, 3464 {"CFURLCreateCopyAppendingPathExtension", (PyCFunction)CFURLRefObj_CFURLCreateCopyAppendingPathExtension, 1, 3465 PyDoc_STR("(CFStringRef extension) -> (CFURLRef _rv)")}, 3466 {"CFURLCreateCopyDeletingPathExtension", (PyCFunction)CFURLRefObj_CFURLCreateCopyDeletingPathExtension, 1, 3467 PyDoc_STR("() -> (CFURLRef _rv)")}, 3468 {"CFURLGetFSRef", (PyCFunction)CFURLRefObj_CFURLGetFSRef, 1, 3469 PyDoc_STR("() -> (Boolean _rv, FSRef fsRef)")}, 3470 {NULL, NULL, 0} 1192 3471 }; 1193 3472 1194 #define CF MutableDictionaryRefObj_getsetlist NULL1195 1196 1197 static int CF MutableDictionaryRefObj_compare(CFMutableDictionaryRefObject *self, CFMutableDictionaryRefObject *other)1198 { 1199 /* XXXX Or should we use CFEqual?? */1200 if ( self->ob_itself > other->ob_itself ) return 1;1201 if ( self->ob_itself < other->ob_itself ) return -1;1202 return 0;1203 } 1204 1205 static PyObject * CF MutableDictionaryRefObj_repr(CFMutableDictionaryRefObject *self)1206 { 1207 char buf[100];1208 sprintf(buf, "<CFMutableDictionaryRefobject at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);1209 return PyString_FromString(buf);1210 } 1211 1212 static int CF MutableDictionaryRefObj_hash(CFMutableDictionaryRefObject *self)1213 { 1214 /* XXXX Or should we use CFHash?? */1215 return (int)self->ob_itself;1216 } 1217 static int CF MutableDictionaryRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)1218 { 1219 CFMutableDictionaryRef itself;1220 char *kw[] = {"itself", 0};1221 1222 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableDictionaryRefObj_Convert, &itself))1223 {1224 ((CFMutableDictionaryRefObject *)_self)->ob_itself = itself;1225 return 0;1226 }1227 1228 /* Any CFTypeRef descendent is allowed as initializer too */1229 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))1230 {1231 ((CFMutableDictionaryRefObject *)_self)->ob_itself = itself;1232 return 0;1233 }1234 return -1;1235 } 1236 1237 #define CF MutableDictionaryRefObj_tp_alloc PyType_GenericAlloc1238 1239 static PyObject *CF MutableDictionaryRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)1240 { 1241 PyObject *self;1242 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;1243 ((CFMutableDictionaryRefObject *)self)->ob_itself = NULL;1244 ((CFMutableDictionaryRefObject *)self)->ob_freeit = CFRelease;1245 return self;1246 } 1247 1248 #define CF MutableDictionaryRefObj_tp_free PyObject_Del1249 1250 1251 PyTypeObject CF MutableDictionaryRef_Type = {1252 PyObject_HEAD_INIT(NULL)1253 0, /*ob_size*/1254 "_CF.CFMutableDictionaryRef", /*tp_name*/1255 sizeof(CFMutableDictionaryRefObject), /*tp_basicsize*/1256 0, /*tp_itemsize*/1257 /* methods */1258 (destructor) CFMutableDictionaryRefObj_dealloc, /*tp_dealloc*/1259 0, /*tp_print*/1260 (getattrfunc)0, /*tp_getattr*/1261 (setattrfunc)0, /*tp_setattr*/1262 (cmpfunc) CFMutableDictionaryRefObj_compare, /*tp_compare*/1263 (reprfunc) CFMutableDictionaryRefObj_repr, /*tp_repr*/1264 (PyNumberMethods *)0, /* tp_as_number */1265 (PySequenceMethods *)0, /* tp_as_sequence */1266 (PyMappingMethods *)0, /* tp_as_mapping */1267 (hashfunc) CFMutableDictionaryRefObj_hash, /*tp_hash*/1268 0, /*tp_call*/1269 0, /*tp_str*/1270 PyObject_GenericGetAttr, /*tp_getattro*/1271 PyObject_GenericSetAttr, /*tp_setattro */1272 0, /*tp_as_buffer*/1273 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */1274 0, /*tp_doc*/1275 0, /*tp_traverse*/1276 0, /*tp_clear*/1277 0, /*tp_richcompare*/1278 0, /*tp_weaklistoffset*/1279 0, /*tp_iter*/1280 0, /*tp_iternext*/1281 CFMutableDictionaryRefObj_methods, /* tp_methods */1282 0, /*tp_members*/1283 CFMutableDictionaryRefObj_getsetlist, /*tp_getset*/1284 0, /*tp_base*/1285 0, /*tp_dict*/1286 0, /*tp_descr_get*/1287 0, /*tp_descr_set*/1288 0, /*tp_dictoffset*/1289 CFMutableDictionaryRefObj_tp_init, /* tp_init */1290 CFMutableDictionaryRefObj_tp_alloc, /* tp_alloc */1291 CFMutableDictionaryRefObj_tp_new, /* tp_new */1292 CFMutableDictionaryRefObj_tp_free, /* tp_free */3473 #define CFURLRefObj_getsetlist NULL 3474 3475 3476 static int CFURLRefObj_compare(CFURLRefObject *self, CFURLRefObject *other) 3477 { 3478 /* XXXX Or should we use CFEqual?? */ 3479 if ( self->ob_itself > other->ob_itself ) return 1; 3480 if ( self->ob_itself < other->ob_itself ) return -1; 3481 return 0; 3482 } 3483 3484 static PyObject * CFURLRefObj_repr(CFURLRefObject *self) 3485 { 3486 char buf[100]; 3487 sprintf(buf, "<CFURL object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 3488 return PyString_FromString(buf); 3489 } 3490 3491 static int CFURLRefObj_hash(CFURLRefObject *self) 3492 { 3493 /* XXXX Or should we use CFHash?? */ 3494 return (int)self->ob_itself; 3495 } 3496 static int CFURLRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 3497 { 3498 CFURLRef itself; 3499 char *kw[] = {"itself", 0}; 3500 3501 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFURLRefObj_Convert, &itself)) 3502 { 3503 ((CFURLRefObject *)_self)->ob_itself = itself; 3504 return 0; 3505 } 3506 3507 /* Any CFTypeRef descendent is allowed as initializer too */ 3508 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 3509 { 3510 ((CFURLRefObject *)_self)->ob_itself = itself; 3511 return 0; 3512 } 3513 return -1; 3514 } 3515 3516 #define CFURLRefObj_tp_alloc PyType_GenericAlloc 3517 3518 static PyObject *CFURLRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 3519 { 3520 PyObject *self; 3521 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 3522 ((CFURLRefObject *)self)->ob_itself = NULL; 3523 ((CFURLRefObject *)self)->ob_freeit = CFRelease; 3524 return self; 3525 } 3526 3527 #define CFURLRefObj_tp_free PyObject_Del 3528 3529 3530 PyTypeObject CFURLRef_Type = { 3531 PyObject_HEAD_INIT(NULL) 3532 0, /*ob_size*/ 3533 "_CF.CFURLRef", /*tp_name*/ 3534 sizeof(CFURLRefObject), /*tp_basicsize*/ 3535 0, /*tp_itemsize*/ 3536 /* methods */ 3537 (destructor) CFURLRefObj_dealloc, /*tp_dealloc*/ 3538 0, /*tp_print*/ 3539 (getattrfunc)0, /*tp_getattr*/ 3540 (setattrfunc)0, /*tp_setattr*/ 3541 (cmpfunc) CFURLRefObj_compare, /*tp_compare*/ 3542 (reprfunc) CFURLRefObj_repr, /*tp_repr*/ 3543 (PyNumberMethods *)0, /* tp_as_number */ 3544 (PySequenceMethods *)0, /* tp_as_sequence */ 3545 (PyMappingMethods *)0, /* tp_as_mapping */ 3546 (hashfunc) CFURLRefObj_hash, /*tp_hash*/ 3547 0, /*tp_call*/ 3548 0, /*tp_str*/ 3549 PyObject_GenericGetAttr, /*tp_getattro*/ 3550 PyObject_GenericSetAttr, /*tp_setattro */ 3551 0, /*tp_as_buffer*/ 3552 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 3553 0, /*tp_doc*/ 3554 0, /*tp_traverse*/ 3555 0, /*tp_clear*/ 3556 0, /*tp_richcompare*/ 3557 0, /*tp_weaklistoffset*/ 3558 0, /*tp_iter*/ 3559 0, /*tp_iternext*/ 3560 CFURLRefObj_methods, /* tp_methods */ 3561 0, /*tp_members*/ 3562 CFURLRefObj_getsetlist, /*tp_getset*/ 3563 0, /*tp_base*/ 3564 0, /*tp_dict*/ 3565 0, /*tp_descr_get*/ 3566 0, /*tp_descr_set*/ 3567 0, /*tp_dictoffset*/ 3568 CFURLRefObj_tp_init, /* tp_init */ 3569 CFURLRefObj_tp_alloc, /* tp_alloc */ 3570 CFURLRefObj_tp_new, /* tp_new */ 3571 CFURLRefObj_tp_free, /* tp_free */ 1293 3572 }; 1294 3573 1295 /* ------------- End object type CFMutableDictionaryRef ------------- */1296 1297 1298 /* --------------------- Object type CFDataRef ---------------------- */1299 1300 PyTypeObject CFDataRef_Type;1301 1302 #define CFDataRefObj_Check(x) ((x)->ob_type == &CFDataRef_Type || PyObject_TypeCheck((x), &CFDataRef_Type))1303 1304 typedef struct CFDataRefObject {1305 PyObject_HEAD1306 CFDataRef ob_itself;1307 void (*ob_freeit)(CFTypeRef ptr);1308 } CFDataRefObject;1309 1310 PyObject *CFDataRefObj_New(CFDataRef itself)1311 {1312 CFDataRefObject *it;1313 if (itself == NULL)1314 {1315 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");1316 return NULL;1317 }1318 it = PyObject_NEW(CFDataRefObject, &CFDataRef_Type);1319 if (it == NULL) return NULL;1320 /* XXXX Should we tp_init or tp_new our basetype? */1321 it->ob_itself = itself;1322 it->ob_freeit = CFRelease;1323 return (PyObject *)it;1324 }1325 1326 int CFDataRefObj_Convert(PyObject *v, CFDataRef *p_itself)1327 {1328 1329 if (v == Py_None) { *p_itself = NULL; return 1; }1330 if (PyString_Check(v)) {1331 char *cStr;1332 Py_ssize_t cLen;1333 if( PyString_AsStringAndSize(v, &cStr, &cLen) < 0 ) return 0;1334 *p_itself = CFDataCreate((CFAllocatorRef)NULL, (unsigned char *)cStr, cLen);1335 return 1;1336 }1337 1338 if (!CFDataRefObj_Check(v))1339 {1340 PyErr_SetString(PyExc_TypeError, "CFDataRef required");1341 return 0;1342 }1343 *p_itself = ((CFDataRefObject *)v)->ob_itself;1344 return 1;1345 }1346 1347 static void CFDataRefObj_dealloc(CFDataRefObject *self)1348 {1349 if (self->ob_freeit && self->ob_itself)1350 {1351 self->ob_freeit((CFTypeRef)self->ob_itself);1352 self->ob_itself = NULL;1353 }1354 CFTypeRef_Type.tp_dealloc((PyObject *)self);1355 }1356 1357 static PyObject *CFDataRefObj_CFDataCreateCopy(CFDataRefObject *_self, PyObject *_args)1358 {1359 PyObject *_res = NULL;1360 CFDataRef _rv;1361 if (!PyArg_ParseTuple(_args, ""))1362 return NULL;1363 _rv = CFDataCreateCopy((CFAllocatorRef)NULL,1364 _self->ob_itself);1365 _res = Py_BuildValue("O&",1366 CFDataRefObj_New, _rv);1367 return _res;1368 }1369 1370 static PyObject *CFDataRefObj_CFDataGetLength(CFDataRefObject *_self, PyObject *_args)1371 {1372 PyObject *_res = NULL;1373 CFIndex _rv;1374 #ifndef CFDataGetLength1375 PyMac_PRECHECK(CFDataGetLength);1376 #endif1377 if (!PyArg_ParseTuple(_args, ""))1378 return NULL;1379 _rv = CFDataGetLength(_self->ob_itself);1380 _res = Py_BuildValue("l",1381 _rv);1382 return _res;1383 }1384 1385 static PyObject *CFDataRefObj_CFStringCreateFromExternalRepresentation(CFDataRefObject *_self, PyObject *_args)1386 {1387 PyObject *_res = NULL;1388 CFStringRef _rv;1389 CFStringEncoding encoding;1390 if (!PyArg_ParseTuple(_args, "l",1391 &encoding))1392 return NULL;1393 _rv = CFStringCreateFromExternalRepresentation((CFAllocatorRef)NULL,1394 _self->ob_itself,1395 encoding);1396 _res = Py_BuildValue("O&",1397 CFStringRefObj_New, _rv);1398 return _res;1399 }1400 1401 static PyObject *CFDataRefObj_CFDataGetData(CFDataRefObject *_self, PyObject *_args)1402 {1403 PyObject *_res = NULL;1404 1405 int size = CFDataGetLength(_self->ob_itself);1406 char *data = (char *)CFDataGetBytePtr(_self->ob_itself);1407 1408 _res = (PyObject *)PyString_FromStringAndSize(data, size);1409 return _res;1410 1411 }1412 1413 static PyMethodDef CFDataRefObj_methods[] = {1414 {"CFDataCreateCopy", (PyCFunction)CFDataRefObj_CFDataCreateCopy, 1,1415 PyDoc_STR("() -> (CFDataRef _rv)")},1416 {"CFDataGetLength", (PyCFunction)CFDataRefObj_CFDataGetLength, 1,1417 PyDoc_STR("() -> (CFIndex _rv)")},1418 {"CFStringCreateFromExternalRepresentation", (PyCFunction)CFDataRefObj_CFStringCreateFromExternalRepresentation, 1,1419 PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")},1420 {"CFDataGetData", (PyCFunction)CFDataRefObj_CFDataGetData, 1,1421 PyDoc_STR("() -> (string _rv)")},1422 {NULL, NULL, 0}1423 };1424 1425 #define CFDataRefObj_getsetlist NULL1426 1427 1428 static int CFDataRefObj_compare(CFDataRefObject *self, CFDataRefObject *other)1429 {1430 /* XXXX Or should we use CFEqual?? */1431 if ( self->ob_itself > other->ob_itself ) return 1;1432 if ( self->ob_itself < other->ob_itself ) return -1;1433 return 0;1434 }1435 1436 static PyObject * CFDataRefObj_repr(CFDataRefObject *self)1437 {1438 char buf[100];1439 sprintf(buf, "<CFDataRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);1440 return PyString_FromString(buf);1441 }1442 1443 static int CFDataRefObj_hash(CFDataRefObject *self)1444 {1445 /* XXXX Or should we use CFHash?? */1446 return (int)self->ob_itself;1447 }1448 static int CFDataRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)1449 {1450 CFDataRef itself;1451 char *kw[] = {"itself", 0};1452 1453 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFDataRefObj_Convert, &itself))1454 {1455 ((CFDataRefObject *)_self)->ob_itself = itself;1456 return 0;1457 }1458 1459 /* Any CFTypeRef descendent is allowed as initializer too */1460 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))1461 {1462 ((CFDataRefObject *)_self)->ob_itself = itself;1463 return 0;1464 }1465 return -1;1466 }1467 1468 #define CFDataRefObj_tp_alloc PyType_GenericAlloc1469 1470 static PyObject *CFDataRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)1471 {1472 PyObject *self;1473 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;1474 ((CFDataRefObject *)self)->ob_itself = NULL;1475 ((CFDataRefObject *)self)->ob_freeit = CFRelease;1476 return self;1477 }1478 1479 #define CFDataRefObj_tp_free PyObject_Del1480 1481 1482 PyTypeObject CFDataRef_Type = {1483 PyObject_HEAD_INIT(NULL)1484 0, /*ob_size*/1485 "_CF.CFDataRef", /*tp_name*/1486 sizeof(CFDataRefObject), /*tp_basicsize*/1487 0, /*tp_itemsize*/1488 /* methods */1489 (destructor) CFDataRefObj_dealloc, /*tp_dealloc*/1490 0, /*tp_print*/1491 (getattrfunc)0, /*tp_getattr*/1492 (setattrfunc)0, /*tp_setattr*/1493 (cmpfunc) CFDataRefObj_compare, /*tp_compare*/1494 (reprfunc) CFDataRefObj_repr, /*tp_repr*/1495 (PyNumberMethods *)0, /* tp_as_number */1496 (PySequenceMethods *)0, /* tp_as_sequence */1497 (PyMappingMethods *)0, /* tp_as_mapping */1498 (hashfunc) CFDataRefObj_hash, /*tp_hash*/1499 0, /*tp_call*/1500 0, /*tp_str*/1501 PyObject_GenericGetAttr, /*tp_getattro*/1502 PyObject_GenericSetAttr, /*tp_setattro */1503 0, /*tp_as_buffer*/1504 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */1505 0, /*tp_doc*/1506 0, /*tp_traverse*/1507 0, /*tp_clear*/1508 0, /*tp_richcompare*/1509 0, /*tp_weaklistoffset*/1510 0, /*tp_iter*/1511 0, /*tp_iternext*/1512 CFDataRefObj_methods, /* tp_methods */1513 0, /*tp_members*/1514 CFDataRefObj_getsetlist, /*tp_getset*/1515 0, /*tp_base*/1516 0, /*tp_dict*/1517 0, /*tp_descr_get*/1518 0, /*tp_descr_set*/1519 0, /*tp_dictoffset*/1520 CFDataRefObj_tp_init, /* tp_init */1521 CFDataRefObj_tp_alloc, /* tp_alloc */1522 CFDataRefObj_tp_new, /* tp_new */1523 CFDataRefObj_tp_free, /* tp_free */1524 };1525 1526 /* ------------------- End object type CFDataRef -------------------- */1527 1528 1529 /* ------------------ Object type CFMutableDataRef ------------------ */1530 1531 PyTypeObject CFMutableDataRef_Type;1532 1533 #define CFMutableDataRefObj_Check(x) ((x)->ob_type == &CFMutableDataRef_Type || PyObject_TypeCheck((x), &CFMutableDataRef_Type))1534 1535 typedef struct CFMutableDataRefObject {1536 PyObject_HEAD1537 CFMutableDataRef ob_itself;1538 void (*ob_freeit)(CFTypeRef ptr);1539 } CFMutableDataRefObject;1540 1541 PyObject *CFMutableDataRefObj_New(CFMutableDataRef itself)1542 {1543 CFMutableDataRefObject *it;1544 if (itself == NULL)1545 {1546 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");1547 return NULL;1548 }1549 it = PyObject_NEW(CFMutableDataRefObject, &CFMutableDataRef_Type);1550 if (it == NULL) return NULL;1551 /* XXXX Should we tp_init or tp_new our basetype? */1552 it->ob_itself = itself;1553 it->ob_freeit = CFRelease;1554 return (PyObject *)it;1555 }1556 1557 int CFMutableDataRefObj_Convert(PyObject *v, CFMutableDataRef *p_itself)1558 {1559 1560 if (v == Py_None) { *p_itself = NULL; return 1; }1561 /* Check for other CF objects here */1562 1563 if (!CFMutableDataRefObj_Check(v))1564 {1565 PyErr_SetString(PyExc_TypeError, "CFMutableDataRef required");1566 return 0;1567 }1568 *p_itself = ((CFMutableDataRefObject *)v)->ob_itself;1569 return 1;1570 }1571 1572 static void CFMutableDataRefObj_dealloc(CFMutableDataRefObject *self)1573 {1574 if (self->ob_freeit && self->ob_itself)1575 {1576 self->ob_freeit((CFTypeRef)self->ob_itself);1577 self->ob_itself = NULL;1578 }1579 CFDataRef_Type.tp_dealloc((PyObject *)self);1580 }1581 1582 static PyObject *CFMutableDataRefObj_CFDataSetLength(CFMutableDataRefObject *_self, PyObject *_args)1583 {1584 PyObject *_res = NULL;1585 CFIndex length;1586 #ifndef CFDataSetLength1587 PyMac_PRECHECK(CFDataSetLength);1588 #endif1589 if (!PyArg_ParseTuple(_args, "l",1590 &length))1591 return NULL;1592 CFDataSetLength(_self->ob_itself,1593 length);1594 Py_INCREF(Py_None);1595 _res = Py_None;1596 return _res;1597 }1598 1599 static PyObject *CFMutableDataRefObj_CFDataIncreaseLength(CFMutableDataRefObject *_self, PyObject *_args)1600 {1601 PyObject *_res = NULL;1602 CFIndex extraLength;1603 #ifndef CFDataIncreaseLength1604 PyMac_PRECHECK(CFDataIncreaseLength);1605 #endif1606 if (!PyArg_ParseTuple(_args, "l",1607 &extraLength))1608 return NULL;1609 CFDataIncreaseLength(_self->ob_itself,1610 extraLength);1611 Py_INCREF(Py_None);1612 _res = Py_None;1613 return _res;1614 }1615 1616 static PyObject *CFMutableDataRefObj_CFDataAppendBytes(CFMutableDataRefObject *_self, PyObject *_args)1617 {1618 PyObject *_res = NULL;1619 unsigned char *bytes__in__;1620 long bytes__len__;1621 int bytes__in_len__;1622 #ifndef CFDataAppendBytes1623 PyMac_PRECHECK(CFDataAppendBytes);1624 #endif1625 if (!PyArg_ParseTuple(_args, "s#",1626 &bytes__in__, &bytes__in_len__))1627 return NULL;1628 bytes__len__ = bytes__in_len__;1629 CFDataAppendBytes(_self->ob_itself,1630 bytes__in__, bytes__len__);1631 Py_INCREF(Py_None);1632 _res = Py_None;1633 return _res;1634 }1635 1636 static PyObject *CFMutableDataRefObj_CFDataReplaceBytes(CFMutableDataRefObject *_self, PyObject *_args)1637 {1638 PyObject *_res = NULL;1639 CFRange range;1640 unsigned char *newBytes__in__;1641 long newBytes__len__;1642 int newBytes__in_len__;1643 #ifndef CFDataReplaceBytes1644 PyMac_PRECHECK(CFDataReplaceBytes);1645 #endif1646 if (!PyArg_ParseTuple(_args, "O&s#",1647 CFRange_Convert, &range,1648 &newBytes__in__, &newBytes__in_len__))1649 return NULL;1650 newBytes__len__ = newBytes__in_len__;1651 CFDataReplaceBytes(_self->ob_itself,1652 range,1653 newBytes__in__, newBytes__len__);1654 Py_INCREF(Py_None);1655 _res = Py_None;1656 return _res;1657 }1658 1659 static PyObject *CFMutableDataRefObj_CFDataDeleteBytes(CFMutableDataRefObject *_self, PyObject *_args)1660 {1661 PyObject *_res = NULL;1662 CFRange range;1663 #ifndef CFDataDeleteBytes1664 PyMac_PRECHECK(CFDataDeleteBytes);1665 #endif1666 if (!PyArg_ParseTuple(_args, "O&",1667 CFRange_Convert, &range))1668 return NULL;1669 CFDataDeleteBytes(_self->ob_itself,1670 range);1671 Py_INCREF(Py_None);1672 _res = Py_None;1673 return _res;1674 }1675 1676 static PyMethodDef CFMutableDataRefObj_methods[] = {1677 {"CFDataSetLength", (PyCFunction)CFMutableDataRefObj_CFDataSetLength, 1,1678 PyDoc_STR("(CFIndex length) -> None")},1679 {"CFDataIncreaseLength", (PyCFunction)CFMutableDataRefObj_CFDataIncreaseLength, 1,1680 PyDoc_STR("(CFIndex extraLength) -> None")},1681 {"CFDataAppendBytes", (PyCFunction)CFMutableDataRefObj_CFDataAppendBytes, 1,1682 PyDoc_STR("(Buffer bytes) -> None")},1683 {"CFDataReplaceBytes", (PyCFunction)CFMutableDataRefObj_CFDataReplaceBytes, 1,1684 PyDoc_STR("(CFRange range, Buffer newBytes) -> None")},1685 {"CFDataDeleteBytes", (PyCFunction)CFMutableDataRefObj_CFDataDeleteBytes, 1,1686 PyDoc_STR("(CFRange range) -> None")},1687 {NULL, NULL, 0}1688 };1689 1690 #define CFMutableDataRefObj_getsetlist NULL1691 1692 1693 static int CFMutableDataRefObj_compare(CFMutableDataRefObject *self, CFMutableDataRefObject *other)1694 {1695 /* XXXX Or should we use CFEqual?? */1696 if ( self->ob_itself > other->ob_itself ) return 1;1697 if ( self->ob_itself < other->ob_itself ) return -1;1698 return 0;1699 }1700 1701 static PyObject * CFMutableDataRefObj_repr(CFMutableDataRefObject *self)1702 {1703 char buf[100];1704 sprintf(buf, "<CFMutableDataRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);1705 return PyString_FromString(buf);1706 }1707 1708 static int CFMutableDataRefObj_hash(CFMutableDataRefObject *self)1709 {1710 /* XXXX Or should we use CFHash?? */1711 return (int)self->ob_itself;1712 }1713 static int CFMutableDataRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)1714 {1715 CFMutableDataRef itself;1716 char *kw[] = {"itself", 0};1717 1718 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableDataRefObj_Convert, &itself))1719 {1720 ((CFMutableDataRefObject *)_self)->ob_itself = itself;1721 return 0;1722 }1723 1724 /* Any CFTypeRef descendent is allowed as initializer too */1725 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))1726 {1727 ((CFMutableDataRefObject *)_self)->ob_itself = itself;1728 return 0;1729 }1730 return -1;1731 }1732 1733 #define CFMutableDataRefObj_tp_alloc PyType_GenericAlloc1734 1735 static PyObject *CFMutableDataRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)1736 {1737 PyObject *self;1738 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;1739 ((CFMutableDataRefObject *)self)->ob_itself = NULL;1740 ((CFMutableDataRefObject *)self)->ob_freeit = CFRelease;1741 return self;1742 }1743 1744 #define CFMutableDataRefObj_tp_free PyObject_Del1745 1746 1747 PyTypeObject CFMutableDataRef_Type = {1748 PyObject_HEAD_INIT(NULL)1749 0, /*ob_size*/1750 "_CF.CFMutableDataRef", /*tp_name*/1751 sizeof(CFMutableDataRefObject), /*tp_basicsize*/1752 0, /*tp_itemsize*/1753 /* methods */1754 (destructor) CFMutableDataRefObj_dealloc, /*tp_dealloc*/1755 0, /*tp_print*/1756 (getattrfunc)0, /*tp_getattr*/1757 (setattrfunc)0, /*tp_setattr*/1758 (cmpfunc) CFMutableDataRefObj_compare, /*tp_compare*/1759 (reprfunc) CFMutableDataRefObj_repr, /*tp_repr*/1760 (PyNumberMethods *)0, /* tp_as_number */1761 (PySequenceMethods *)0, /* tp_as_sequence */1762 (PyMappingMethods *)0, /* tp_as_mapping */1763 (hashfunc) CFMutableDataRefObj_hash, /*tp_hash*/1764 0, /*tp_call*/1765 0, /*tp_str*/1766 PyObject_GenericGetAttr, /*tp_getattro*/1767 PyObject_GenericSetAttr, /*tp_setattro */1768 0, /*tp_as_buffer*/1769 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */1770 0, /*tp_doc*/1771 0, /*tp_traverse*/1772 0, /*tp_clear*/1773 0, /*tp_richcompare*/1774 0, /*tp_weaklistoffset*/1775 0, /*tp_iter*/1776 0, /*tp_iternext*/1777 CFMutableDataRefObj_methods, /* tp_methods */1778 0, /*tp_members*/1779 CFMutableDataRefObj_getsetlist, /*tp_getset*/1780 0, /*tp_base*/1781 0, /*tp_dict*/1782 0, /*tp_descr_get*/1783 0, /*tp_descr_set*/1784 0, /*tp_dictoffset*/1785 CFMutableDataRefObj_tp_init, /* tp_init */1786 CFMutableDataRefObj_tp_alloc, /* tp_alloc */1787 CFMutableDataRefObj_tp_new, /* tp_new */1788 CFMutableDataRefObj_tp_free, /* tp_free */1789 };1790 1791 /* ---------------- End object type CFMutableDataRef ---------------- */1792 1793 1794 /* -------------------- Object type CFStringRef --------------------- */1795 1796 PyTypeObject CFStringRef_Type;1797 1798 #define CFStringRefObj_Check(x) ((x)->ob_type == &CFStringRef_Type || PyObject_TypeCheck((x), &CFStringRef_Type))1799 1800 typedef struct CFStringRefObject {1801 PyObject_HEAD1802 CFStringRef ob_itself;1803 void (*ob_freeit)(CFTypeRef ptr);1804 } CFStringRefObject;1805 1806 PyObject *CFStringRefObj_New(CFStringRef itself)1807 {1808 CFStringRefObject *it;1809 if (itself == NULL)1810 {1811 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");1812 return NULL;1813 }1814 it = PyObject_NEW(CFStringRefObject, &CFStringRef_Type);1815 if (it == NULL) return NULL;1816 /* XXXX Should we tp_init or tp_new our basetype? */1817 it->ob_itself = itself;1818 it->ob_freeit = CFRelease;1819 return (PyObject *)it;1820 }1821 1822 int CFStringRefObj_Convert(PyObject *v, CFStringRef *p_itself)1823 {1824 1825 if (v == Py_None) { *p_itself = NULL; return 1; }1826 if (PyString_Check(v)) {1827 char *cStr;1828 if (!PyArg_Parse(v, "es", "ascii", &cStr))1829 return 0;1830 *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII);1831 PyMem_Free(cStr);1832 return 1;1833 }1834 if (PyUnicode_Check(v)) {1835 /* We use the CF types here, if Python was configured differently that will give an error */1836 CFIndex size = PyUnicode_GetSize(v);1837 UniChar *unichars = PyUnicode_AsUnicode(v);1838 if (!unichars) return 0;1839 *p_itself = CFStringCreateWithCharacters((CFAllocatorRef)NULL, unichars, size);1840 return 1;1841 }1842 1843 1844 if (!CFStringRefObj_Check(v))1845 {1846 PyErr_SetString(PyExc_TypeError, "CFStringRef required");1847 return 0;1848 }1849 *p_itself = ((CFStringRefObject *)v)->ob_itself;1850 return 1;1851 }1852 1853 static void CFStringRefObj_dealloc(CFStringRefObject *self)1854 {1855 if (self->ob_freeit && self->ob_itself)1856 {1857 self->ob_freeit((CFTypeRef)self->ob_itself);1858 self->ob_itself = NULL;1859 }1860 CFTypeRef_Type.tp_dealloc((PyObject *)self);1861 }1862 1863 static PyObject *CFStringRefObj_CFStringCreateWithSubstring(CFStringRefObject *_self, PyObject *_args)1864 {1865 PyObject *_res = NULL;1866 CFStringRef _rv;1867 CFRange range;1868 if (!PyArg_ParseTuple(_args, "O&",1869 CFRange_Convert, &range))1870 return NULL;1871 _rv = CFStringCreateWithSubstring((CFAllocatorRef)NULL,1872 _self->ob_itself,1873 range);1874 _res = Py_BuildValue("O&",1875 CFStringRefObj_New, _rv);1876 return _res;1877 }1878 1879 static PyObject *CFStringRefObj_CFStringCreateCopy(CFStringRefObject *_self, PyObject *_args)1880 {1881 PyObject *_res = NULL;1882 CFStringRef _rv;1883 if (!PyArg_ParseTuple(_args, ""))1884 return NULL;1885 _rv = CFStringCreateCopy((CFAllocatorRef)NULL,1886 _self->ob_itself);1887 _res = Py_BuildValue("O&",1888 CFStringRefObj_New, _rv);1889 return _res;1890 }1891 1892 static PyObject *CFStringRefObj_CFStringGetLength(CFStringRefObject *_self, PyObject *_args)1893 {1894 PyObject *_res = NULL;1895 CFIndex _rv;1896 #ifndef CFStringGetLength1897 PyMac_PRECHECK(CFStringGetLength);1898 #endif1899 if (!PyArg_ParseTuple(_args, ""))1900 return NULL;1901 _rv = CFStringGetLength(_self->ob_itself);1902 _res = Py_BuildValue("l",1903 _rv);1904 return _res;1905 }1906 1907 static PyObject *CFStringRefObj_CFStringGetBytes(CFStringRefObject *_self, PyObject *_args)1908 {1909 PyObject *_res = NULL;1910 CFIndex _rv;1911 CFRange range;1912 CFStringEncoding encoding;1913 UInt8 lossByte;1914 Boolean isExternalRepresentation;1915 UInt8 buffer;1916 CFIndex maxBufLen;1917 CFIndex usedBufLen;1918 #ifndef CFStringGetBytes1919 PyMac_PRECHECK(CFStringGetBytes);1920 #endif1921 if (!PyArg_ParseTuple(_args, "O&lbll",1922 CFRange_Convert, &range,1923 &encoding,1924 &lossByte,1925 &isExternalRepresentation,1926 &maxBufLen))1927 return NULL;1928 _rv = CFStringGetBytes(_self->ob_itself,1929 range,1930 encoding,1931 lossByte,1932 isExternalRepresentation,1933 &buffer,1934 maxBufLen,1935 &usedBufLen);1936 _res = Py_BuildValue("lbl",1937 _rv,1938 buffer,1939 usedBufLen);1940 return _res;1941 }1942 1943 static PyObject *CFStringRefObj_CFStringCreateExternalRepresentation(CFStringRefObject *_self, PyObject *_args)1944 {1945 PyObject *_res = NULL;1946 CFDataRef _rv;1947 CFStringEncoding encoding;1948 UInt8 lossByte;1949 if (!PyArg_ParseTuple(_args, "lb",1950 &encoding,1951 &lossByte))1952 return NULL;1953 _rv = CFStringCreateExternalRepresentation((CFAllocatorRef)NULL,1954 _self->ob_itself,1955 encoding,1956 lossByte);1957 _res = Py_BuildValue("O&",1958 CFDataRefObj_New, _rv);1959 return _res;1960 }1961 1962 static PyObject *CFStringRefObj_CFStringGetSmallestEncoding(CFStringRefObject *_self, PyObject *_args)1963 {1964 PyObject *_res = NULL;1965 CFStringEncoding _rv;1966 #ifndef CFStringGetSmallestEncoding1967 PyMac_PRECHECK(CFStringGetSmallestEncoding);1968 #endif1969 if (!PyArg_ParseTuple(_args, ""))1970 return NULL;1971 _rv = CFStringGetSmallestEncoding(_self->ob_itself);1972 _res = Py_BuildValue("l",1973 _rv);1974 return _res;1975 }1976 1977 static PyObject *CFStringRefObj_CFStringGetFastestEncoding(CFStringRefObject *_self, PyObject *_args)1978 {1979 PyObject *_res = NULL;1980 CFStringEncoding _rv;1981 #ifndef CFStringGetFastestEncoding1982 PyMac_PRECHECK(CFStringGetFastestEncoding);1983 #endif1984 if (!PyArg_ParseTuple(_args, ""))1985 return NULL;1986 _rv = CFStringGetFastestEncoding(_self->ob_itself);1987 _res = Py_BuildValue("l",1988 _rv);1989 return _res;1990 }1991 1992 static PyObject *CFStringRefObj_CFStringCompareWithOptions(CFStringRefObject *_self, PyObject *_args)1993 {1994 PyObject *_res = NULL;1995 CFComparisonResult _rv;1996 CFStringRef theString2;1997 CFRange rangeToCompare;1998 CFOptionFlags compareOptions;1999 #ifndef CFStringCompareWithOptions2000 PyMac_PRECHECK(CFStringCompareWithOptions);2001 #endif2002 if (!PyArg_ParseTuple(_args, "O&O&l",2003 CFStringRefObj_Convert, &theString2,2004 CFRange_Convert, &rangeToCompare,2005 &compareOptions))2006 return NULL;2007 _rv = CFStringCompareWithOptions(_self->ob_itself,2008 theString2,2009 rangeToCompare,2010 compareOptions);2011 _res = Py_BuildValue("l",2012 _rv);2013 return _res;2014 }2015 2016 static PyObject *CFStringRefObj_CFStringCompare(CFStringRefObject *_self, PyObject *_args)2017 {2018 PyObject *_res = NULL;2019 CFComparisonResult _rv;2020 CFStringRef theString2;2021 CFOptionFlags compareOptions;2022 #ifndef CFStringCompare2023 PyMac_PRECHECK(CFStringCompare);2024 #endif2025 if (!PyArg_ParseTuple(_args, "O&l",2026 CFStringRefObj_Convert, &theString2,2027 &compareOptions))2028 return NULL;2029 _rv = CFStringCompare(_self->ob_itself,2030 theString2,2031 compareOptions);2032 _res = Py_BuildValue("l",2033 _rv);2034 return _res;2035 }2036 2037 static PyObject *CFStringRefObj_CFStringFindWithOptions(CFStringRefObject *_self, PyObject *_args)2038 {2039 PyObject *_res = NULL;2040 Boolean _rv;2041 CFStringRef stringToFind;2042 CFRange rangeToSearch;2043 CFOptionFlags searchOptions;2044 CFRange result;2045 #ifndef CFStringFindWithOptions2046 PyMac_PRECHECK(CFStringFindWithOptions);2047 #endif2048 if (!PyArg_ParseTuple(_args, "O&O&l",2049 CFStringRefObj_Convert, &stringToFind,2050 CFRange_Convert, &rangeToSearch,2051 &searchOptions))2052 return NULL;2053 _rv = CFStringFindWithOptions(_self->ob_itself,2054 stringToFind,2055 rangeToSearch,2056 searchOptions,2057 &result);2058 _res = Py_BuildValue("lO&",2059 _rv,2060 CFRange_New, result);2061 return _res;2062 }2063 2064 static PyObject *CFStringRefObj_CFStringCreateArrayWithFindResults(CFStringRefObject *_self, PyObject *_args)2065 {2066 PyObject *_res = NULL;2067 CFArrayRef _rv;2068 CFStringRef stringToFind;2069 CFRange rangeToSearch;2070 CFOptionFlags compareOptions;2071 if (!PyArg_ParseTuple(_args, "O&O&l",2072 CFStringRefObj_Convert, &stringToFind,2073 CFRange_Convert, &rangeToSearch,2074 &compareOptions))2075 return NULL;2076 _rv = CFStringCreateArrayWithFindResults((CFAllocatorRef)NULL,2077 _self->ob_itself,2078 stringToFind,2079 rangeToSearch,2080 compareOptions);2081 _res = Py_BuildValue("O&",2082 CFArrayRefObj_New, _rv);2083 return _res;2084 }2085 2086 static PyObject *CFStringRefObj_CFStringFind(CFStringRefObject *_self, PyObject *_args)2087 {2088 PyObject *_res = NULL;2089 CFRange _rv;2090 CFStringRef stringToFind;2091 CFOptionFlags compareOptions;2092 #ifndef CFStringFind2093 PyMac_PRECHECK(CFStringFind);2094 #endif2095 if (!PyArg_ParseTuple(_args, "O&l",2096 CFStringRefObj_Convert, &stringToFind,2097 &compareOptions))2098 return NULL;2099 _rv = CFStringFind(_self->ob_itself,2100 stringToFind,2101 compareOptions);2102 _res = Py_BuildValue("O&",2103 CFRange_New, _rv);2104 return _res;2105 }2106 2107 static PyObject *CFStringRefObj_CFStringHasPrefix(CFStringRefObject *_self, PyObject *_args)2108 {2109 PyObject *_res = NULL;2110 Boolean _rv;2111 CFStringRef prefix;2112 #ifndef CFStringHasPrefix2113 PyMac_PRECHECK(CFStringHasPrefix);2114 #endif2115 if (!PyArg_ParseTuple(_args, "O&",2116 CFStringRefObj_Convert, &prefix))2117 return NULL;2118 _rv = CFStringHasPrefix(_self->ob_itself,2119 prefix);2120 _res = Py_BuildValue("l",2121 _rv);2122 return _res;2123 }2124 2125 static PyObject *CFStringRefObj_CFStringHasSuffix(CFStringRefObject *_self, PyObject *_args)2126 {2127 PyObject *_res = NULL;2128 Boolean _rv;2129 CFStringRef suffix;2130 #ifndef CFStringHasSuffix2131 PyMac_PRECHECK(CFStringHasSuffix);2132 #endif2133 if (!PyArg_ParseTuple(_args, "O&",2134 CFStringRefObj_Convert, &suffix))2135 return NULL;2136 _rv = CFStringHasSuffix(_self->ob_itself,2137 suffix);2138 _res = Py_BuildValue("l",2139 _rv);2140 return _res;2141 }2142 2143 static PyObject *CFStringRefObj_CFStringGetLineBounds(CFStringRefObject *_self, PyObject *_args)2144 {2145 PyObject *_res = NULL;2146 CFRange range;2147 CFIndex lineBeginIndex;2148 CFIndex lineEndIndex;2149 CFIndex contentsEndIndex;2150 #ifndef CFStringGetLineBounds2151 PyMac_PRECHECK(CFStringGetLineBounds);2152 #endif2153 if (!PyArg_ParseTuple(_args, "O&",2154 CFRange_Convert, &range))2155 return NULL;2156 CFStringGetLineBounds(_self->ob_itself,2157 range,2158 &lineBeginIndex,2159 &lineEndIndex,2160 &contentsEndIndex);2161 _res = Py_BuildValue("lll",2162 lineBeginIndex,2163 lineEndIndex,2164 contentsEndIndex);2165 return _res;2166 }2167 2168 static PyObject *CFStringRefObj_CFStringCreateArrayBySeparatingStrings(CFStringRefObject *_self, PyObject *_args)2169 {2170 PyObject *_res = NULL;2171 CFArrayRef _rv;2172 CFStringRef separatorString;2173 if (!PyArg_ParseTuple(_args, "O&",2174 CFStringRefObj_Convert, &separatorString))2175 return NULL;2176 _rv = CFStringCreateArrayBySeparatingStrings((CFAllocatorRef)NULL,2177 _self->ob_itself,2178 separatorString);2179 _res = Py_BuildValue("O&",2180 CFArrayRefObj_New, _rv);2181 return _res;2182 }2183 2184 static PyObject *CFStringRefObj_CFStringGetIntValue(CFStringRefObject *_self, PyObject *_args)2185 {2186 PyObject *_res = NULL;2187 SInt32 _rv;2188 #ifndef CFStringGetIntValue2189 PyMac_PRECHECK(CFStringGetIntValue);2190 #endif2191 if (!PyArg_ParseTuple(_args, ""))2192 return NULL;2193 _rv = CFStringGetIntValue(_self->ob_itself);2194 _res = Py_BuildValue("l",2195 _rv);2196 return _res;2197 }2198 2199 static PyObject *CFStringRefObj_CFStringGetDoubleValue(CFStringRefObject *_self, PyObject *_args)2200 {2201 PyObject *_res = NULL;2202 double _rv;2203 #ifndef CFStringGetDoubleValue2204 PyMac_PRECHECK(CFStringGetDoubleValue);2205 #endif2206 if (!PyArg_ParseTuple(_args, ""))2207 return NULL;2208 _rv = CFStringGetDoubleValue(_self->ob_itself);2209 _res = Py_BuildValue("d",2210 _rv);2211 return _res;2212 }2213 2214 static PyObject *CFStringRefObj_CFStringConvertIANACharSetNameToEncoding(CFStringRefObject *_self, PyObject *_args)2215 {2216 PyObject *_res = NULL;2217 CFStringEncoding _rv;2218 #ifndef CFStringConvertIANACharSetNameToEncoding2219 PyMac_PRECHECK(CFStringConvertIANACharSetNameToEncoding);2220 #endif2221 if (!PyArg_ParseTuple(_args, ""))2222 return NULL;2223 _rv = CFStringConvertIANACharSetNameToEncoding(_self->ob_itself);2224 _res = Py_BuildValue("l",2225 _rv);2226 return _res;2227 }2228 2229 static PyObject *CFStringRefObj_CFShowStr(CFStringRefObject *_self, PyObject *_args)2230 {2231 PyObject *_res = NULL;2232 #ifndef CFShowStr2233 PyMac_PRECHECK(CFShowStr);2234 #endif2235 if (!PyArg_ParseTuple(_args, ""))2236 return NULL;2237 CFShowStr(_self->ob_itself);2238 Py_INCREF(Py_None);2239 _res = Py_None;2240 return _res;2241 }2242 2243 static PyObject *CFStringRefObj_CFURLCreateWithString(CFStringRefObject *_self, PyObject *_args)2244 {2245 PyObject *_res = NULL;2246 CFURLRef _rv;2247 CFURLRef baseURL;2248 if (!PyArg_ParseTuple(_args, "O&",2249 OptionalCFURLRefObj_Convert, &baseURL))2250 return NULL;2251 _rv = CFURLCreateWithString((CFAllocatorRef)NULL,2252 _self->ob_itself,2253 baseURL);2254 _res = Py_BuildValue("O&",2255 CFURLRefObj_New, _rv);2256 return _res;2257 }2258 2259 static PyObject *CFStringRefObj_CFURLCreateWithFileSystemPath(CFStringRefObject *_self, PyObject *_args)2260 {2261 PyObject *_res = NULL;2262 CFURLRef _rv;2263 CFURLPathStyle pathStyle;2264 Boolean isDirectory;2265 if (!PyArg_ParseTuple(_args, "ll",2266 &pathStyle,2267 &isDirectory))2268 return NULL;2269 _rv = CFURLCreateWithFileSystemPath((CFAllocatorRef)NULL,2270 _self->ob_itself,2271 pathStyle,2272 isDirectory);2273 _res = Py_BuildValue("O&",2274 CFURLRefObj_New, _rv);2275 return _res;2276 }2277 2278 static PyObject *CFStringRefObj_CFURLCreateWithFileSystemPathRelativeToBase(CFStringRefObject *_self, PyObject *_args)2279 {2280 PyObject *_res = NULL;2281 CFURLRef _rv;2282 CFURLPathStyle pathStyle;2283 Boolean isDirectory;2284 CFURLRef baseURL;2285 if (!PyArg_ParseTuple(_args, "llO&",2286 &pathStyle,2287 &isDirectory,2288 OptionalCFURLRefObj_Convert, &baseURL))2289 return NULL;2290 _rv = CFURLCreateWithFileSystemPathRelativeToBase((CFAllocatorRef)NULL,2291 _self->ob_itself,2292 pathStyle,2293 isDirectory,2294 baseURL);2295 _res = Py_BuildValue("O&",2296 CFURLRefObj_New, _rv);2297 return _res;2298 }2299 2300 static PyObject *CFStringRefObj_CFURLCreateStringByReplacingPercentEscapes(CFStringRefObject *_self, PyObject *_args)2301 {2302 PyObject *_res = NULL;2303 CFStringRef _rv;2304 CFStringRef charactersToLeaveEscaped;2305 if (!PyArg_ParseTuple(_args, "O&",2306 CFStringRefObj_Convert, &charactersToLeaveEscaped))2307 return NULL;2308 _rv = CFURLCreateStringByReplacingPercentEscapes((CFAllocatorRef)NULL,2309 _self->ob_itself,2310 charactersToLeaveEscaped);2311 _res = Py_BuildValue("O&",2312 CFStringRefObj_New, _rv);2313 return _res;2314 }2315 2316 static PyObject *CFStringRefObj_CFURLCreateStringByAddingPercentEscapes(CFStringRefObject *_self, PyObject *_args)2317 {2318 PyObject *_res = NULL;2319 CFStringRef _rv;2320 CFStringRef charactersToLeaveUnescaped;2321 CFStringRef legalURLCharactersToBeEscaped;2322 CFStringEncoding encoding;2323 if (!PyArg_ParseTuple(_args, "O&O&l",2324 CFStringRefObj_Convert, &charactersToLeaveUnescaped,2325 CFStringRefObj_Convert, &legalURLCharactersToBeEscaped,2326 &encoding))2327 return NULL;2328 _rv = CFURLCreateStringByAddingPercentEscapes((CFAllocatorRef)NULL,2329 _self->ob_itself,2330 charactersToLeaveUnescaped,2331 legalURLCharactersToBeEscaped,2332 encoding);2333 _res = Py_BuildValue("O&",2334 CFStringRefObj_New, _rv);2335 return _res;2336 }2337 2338 static PyObject *CFStringRefObj_CFStringGetString(CFStringRefObject *_self, PyObject *_args)2339 {2340 PyObject *_res = NULL;2341 2342 int size = CFStringGetLength(_self->ob_itself)+1;2343 char *data = malloc(size);2344 2345 if( data == NULL ) return PyErr_NoMemory();2346 if ( CFStringGetCString(_self->ob_itself, data, size, 0) ) {2347 _res = (PyObject *)PyString_FromString(data);2348 } else {2349 PyErr_SetString(PyExc_RuntimeError, "CFStringGetCString could not fit the string");2350 _res = NULL;2351 }2352 free(data);2353 return _res;2354 2355 }2356 2357 static PyObject *CFStringRefObj_CFStringGetUnicode(CFStringRefObject *_self, PyObject *_args)2358 {2359 PyObject *_res = NULL;2360 2361 int size = CFStringGetLength(_self->ob_itself)+1;2362 Py_UNICODE *data = malloc(size*sizeof(Py_UNICODE));2363 CFRange range;2364 2365 range.location = 0;2366 range.length = size;2367 if( data == NULL ) return PyErr_NoMemory();2368 CFStringGetCharacters(_self->ob_itself, range, data);2369 _res = (PyObject *)PyUnicode_FromUnicode(data, size-1);2370 free(data);2371 return _res;2372 2373 }2374 2375 static PyMethodDef CFStringRefObj_methods[] = {2376 {"CFStringCreateWithSubstring", (PyCFunction)CFStringRefObj_CFStringCreateWithSubstring, 1,2377 PyDoc_STR("(CFRange range) -> (CFStringRef _rv)")},2378 {"CFStringCreateCopy", (PyCFunction)CFStringRefObj_CFStringCreateCopy, 1,2379 PyDoc_STR("() -> (CFStringRef _rv)")},2380 {"CFStringGetLength", (PyCFunction)CFStringRefObj_CFStringGetLength, 1,2381 PyDoc_STR("() -> (CFIndex _rv)")},2382 {"CFStringGetBytes", (PyCFunction)CFStringRefObj_CFStringGetBytes, 1,2383 PyDoc_STR("(CFRange range, CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation, CFIndex maxBufLen) -> (CFIndex _rv, UInt8 buffer, CFIndex usedBufLen)")},2384 {"CFStringCreateExternalRepresentation", (PyCFunction)CFStringRefObj_CFStringCreateExternalRepresentation, 1,2385 PyDoc_STR("(CFStringEncoding encoding, UInt8 lossByte) -> (CFDataRef _rv)")},2386 {"CFStringGetSmallestEncoding", (PyCFunction)CFStringRefObj_CFStringGetSmallestEncoding, 1,2387 PyDoc_STR("() -> (CFStringEncoding _rv)")},2388 {"CFStringGetFastestEncoding", (PyCFunction)CFStringRefObj_CFStringGetFastestEncoding, 1,2389 PyDoc_STR("() -> (CFStringEncoding _rv)")},2390 {"CFStringCompareWithOptions", (PyCFunction)CFStringRefObj_CFStringCompareWithOptions, 1,2391 PyDoc_STR("(CFStringRef theString2, CFRange rangeToCompare, CFOptionFlags compareOptions) -> (CFComparisonResult _rv)")},2392 {"CFStringCompare", (PyCFunction)CFStringRefObj_CFStringCompare, 1,2393 PyDoc_STR("(CFStringRef theString2, CFOptionFlags compareOptions) -> (CFComparisonResult _rv)")},2394 {"CFStringFindWithOptions", (PyCFunction)CFStringRefObj_CFStringFindWithOptions, 1,2395 PyDoc_STR("(CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags searchOptions) -> (Boolean _rv, CFRange result)")},2396 {"CFStringCreateArrayWithFindResults", (PyCFunction)CFStringRefObj_CFStringCreateArrayWithFindResults, 1,2397 PyDoc_STR("(CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags compareOptions) -> (CFArrayRef _rv)")},2398 {"CFStringFind", (PyCFunction)CFStringRefObj_CFStringFind, 1,2399 PyDoc_STR("(CFStringRef stringToFind, CFOptionFlags compareOptions) -> (CFRange _rv)")},2400 {"CFStringHasPrefix", (PyCFunction)CFStringRefObj_CFStringHasPrefix, 1,2401 PyDoc_STR("(CFStringRef prefix) -> (Boolean _rv)")},2402 {"CFStringHasSuffix", (PyCFunction)CFStringRefObj_CFStringHasSuffix, 1,2403 PyDoc_STR("(CFStringRef suffix) -> (Boolean _rv)")},2404 {"CFStringGetLineBounds", (PyCFunction)CFStringRefObj_CFStringGetLineBounds, 1,2405 PyDoc_STR("(CFRange range) -> (CFIndex lineBeginIndex, CFIndex lineEndIndex, CFIndex contentsEndIndex)")},2406 {"CFStringCreateArrayBySeparatingStrings", (PyCFunction)CFStringRefObj_CFStringCreateArrayBySeparatingStrings, 1,2407 PyDoc_STR("(CFStringRef separatorString) -> (CFArrayRef _rv)")},2408 {"CFStringGetIntValue", (PyCFunction)CFStringRefObj_CFStringGetIntValue, 1,2409 PyDoc_STR("() -> (SInt32 _rv)")},2410 {"CFStringGetDoubleValue", (PyCFunction)CFStringRefObj_CFStringGetDoubleValue, 1,2411 PyDoc_STR("() -> (double _rv)")},2412 {"CFStringConvertIANACharSetNameToEncoding", (PyCFunction)CFStringRefObj_CFStringConvertIANACharSetNameToEncoding, 1,2413 PyDoc_STR("() -> (CFStringEncoding _rv)")},2414 {"CFShowStr", (PyCFunction)CFStringRefObj_CFShowStr, 1,2415 PyDoc_STR("() -> None")},2416 {"CFURLCreateWithString", (PyCFunction)CFStringRefObj_CFURLCreateWithString, 1,2417 PyDoc_STR("(CFURLRef baseURL) -> (CFURLRef _rv)")},2418 {"CFURLCreateWithFileSystemPath", (PyCFunction)CFStringRefObj_CFURLCreateWithFileSystemPath, 1,2419 PyDoc_STR("(CFURLPathStyle pathStyle, Boolean isDirectory) -> (CFURLRef _rv)")},2420 {"CFURLCreateWithFileSystemPathRelativeToBase", (PyCFunction)CFStringRefObj_CFURLCreateWithFileSystemPathRelativeToBase, 1,2421 PyDoc_STR("(CFURLPathStyle pathStyle, Boolean isDirectory, CFURLRef baseURL) -> (CFURLRef _rv)")},2422 {"CFURLCreateStringByReplacingPercentEscapes", (PyCFunction)CFStringRefObj_CFURLCreateStringByReplacingPercentEscapes, 1,2423 PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")},2424 {"CFURLCreateStringByAddingPercentEscapes", (PyCFunction)CFStringRefObj_CFURLCreateStringByAddingPercentEscapes, 1,2425 PyDoc_STR("(CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding) -> (CFStringRef _rv)")},2426 {"CFStringGetString", (PyCFunction)CFStringRefObj_CFStringGetString, 1,2427 PyDoc_STR("() -> (string _rv)")},2428 {"CFStringGetUnicode", (PyCFunction)CFStringRefObj_CFStringGetUnicode, 1,2429 PyDoc_STR("() -> (unicode _rv)")},2430 {NULL, NULL, 0}2431 };2432 2433 #define CFStringRefObj_getsetlist NULL2434 2435 2436 static int CFStringRefObj_compare(CFStringRefObject *self, CFStringRefObject *other)2437 {2438 /* XXXX Or should we use CFEqual?? */2439 if ( self->ob_itself > other->ob_itself ) return 1;2440 if ( self->ob_itself < other->ob_itself ) return -1;2441 return 0;2442 }2443 2444 static PyObject * CFStringRefObj_repr(CFStringRefObject *self)2445 {2446 char buf[100];2447 sprintf(buf, "<CFStringRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);2448 return PyString_FromString(buf);2449 }2450 2451 static int CFStringRefObj_hash(CFStringRefObject *self)2452 {2453 /* XXXX Or should we use CFHash?? */2454 return (int)self->ob_itself;2455 }2456 static int CFStringRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)2457 {2458 CFStringRef itself;2459 char *kw[] = {"itself", 0};2460 2461 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFStringRefObj_Convert, &itself))2462 {2463 ((CFStringRefObject *)_self)->ob_itself = itself;2464 return 0;2465 }2466 2467 /* Any CFTypeRef descendent is allowed as initializer too */2468 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))2469 {2470 ((CFStringRefObject *)_self)->ob_itself = itself;2471 return 0;2472 }2473 return -1;2474 }2475 2476 #define CFStringRefObj_tp_alloc PyType_GenericAlloc2477 2478 static PyObject *CFStringRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)2479 {2480 PyObject *self;2481 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;2482 ((CFStringRefObject *)self)->ob_itself = NULL;2483 ((CFStringRefObject *)self)->ob_freeit = CFRelease;2484 return self;2485 }2486 2487 #define CFStringRefObj_tp_free PyObject_Del2488 2489 2490 PyTypeObject CFStringRef_Type = {2491 PyObject_HEAD_INIT(NULL)2492 0, /*ob_size*/2493 "_CF.CFStringRef", /*tp_name*/2494 sizeof(CFStringRefObject), /*tp_basicsize*/2495 0, /*tp_itemsize*/2496 /* methods */2497 (destructor) CFStringRefObj_dealloc, /*tp_dealloc*/2498 0, /*tp_print*/2499 (getattrfunc)0, /*tp_getattr*/2500 (setattrfunc)0, /*tp_setattr*/2501 (cmpfunc) CFStringRefObj_compare, /*tp_compare*/2502 (reprfunc) CFStringRefObj_repr, /*tp_repr*/2503 (PyNumberMethods *)0, /* tp_as_number */2504 (PySequenceMethods *)0, /* tp_as_sequence */2505 (PyMappingMethods *)0, /* tp_as_mapping */2506 (hashfunc) CFStringRefObj_hash, /*tp_hash*/2507 0, /*tp_call*/2508 0, /*tp_str*/2509 PyObject_GenericGetAttr, /*tp_getattro*/2510 PyObject_GenericSetAttr, /*tp_setattro */2511 0, /*tp_as_buffer*/2512 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */2513 0, /*tp_doc*/2514 0, /*tp_traverse*/2515 0, /*tp_clear*/2516 0, /*tp_richcompare*/2517 0, /*tp_weaklistoffset*/2518 0, /*tp_iter*/2519 0, /*tp_iternext*/2520 CFStringRefObj_methods, /* tp_methods */2521 0, /*tp_members*/2522 CFStringRefObj_getsetlist, /*tp_getset*/2523 0, /*tp_base*/2524 0, /*tp_dict*/2525 0, /*tp_descr_get*/2526 0, /*tp_descr_set*/2527 0, /*tp_dictoffset*/2528 CFStringRefObj_tp_init, /* tp_init */2529 CFStringRefObj_tp_alloc, /* tp_alloc */2530 CFStringRefObj_tp_new, /* tp_new */2531 CFStringRefObj_tp_free, /* tp_free */2532 };2533 2534 /* ------------------ End object type CFStringRef ------------------- */2535 2536 2537 /* ----------------- Object type CFMutableStringRef ----------------- */2538 2539 PyTypeObject CFMutableStringRef_Type;2540 2541 #define CFMutableStringRefObj_Check(x) ((x)->ob_type == &CFMutableStringRef_Type || PyObject_TypeCheck((x), &CFMutableStringRef_Type))2542 2543 typedef struct CFMutableStringRefObject {2544 PyObject_HEAD2545 CFMutableStringRef ob_itself;2546 void (*ob_freeit)(CFTypeRef ptr);2547 } CFMutableStringRefObject;2548 2549 PyObject *CFMutableStringRefObj_New(CFMutableStringRef itself)2550 {2551 CFMutableStringRefObject *it;2552 if (itself == NULL)2553 {2554 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");2555 return NULL;2556 }2557 it = PyObject_NEW(CFMutableStringRefObject, &CFMutableStringRef_Type);2558 if (it == NULL) return NULL;2559 /* XXXX Should we tp_init or tp_new our basetype? */2560 it->ob_itself = itself;2561 it->ob_freeit = CFRelease;2562 return (PyObject *)it;2563 }2564 2565 int CFMutableStringRefObj_Convert(PyObject *v, CFMutableStringRef *p_itself)2566 {2567 2568 if (v == Py_None) { *p_itself = NULL; return 1; }2569 /* Check for other CF objects here */2570 2571 if (!CFMutableStringRefObj_Check(v))2572 {2573 PyErr_SetString(PyExc_TypeError, "CFMutableStringRef required");2574 return 0;2575 }2576 *p_itself = ((CFMutableStringRefObject *)v)->ob_itself;2577 return 1;2578 }2579 2580 static void CFMutableStringRefObj_dealloc(CFMutableStringRefObject *self)2581 {2582 if (self->ob_freeit && self->ob_itself)2583 {2584 self->ob_freeit((CFTypeRef)self->ob_itself);2585 self->ob_itself = NULL;2586 }2587 CFStringRef_Type.tp_dealloc((PyObject *)self);2588 }2589 2590 static PyObject *CFMutableStringRefObj_CFStringAppend(CFMutableStringRefObject *_self, PyObject *_args)2591 {2592 PyObject *_res = NULL;2593 CFStringRef appendedString;2594 #ifndef CFStringAppend2595 PyMac_PRECHECK(CFStringAppend);2596 #endif2597 if (!PyArg_ParseTuple(_args, "O&",2598 CFStringRefObj_Convert, &appendedString))2599 return NULL;2600 CFStringAppend(_self->ob_itself,2601 appendedString);2602 Py_INCREF(Py_None);2603 _res = Py_None;2604 return _res;2605 }2606 2607 static PyObject *CFMutableStringRefObj_CFStringAppendCharacters(CFMutableStringRefObject *_self, PyObject *_args)2608 {2609 PyObject *_res = NULL;2610 UniChar *chars__in__;2611 UniCharCount chars__len__;2612 int chars__in_len__;2613 #ifndef CFStringAppendCharacters2614 PyMac_PRECHECK(CFStringAppendCharacters);2615 #endif2616 if (!PyArg_ParseTuple(_args, "u#",2617 &chars__in__, &chars__in_len__))2618 return NULL;2619 chars__len__ = chars__in_len__;2620 CFStringAppendCharacters(_self->ob_itself,2621 chars__in__, chars__len__);2622 Py_INCREF(Py_None);2623 _res = Py_None;2624 return _res;2625 }2626 2627 static PyObject *CFMutableStringRefObj_CFStringAppendPascalString(CFMutableStringRefObject *_self, PyObject *_args)2628 {2629 PyObject *_res = NULL;2630 Str255 pStr;2631 CFStringEncoding encoding;2632 #ifndef CFStringAppendPascalString2633 PyMac_PRECHECK(CFStringAppendPascalString);2634 #endif2635 if (!PyArg_ParseTuple(_args, "O&l",2636 PyMac_GetStr255, pStr,2637 &encoding))2638 return NULL;2639 CFStringAppendPascalString(_self->ob_itself,2640 pStr,2641 encoding);2642 Py_INCREF(Py_None);2643 _res = Py_None;2644 return _res;2645 }2646 2647 static PyObject *CFMutableStringRefObj_CFStringAppendCString(CFMutableStringRefObject *_self, PyObject *_args)2648 {2649 PyObject *_res = NULL;2650 char* cStr;2651 CFStringEncoding encoding;2652 #ifndef CFStringAppendCString2653 PyMac_PRECHECK(CFStringAppendCString);2654 #endif2655 if (!PyArg_ParseTuple(_args, "sl",2656 &cStr,2657 &encoding))2658 return NULL;2659 CFStringAppendCString(_self->ob_itself,2660 cStr,2661 encoding);2662 Py_INCREF(Py_None);2663 _res = Py_None;2664 return _res;2665 }2666 2667 static PyObject *CFMutableStringRefObj_CFStringInsert(CFMutableStringRefObject *_self, PyObject *_args)2668 {2669 PyObject *_res = NULL;2670 CFIndex idx;2671 CFStringRef insertedStr;2672 #ifndef CFStringInsert2673 PyMac_PRECHECK(CFStringInsert);2674 #endif2675 if (!PyArg_ParseTuple(_args, "lO&",2676 &idx,2677 CFStringRefObj_Convert, &insertedStr))2678 return NULL;2679 CFStringInsert(_self->ob_itself,2680 idx,2681 insertedStr);2682 Py_INCREF(Py_None);2683 _res = Py_None;2684 return _res;2685 }2686 2687 static PyObject *CFMutableStringRefObj_CFStringDelete(CFMutableStringRefObject *_self, PyObject *_args)2688 {2689 PyObject *_res = NULL;2690 CFRange range;2691 #ifndef CFStringDelete2692 PyMac_PRECHECK(CFStringDelete);2693 #endif2694 if (!PyArg_ParseTuple(_args, "O&",2695 CFRange_Convert, &range))2696 return NULL;2697 CFStringDelete(_self->ob_itself,2698 range);2699 Py_INCREF(Py_None);2700 _res = Py_None;2701 return _res;2702 }2703 2704 static PyObject *CFMutableStringRefObj_CFStringReplace(CFMutableStringRefObject *_self, PyObject *_args)2705 {2706 PyObject *_res = NULL;2707 CFRange range;2708 CFStringRef replacement;2709 #ifndef CFStringReplace2710 PyMac_PRECHECK(CFStringReplace);2711 #endif2712 if (!PyArg_ParseTuple(_args, "O&O&",2713 CFRange_Convert, &range,2714 CFStringRefObj_Convert, &replacement))2715 return NULL;2716 CFStringReplace(_self->ob_itself,2717 range,2718 replacement);2719 Py_INCREF(Py_None);2720 _res = Py_None;2721 return _res;2722 }2723 2724 static PyObject *CFMutableStringRefObj_CFStringReplaceAll(CFMutableStringRefObject *_self, PyObject *_args)2725 {2726 PyObject *_res = NULL;2727 CFStringRef replacement;2728 #ifndef CFStringReplaceAll2729 PyMac_PRECHECK(CFStringReplaceAll);2730 #endif2731 if (!PyArg_ParseTuple(_args, "O&",2732 CFStringRefObj_Convert, &replacement))2733 return NULL;2734 CFStringReplaceAll(_self->ob_itself,2735 replacement);2736 Py_INCREF(Py_None);2737 _res = Py_None;2738 return _res;2739 }2740 2741 static PyObject *CFMutableStringRefObj_CFStringPad(CFMutableStringRefObject *_self, PyObject *_args)2742 {2743 PyObject *_res = NULL;2744 CFStringRef padString;2745 CFIndex length;2746 CFIndex indexIntoPad;2747 #ifndef CFStringPad2748 PyMac_PRECHECK(CFStringPad);2749 #endif2750 if (!PyArg_ParseTuple(_args, "O&ll",2751 CFStringRefObj_Convert, &padString,2752 &length,2753 &indexIntoPad))2754 return NULL;2755 CFStringPad(_self->ob_itself,2756 padString,2757 length,2758 indexIntoPad);2759 Py_INCREF(Py_None);2760 _res = Py_None;2761 return _res;2762 }2763 2764 static PyObject *CFMutableStringRefObj_CFStringTrim(CFMutableStringRefObject *_self, PyObject *_args)2765 {2766 PyObject *_res = NULL;2767 CFStringRef trimString;2768 #ifndef CFStringTrim2769 PyMac_PRECHECK(CFStringTrim);2770 #endif2771 if (!PyArg_ParseTuple(_args, "O&",2772 CFStringRefObj_Convert, &trimString))2773 return NULL;2774 CFStringTrim(_self->ob_itself,2775 trimString);2776 Py_INCREF(Py_None);2777 _res = Py_None;2778 return _res;2779 }2780 2781 static PyObject *CFMutableStringRefObj_CFStringTrimWhitespace(CFMutableStringRefObject *_self, PyObject *_args)2782 {2783 PyObject *_res = NULL;2784 #ifndef CFStringTrimWhitespace2785 PyMac_PRECHECK(CFStringTrimWhitespace);2786 #endif2787 if (!PyArg_ParseTuple(_args, ""))2788 return NULL;2789 CFStringTrimWhitespace(_self->ob_itself);2790 Py_INCREF(Py_None);2791 _res = Py_None;2792 return _res;2793 }2794 2795 static PyMethodDef CFMutableStringRefObj_methods[] = {2796 {"CFStringAppend", (PyCFunction)CFMutableStringRefObj_CFStringAppend, 1,2797 PyDoc_STR("(CFStringRef appendedString) -> None")},2798 {"CFStringAppendCharacters", (PyCFunction)CFMutableStringRefObj_CFStringAppendCharacters, 1,2799 PyDoc_STR("(Buffer chars) -> None")},2800 {"CFStringAppendPascalString", (PyCFunction)CFMutableStringRefObj_CFStringAppendPascalString, 1,2801 PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> None")},2802 {"CFStringAppendCString", (PyCFunction)CFMutableStringRefObj_CFStringAppendCString, 1,2803 PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> None")},2804 {"CFStringInsert", (PyCFunction)CFMutableStringRefObj_CFStringInsert, 1,2805 PyDoc_STR("(CFIndex idx, CFStringRef insertedStr) -> None")},2806 {"CFStringDelete", (PyCFunction)CFMutableStringRefObj_CFStringDelete, 1,2807 PyDoc_STR("(CFRange range) -> None")},2808 {"CFStringReplace", (PyCFunction)CFMutableStringRefObj_CFStringReplace, 1,2809 PyDoc_STR("(CFRange range, CFStringRef replacement) -> None")},2810 {"CFStringReplaceAll", (PyCFunction)CFMutableStringRefObj_CFStringReplaceAll, 1,2811 PyDoc_STR("(CFStringRef replacement) -> None")},2812 {"CFStringPad", (PyCFunction)CFMutableStringRefObj_CFStringPad, 1,2813 PyDoc_STR("(CFStringRef padString, CFIndex length, CFIndex indexIntoPad) -> None")},2814 {"CFStringTrim", (PyCFunction)CFMutableStringRefObj_CFStringTrim, 1,2815 PyDoc_STR("(CFStringRef trimString) -> None")},2816 {"CFStringTrimWhitespace", (PyCFunction)CFMutableStringRefObj_CFStringTrimWhitespace, 1,2817 PyDoc_STR("() -> None")},2818 {NULL, NULL, 0}2819 };2820 2821 #define CFMutableStringRefObj_getsetlist NULL2822 2823 2824 static int CFMutableStringRefObj_compare(CFMutableStringRefObject *self, CFMutableStringRefObject *other)2825 {2826 /* XXXX Or should we use CFEqual?? */2827 if ( self->ob_itself > other->ob_itself ) return 1;2828 if ( self->ob_itself < other->ob_itself ) return -1;2829 return 0;2830 }2831 2832 static PyObject * CFMutableStringRefObj_repr(CFMutableStringRefObject *self)2833 {2834 char buf[100];2835 sprintf(buf, "<CFMutableStringRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);2836 return PyString_FromString(buf);2837 }2838 2839 static int CFMutableStringRefObj_hash(CFMutableStringRefObject *self)2840 {2841 /* XXXX Or should we use CFHash?? */2842 return (int)self->ob_itself;2843 }2844 static int CFMutableStringRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)2845 {2846 CFMutableStringRef itself;2847 char *kw[] = {"itself", 0};2848 2849 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableStringRefObj_Convert, &itself))2850 {2851 ((CFMutableStringRefObject *)_self)->ob_itself = itself;2852 return 0;2853 }2854 2855 /* Any CFTypeRef descendent is allowed as initializer too */2856 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))2857 {2858 ((CFMutableStringRefObject *)_self)->ob_itself = itself;2859 return 0;2860 }2861 return -1;2862 }2863 2864 #define CFMutableStringRefObj_tp_alloc PyType_GenericAlloc2865 2866 static PyObject *CFMutableStringRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)2867 {2868 PyObject *self;2869 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;2870 ((CFMutableStringRefObject *)self)->ob_itself = NULL;2871 ((CFMutableStringRefObject *)self)->ob_freeit = CFRelease;2872 return self;2873 }2874 2875 #define CFMutableStringRefObj_tp_free PyObject_Del2876 2877 2878 PyTypeObject CFMutableStringRef_Type = {2879 PyObject_HEAD_INIT(NULL)2880 0, /*ob_size*/2881 "_CF.CFMutableStringRef", /*tp_name*/2882 sizeof(CFMutableStringRefObject), /*tp_basicsize*/2883 0, /*tp_itemsize*/2884 /* methods */2885 (destructor) CFMutableStringRefObj_dealloc, /*tp_dealloc*/2886 0, /*tp_print*/2887 (getattrfunc)0, /*tp_getattr*/2888 (setattrfunc)0, /*tp_setattr*/2889 (cmpfunc) CFMutableStringRefObj_compare, /*tp_compare*/2890 (reprfunc) CFMutableStringRefObj_repr, /*tp_repr*/2891 (PyNumberMethods *)0, /* tp_as_number */2892 (PySequenceMethods *)0, /* tp_as_sequence */2893 (PyMappingMethods *)0, /* tp_as_mapping */2894 (hashfunc) CFMutableStringRefObj_hash, /*tp_hash*/2895 0, /*tp_call*/2896 0, /*tp_str*/2897 PyObject_GenericGetAttr, /*tp_getattro*/2898 PyObject_GenericSetAttr, /*tp_setattro */2899 0, /*tp_as_buffer*/2900 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */2901 0, /*tp_doc*/2902 0, /*tp_traverse*/2903 0, /*tp_clear*/2904 0, /*tp_richcompare*/2905 0, /*tp_weaklistoffset*/2906 0, /*tp_iter*/2907 0, /*tp_iternext*/2908 CFMutableStringRefObj_methods, /* tp_methods */2909 0, /*tp_members*/2910 CFMutableStringRefObj_getsetlist, /*tp_getset*/2911 0, /*tp_base*/2912 0, /*tp_dict*/2913 0, /*tp_descr_get*/2914 0, /*tp_descr_set*/2915 0, /*tp_dictoffset*/2916 CFMutableStringRefObj_tp_init, /* tp_init */2917 CFMutableStringRefObj_tp_alloc, /* tp_alloc */2918 CFMutableStringRefObj_tp_new, /* tp_new */2919 CFMutableStringRefObj_tp_free, /* tp_free */2920 };2921 2922 /* --------------- End object type CFMutableStringRef --------------- */2923 2924 2925 /* ---------------------- Object type CFURLRef ---------------------- */2926 2927 PyTypeObject CFURLRef_Type;2928 2929 #define CFURLRefObj_Check(x) ((x)->ob_type == &CFURLRef_Type || PyObject_TypeCheck((x), &CFURLRef_Type))2930 2931 typedef struct CFURLRefObject {2932 PyObject_HEAD2933 CFURLRef ob_itself;2934 void (*ob_freeit)(CFTypeRef ptr);2935 } CFURLRefObject;2936 2937 PyObject *CFURLRefObj_New(CFURLRef itself)2938 {2939 CFURLRefObject *it;2940 if (itself == NULL)2941 {2942 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");2943 return NULL;2944 }2945 it = PyObject_NEW(CFURLRefObject, &CFURLRef_Type);2946 if (it == NULL) return NULL;2947 /* XXXX Should we tp_init or tp_new our basetype? */2948 it->ob_itself = itself;2949 it->ob_freeit = CFRelease;2950 return (PyObject *)it;2951 }2952 2953 int CFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself)2954 {2955 2956 if (v == Py_None) { *p_itself = NULL; return 1; }2957 /* Check for other CF objects here */2958 2959 if (!CFURLRefObj_Check(v))2960 {2961 PyErr_SetString(PyExc_TypeError, "CFURLRef required");2962 return 0;2963 }2964 *p_itself = ((CFURLRefObject *)v)->ob_itself;2965 return 1;2966 }2967 2968 static void CFURLRefObj_dealloc(CFURLRefObject *self)2969 {2970 if (self->ob_freeit && self->ob_itself)2971 {2972 self->ob_freeit((CFTypeRef)self->ob_itself);2973 self->ob_itself = NULL;2974 }2975 CFTypeRef_Type.tp_dealloc((PyObject *)self);2976 }2977 2978 static PyObject *CFURLRefObj_CFURLCreateData(CFURLRefObject *_self, PyObject *_args)2979 {2980 PyObject *_res = NULL;2981 CFDataRef _rv;2982 CFStringEncoding encoding;2983 Boolean escapeWhitespace;2984 if (!PyArg_ParseTuple(_args, "ll",2985 &encoding,2986 &escapeWhitespace))2987 return NULL;2988 _rv = CFURLCreateData((CFAllocatorRef)NULL,2989 _self->ob_itself,2990 encoding,2991 escapeWhitespace);2992 _res = Py_BuildValue("O&",2993 CFDataRefObj_New, _rv);2994 return _res;2995 }2996 2997 static PyObject *CFURLRefObj_CFURLGetFileSystemRepresentation(CFURLRefObject *_self, PyObject *_args)2998 {2999 PyObject *_res = NULL;3000 Boolean _rv;3001 Boolean resolveAgainstBase;3002 UInt8 buffer;3003 CFIndex maxBufLen;3004 #ifndef CFURLGetFileSystemRepresentation3005 PyMac_PRECHECK(CFURLGetFileSystemRepresentation);3006 #endif3007 if (!PyArg_ParseTuple(_args, "ll",3008 &resolveAgainstBase,3009 &maxBufLen))3010 return NULL;3011 _rv = CFURLGetFileSystemRepresentation(_self->ob_itself,3012 resolveAgainstBase,3013 &buffer,3014 maxBufLen);3015 _res = Py_BuildValue("lb",3016 _rv,3017 buffer);3018 return _res;3019 }3020 3021 static PyObject *CFURLRefObj_CFURLCopyAbsoluteURL(CFURLRefObject *_self, PyObject *_args)3022 {3023 PyObject *_res = NULL;3024 CFURLRef _rv;3025 #ifndef CFURLCopyAbsoluteURL3026 PyMac_PRECHECK(CFURLCopyAbsoluteURL);3027 #endif3028 if (!PyArg_ParseTuple(_args, ""))3029 return NULL;3030 _rv = CFURLCopyAbsoluteURL(_self->ob_itself);3031 _res = Py_BuildValue("O&",3032 CFURLRefObj_New, _rv);3033 return _res;3034 }3035 3036 static PyObject *CFURLRefObj_CFURLGetString(CFURLRefObject *_self, PyObject *_args)3037 {3038 PyObject *_res = NULL;3039 CFStringRef _rv;3040 #ifndef CFURLGetString3041 PyMac_PRECHECK(CFURLGetString);3042 #endif3043 if (!PyArg_ParseTuple(_args, ""))3044 return NULL;3045 _rv = CFURLGetString(_self->ob_itself);3046 _res = Py_BuildValue("O&",3047 CFStringRefObj_New, _rv);3048 return _res;3049 }3050 3051 static PyObject *CFURLRefObj_CFURLGetBaseURL(CFURLRefObject *_self, PyObject *_args)3052 {3053 PyObject *_res = NULL;3054 CFURLRef _rv;3055 #ifndef CFURLGetBaseURL3056 PyMac_PRECHECK(CFURLGetBaseURL);3057 #endif3058 if (!PyArg_ParseTuple(_args, ""))3059 return NULL;3060 _rv = CFURLGetBaseURL(_self->ob_itself);3061 _res = Py_BuildValue("O&",3062 CFURLRefObj_New, _rv);3063 return _res;3064 }3065 3066 static PyObject *CFURLRefObj_CFURLCanBeDecomposed(CFURLRefObject *_self, PyObject *_args)3067 {3068 PyObject *_res = NULL;3069 Boolean _rv;3070 #ifndef CFURLCanBeDecomposed3071 PyMac_PRECHECK(CFURLCanBeDecomposed);3072 #endif3073 if (!PyArg_ParseTuple(_args, ""))3074 return NULL;3075 _rv = CFURLCanBeDecomposed(_self->ob_itself);3076 _res = Py_BuildValue("l",3077 _rv);3078 return _res;3079 }3080 3081 static PyObject *CFURLRefObj_CFURLCopyScheme(CFURLRefObject *_self, PyObject *_args)3082 {3083 PyObject *_res = NULL;3084 CFStringRef _rv;3085 #ifndef CFURLCopyScheme3086 PyMac_PRECHECK(CFURLCopyScheme);3087 #endif3088 if (!PyArg_ParseTuple(_args, ""))3089 return NULL;3090 _rv = CFURLCopyScheme(_self->ob_itself);3091 _res = Py_BuildValue("O&",3092 CFStringRefObj_New, _rv);3093 return _res;3094 }3095 3096 static PyObject *CFURLRefObj_CFURLCopyNetLocation(CFURLRefObject *_self, PyObject *_args)3097 {3098 PyObject *_res = NULL;3099 CFStringRef _rv;3100 #ifndef CFURLCopyNetLocation3101 PyMac_PRECHECK(CFURLCopyNetLocation);3102 #endif3103 if (!PyArg_ParseTuple(_args, ""))3104 return NULL;3105 _rv = CFURLCopyNetLocation(_self->ob_itself);3106 _res = Py_BuildValue("O&",3107 CFStringRefObj_New, _rv);3108 return _res;3109 }3110 3111 static PyObject *CFURLRefObj_CFURLCopyPath(CFURLRefObject *_self, PyObject *_args)3112 {3113 PyObject *_res = NULL;3114 CFStringRef _rv;3115 #ifndef CFURLCopyPath3116 PyMac_PRECHECK(CFURLCopyPath);3117 #endif3118 if (!PyArg_ParseTuple(_args, ""))3119 return NULL;3120 _rv = CFURLCopyPath(_self->ob_itself);3121 _res = Py_BuildValue("O&",3122 CFStringRefObj_New, _rv);3123 return _res;3124 }3125 3126 static PyObject *CFURLRefObj_CFURLCopyStrictPath(CFURLRefObject *_self, PyObject *_args)3127 {3128 PyObject *_res = NULL;3129 CFStringRef _rv;3130 Boolean isAbsolute;3131 #ifndef CFURLCopyStrictPath3132 PyMac_PRECHECK(CFURLCopyStrictPath);3133 #endif3134 if (!PyArg_ParseTuple(_args, ""))3135 return NULL;3136 _rv = CFURLCopyStrictPath(_self->ob_itself,3137 &isAbsolute);3138 _res = Py_BuildValue("O&l",3139 CFStringRefObj_New, _rv,3140 isAbsolute);3141 return _res;3142 }3143 3144 static PyObject *CFURLRefObj_CFURLCopyFileSystemPath(CFURLRefObject *_self, PyObject *_args)3145 {3146 PyObject *_res = NULL;3147 CFStringRef _rv;3148 CFURLPathStyle pathStyle;3149 #ifndef CFURLCopyFileSystemPath3150 PyMac_PRECHECK(CFURLCopyFileSystemPath);3151 #endif3152 if (!PyArg_ParseTuple(_args, "l",3153 &pathStyle))3154 return NULL;3155 _rv = CFURLCopyFileSystemPath(_self->ob_itself,3156 pathStyle);3157 _res = Py_BuildValue("O&",3158 CFStringRefObj_New, _rv);3159 return _res;3160 }3161 3162 static PyObject *CFURLRefObj_CFURLHasDirectoryPath(CFURLRefObject *_self, PyObject *_args)3163 {3164 PyObject *_res = NULL;3165 Boolean _rv;3166 #ifndef CFURLHasDirectoryPath3167 PyMac_PRECHECK(CFURLHasDirectoryPath);3168 #endif3169 if (!PyArg_ParseTuple(_args, ""))3170 return NULL;3171 _rv = CFURLHasDirectoryPath(_self->ob_itself);3172 _res = Py_BuildValue("l",3173 _rv);3174 return _res;3175 }3176 3177 static PyObject *CFURLRefObj_CFURLCopyResourceSpecifier(CFURLRefObject *_self, PyObject *_args)3178 {3179 PyObject *_res = NULL;3180 CFStringRef _rv;3181 #ifndef CFURLCopyResourceSpecifier3182 PyMac_PRECHECK(CFURLCopyResourceSpecifier);3183 #endif3184 if (!PyArg_ParseTuple(_args, ""))3185 return NULL;3186 _rv = CFURLCopyResourceSpecifier(_self->ob_itself);3187 _res = Py_BuildValue("O&",3188 CFStringRefObj_New, _rv);3189 return _res;3190 }3191 3192 static PyObject *CFURLRefObj_CFURLCopyHostName(CFURLRefObject *_self, PyObject *_args)3193 {3194 PyObject *_res = NULL;3195 CFStringRef _rv;3196 #ifndef CFURLCopyHostName3197 PyMac_PRECHECK(CFURLCopyHostName);3198 #endif3199 if (!PyArg_ParseTuple(_args, ""))3200 return NULL;3201 _rv = CFURLCopyHostName(_self->ob_itself);3202 _res = Py_BuildValue("O&",3203 CFStringRefObj_New, _rv);3204 return _res;3205 }3206 3207 static PyObject *CFURLRefObj_CFURLGetPortNumber(CFURLRefObject *_self, PyObject *_args)3208 {3209 PyObject *_res = NULL;3210 SInt32 _rv;3211 #ifndef CFURLGetPortNumber3212 PyMac_PRECHECK(CFURLGetPortNumber);3213 #endif3214 if (!PyArg_ParseTuple(_args, ""))3215 return NULL;3216 _rv = CFURLGetPortNumber(_self->ob_itself);3217 _res = Py_BuildValue("l",3218 _rv);3219 return _res;3220 }3221 3222 static PyObject *CFURLRefObj_CFURLCopyUserName(CFURLRefObject *_self, PyObject *_args)3223 {3224 PyObject *_res = NULL;3225 CFStringRef _rv;3226 #ifndef CFURLCopyUserName3227 PyMac_PRECHECK(CFURLCopyUserName);3228 #endif3229 if (!PyArg_ParseTuple(_args, ""))3230 return NULL;3231 _rv = CFURLCopyUserName(_self->ob_itself);3232 _res = Py_BuildValue("O&",3233 CFStringRefObj_New, _rv);3234 return _res;3235 }3236 3237 static PyObject *CFURLRefObj_CFURLCopyPassword(CFURLRefObject *_self, PyObject *_args)3238 {3239 PyObject *_res = NULL;3240 CFStringRef _rv;3241 #ifndef CFURLCopyPassword3242 PyMac_PRECHECK(CFURLCopyPassword);3243 #endif3244 if (!PyArg_ParseTuple(_args, ""))3245 return NULL;3246 _rv = CFURLCopyPassword(_self->ob_itself);3247 _res = Py_BuildValue("O&",3248 CFStringRefObj_New, _rv);3249 return _res;3250 }3251 3252 static PyObject *CFURLRefObj_CFURLCopyParameterString(CFURLRefObject *_self, PyObject *_args)3253 {3254 PyObject *_res = NULL;3255 CFStringRef _rv;3256 CFStringRef charactersToLeaveEscaped;3257 #ifndef CFURLCopyParameterString3258 PyMac_PRECHECK(CFURLCopyParameterString);3259 #endif3260 if (!PyArg_ParseTuple(_args, "O&",3261 CFStringRefObj_Convert, &charactersToLeaveEscaped))3262 return NULL;3263 _rv = CFURLCopyParameterString(_self->ob_itself,3264 charactersToLeaveEscaped);3265 _res = Py_BuildValue("O&",3266 CFStringRefObj_New, _rv);3267 return _res;3268 }3269 3270 static PyObject *CFURLRefObj_CFURLCopyQueryString(CFURLRefObject *_self, PyObject *_args)3271 {3272 PyObject *_res = NULL;3273 CFStringRef _rv;3274 CFStringRef charactersToLeaveEscaped;3275 #ifndef CFURLCopyQueryString3276 PyMac_PRECHECK(CFURLCopyQueryString);3277 #endif3278 if (!PyArg_ParseTuple(_args, "O&",3279 CFStringRefObj_Convert, &charactersToLeaveEscaped))3280 return NULL;3281 _rv = CFURLCopyQueryString(_self->ob_itself,3282 charactersToLeaveEscaped);3283 _res = Py_BuildValue("O&",3284 CFStringRefObj_New, _rv);3285 return _res;3286 }3287 3288 static PyObject *CFURLRefObj_CFURLCopyFragment(CFURLRefObject *_self, PyObject *_args)3289 {3290 PyObject *_res = NULL;3291 CFStringRef _rv;3292 CFStringRef charactersToLeaveEscaped;3293 #ifndef CFURLCopyFragment3294 PyMac_PRECHECK(CFURLCopyFragment);3295 #endif3296 if (!PyArg_ParseTuple(_args, "O&",3297 CFStringRefObj_Convert, &charactersToLeaveEscaped))3298 return NULL;3299 _rv = CFURLCopyFragment(_self->ob_itself,3300 charactersToLeaveEscaped);3301 _res = Py_BuildValue("O&",3302 CFStringRefObj_New, _rv);3303 return _res;3304 }3305 3306 static PyObject *CFURLRefObj_CFURLCopyLastPathComponent(CFURLRefObject *_self, PyObject *_args)3307 {3308 PyObject *_res = NULL;3309 CFStringRef _rv;3310 #ifndef CFURLCopyLastPathComponent3311 PyMac_PRECHECK(CFURLCopyLastPathComponent);3312 #endif3313 if (!PyArg_ParseTuple(_args, ""))3314 return NULL;3315 _rv = CFURLCopyLastPathComponent(_self->ob_itself);3316 _res = Py_BuildValue("O&",3317 CFStringRefObj_New, _rv);3318 return _res;3319 }3320 3321 static PyObject *CFURLRefObj_CFURLCopyPathExtension(CFURLRefObject *_self, PyObject *_args)3322 {3323 PyObject *_res = NULL;3324 CFStringRef _rv;3325 #ifndef CFURLCopyPathExtension3326 PyMac_PRECHECK(CFURLCopyPathExtension);3327 #endif3328 if (!PyArg_ParseTuple(_args, ""))3329 return NULL;3330 _rv = CFURLCopyPathExtension(_self->ob_itself);3331 _res = Py_BuildValue("O&",3332 CFStringRefObj_New, _rv);3333 return _res;3334 }3335 3336 static PyObject *CFURLRefObj_CFURLCreateCopyAppendingPathComponent(CFURLRefObject *_self, PyObject *_args)3337 {3338 PyObject *_res = NULL;3339 CFURLRef _rv;3340 CFStringRef pathComponent;3341 Boolean isDirectory;3342 if (!PyArg_ParseTuple(_args, "O&l",3343 CFStringRefObj_Convert, &pathComponent,3344 &isDirectory))3345 return NULL;3346 _rv = CFURLCreateCopyAppendingPathComponent((CFAllocatorRef)NULL,3347 _self->ob_itself,3348 pathComponent,3349 isDirectory);3350 _res = Py_BuildValue("O&",3351 CFURLRefObj_New, _rv);3352 return _res;3353 }3354 3355 static PyObject *CFURLRefObj_CFURLCreateCopyDeletingLastPathComponent(CFURLRefObject *_self, PyObject *_args)3356 {3357 PyObject *_res = NULL;3358 CFURLRef _rv;3359 if (!PyArg_ParseTuple(_args, ""))3360 return NULL;3361 _rv = CFURLCreateCopyDeletingLastPathComponent((CFAllocatorRef)NULL,3362 _self->ob_itself);3363 _res = Py_BuildValue("O&",3364 CFURLRefObj_New, _rv);3365 return _res;3366 }3367 3368 static PyObject *CFURLRefObj_CFURLCreateCopyAppendingPathExtension(CFURLRefObject *_self, PyObject *_args)3369 {3370 PyObject *_res = NULL;3371 CFURLRef _rv;3372 CFStringRef extension;3373 if (!PyArg_ParseTuple(_args, "O&",3374 CFStringRefObj_Convert, &extension))3375 return NULL;3376 _rv = CFURLCreateCopyAppendingPathExtension((CFAllocatorRef)NULL,3377 _self->ob_itself,3378 extension);3379 _res = Py_BuildValue("O&",3380 CFURLRefObj_New, _rv);3381 return _res;3382 }3383 3384 static PyObject *CFURLRefObj_CFURLCreateCopyDeletingPathExtension(CFURLRefObject *_self, PyObject *_args)3385 {3386 PyObject *_res = NULL;3387 CFURLRef _rv;3388 if (!PyArg_ParseTuple(_args, ""))3389 return NULL;3390 _rv = CFURLCreateCopyDeletingPathExtension((CFAllocatorRef)NULL,3391 _self->ob_itself);3392 _res = Py_BuildValue("O&",3393 CFURLRefObj_New, _rv);3394 return _res;3395 }3396 3397 static PyObject *CFURLRefObj_CFURLGetFSRef(CFURLRefObject *_self, PyObject *_args)3398 {3399 PyObject *_res = NULL;3400 Boolean _rv;3401 FSRef fsRef;3402 #ifndef CFURLGetFSRef3403 PyMac_PRECHECK(CFURLGetFSRef);3404 #endif3405 if (!PyArg_ParseTuple(_args, ""))3406 return NULL;3407 _rv = CFURLGetFSRef(_self->ob_itself,3408 &fsRef);3409 _res = Py_BuildValue("lO&",3410 _rv,3411 PyMac_BuildFSRef, &fsRef);3412 return _res;3413 }3414 3415 static PyMethodDef CFURLRefObj_methods[] = {3416 {"CFURLCreateData", (PyCFunction)CFURLRefObj_CFURLCreateData, 1,3417 PyDoc_STR("(CFStringEncoding encoding, Boolean escapeWhitespace) -> (CFDataRef _rv)")},3418 {"CFURLGetFileSystemRepresentation", (PyCFunction)CFURLRefObj_CFURLGetFileSystemRepresentation, 1,3419 PyDoc_STR("(Boolean resolveAgainstBase, CFIndex maxBufLen) -> (Boolean _rv, UInt8 buffer)")},3420 {"CFURLCopyAbsoluteURL", (PyCFunction)CFURLRefObj_CFURLCopyAbsoluteURL, 1,3421 PyDoc_STR("() -> (CFURLRef _rv)")},3422 {"CFURLGetString", (PyCFunction)CFURLRefObj_CFURLGetString, 1,3423 PyDoc_STR("() -> (CFStringRef _rv)")},3424 {"CFURLGetBaseURL", (PyCFunction)CFURLRefObj_CFURLGetBaseURL, 1,3425 PyDoc_STR("() -> (CFURLRef _rv)")},3426 {"CFURLCanBeDecomposed", (PyCFunction)CFURLRefObj_CFURLCanBeDecomposed, 1,3427 PyDoc_STR("() -> (Boolean _rv)")},3428 {"CFURLCopyScheme", (PyCFunction)CFURLRefObj_CFURLCopyScheme, 1,3429 PyDoc_STR("() -> (CFStringRef _rv)")},3430 {"CFURLCopyNetLocation", (PyCFunction)CFURLRefObj_CFURLCopyNetLocation, 1,3431 PyDoc_STR("() -> (CFStringRef _rv)")},3432 {"CFURLCopyPath", (PyCFunction)CFURLRefObj_CFURLCopyPath, 1,3433 PyDoc_STR("() -> (CFStringRef _rv)")},3434 {"CFURLCopyStrictPath", (PyCFunction)CFURLRefObj_CFURLCopyStrictPath, 1,3435 PyDoc_STR("() -> (CFStringRef _rv, Boolean isAbsolute)")},3436 {"CFURLCopyFileSystemPath", (PyCFunction)CFURLRefObj_CFURLCopyFileSystemPath, 1,3437 PyDoc_STR("(CFURLPathStyle pathStyle) -> (CFStringRef _rv)")},3438 {"CFURLHasDirectoryPath", (PyCFunction)CFURLRefObj_CFURLHasDirectoryPath, 1,3439 PyDoc_STR("() -> (Boolean _rv)")},3440 {"CFURLCopyResourceSpecifier", (PyCFunction)CFURLRefObj_CFURLCopyResourceSpecifier, 1,3441 PyDoc_STR("() -> (CFStringRef _rv)")},3442 {"CFURLCopyHostName", (PyCFunction)CFURLRefObj_CFURLCopyHostName, 1,3443 PyDoc_STR("() -> (CFStringRef _rv)")},3444 {"CFURLGetPortNumber", (PyCFunction)CFURLRefObj_CFURLGetPortNumber, 1,3445 PyDoc_STR("() -> (SInt32 _rv)")},3446 {"CFURLCopyUserName", (PyCFunction)CFURLRefObj_CFURLCopyUserName, 1,3447 PyDoc_STR("() -> (CFStringRef _rv)")},3448 {"CFURLCopyPassword", (PyCFunction)CFURLRefObj_CFURLCopyPassword, 1,3449 PyDoc_STR("() -> (CFStringRef _rv)")},3450 {"CFURLCopyParameterString", (PyCFunction)CFURLRefObj_CFURLCopyParameterString, 1,3451 PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")},3452 {"CFURLCopyQueryString", (PyCFunction)CFURLRefObj_CFURLCopyQueryString, 1,3453 PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")},3454 {"CFURLCopyFragment", (PyCFunction)CFURLRefObj_CFURLCopyFragment, 1,3455 PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")},3456 {"CFURLCopyLastPathComponent", (PyCFunction)CFURLRefObj_CFURLCopyLastPathComponent, 1,3457 PyDoc_STR("() -> (CFStringRef _rv)")},3458 {"CFURLCopyPathExtension", (PyCFunction)CFURLRefObj_CFURLCopyPathExtension, 1,3459 PyDoc_STR("() -> (CFStringRef _rv)")},3460 {"CFURLCreateCopyAppendingPathComponent", (PyCFunction)CFURLRefObj_CFURLCreateCopyAppendingPathComponent, 1,3461 PyDoc_STR("(CFStringRef pathComponent, Boolean isDirectory) -> (CFURLRef _rv)")},3462 {"CFURLCreateCopyDeletingLastPathComponent", (PyCFunction)CFURLRefObj_CFURLCreateCopyDeletingLastPathComponent, 1,3463 PyDoc_STR("() -> (CFURLRef _rv)")},3464 {"CFURLCreateCopyAppendingPathExtension", (PyCFunction)CFURLRefObj_CFURLCreateCopyAppendingPathExtension, 1,3465 PyDoc_STR("(CFStringRef extension) -> (CFURLRef _rv)")},3466 {"CFURLCreateCopyDeletingPathExtension", (PyCFunction)CFURLRefObj_CFURLCreateCopyDeletingPathExtension, 1,3467 PyDoc_STR("() -> (CFURLRef _rv)")},3468 {"CFURLGetFSRef", (PyCFunction)CFURLRefObj_CFURLGetFSRef, 1,3469 PyDoc_STR("() -> (Boolean _rv, FSRef fsRef)")},3470 {NULL, NULL, 0}3471 };3472 3473 #define CFURLRefObj_getsetlist NULL3474 3475 3476 static int CFURLRefObj_compare(CFURLRefObject *self, CFURLRefObject *other)3477 {3478 /* XXXX Or should we use CFEqual?? */3479 if ( self->ob_itself > other->ob_itself ) return 1;3480 if ( self->ob_itself < other->ob_itself ) return -1;3481 return 0;3482 }3483 3484 static PyObject * CFURLRefObj_repr(CFURLRefObject *self)3485 {3486 char buf[100];3487 sprintf(buf, "<CFURL object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);3488 return PyString_FromString(buf);3489 }3490 3491 static int CFURLRefObj_hash(CFURLRefObject *self)3492 {3493 /* XXXX Or should we use CFHash?? */3494 return (int)self->ob_itself;3495 }3496 static int CFURLRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)3497 {3498 CFURLRef itself;3499 char *kw[] = {"itself", 0};3500 3501 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFURLRefObj_Convert, &itself))3502 {3503 ((CFURLRefObject *)_self)->ob_itself = itself;3504 return 0;3505 }3506 3507 /* Any CFTypeRef descendent is allowed as initializer too */3508 if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))3509 {3510 ((CFURLRefObject *)_self)->ob_itself = itself;3511 return 0;3512 }3513 return -1;3514 }3515 3516 #define CFURLRefObj_tp_alloc PyType_GenericAlloc3517 3518 static PyObject *CFURLRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)3519 {3520 PyObject *self;3521 if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;3522 ((CFURLRefObject *)self)->ob_itself = NULL;3523 ((CFURLRefObject *)self)->ob_freeit = CFRelease;3524 return self;3525 }3526 3527 #define CFURLRefObj_tp_free PyObject_Del3528 3529 3530 PyTypeObject CFURLRef_Type = {3531 PyObject_HEAD_INIT(NULL)3532 0, /*ob_size*/3533 "_CF.CFURLRef", /*tp_name*/3534 sizeof(CFURLRefObject), /*tp_basicsize*/3535 0, /*tp_itemsize*/3536 /* methods */3537 (destructor) CFURLRefObj_dealloc, /*tp_dealloc*/3538 0, /*tp_print*/3539 (getattrfunc)0, /*tp_getattr*/3540 (setattrfunc)0, /*tp_setattr*/3541 (cmpfunc) CFURLRefObj_compare, /*tp_compare*/3542 (reprfunc) CFURLRefObj_repr, /*tp_repr*/3543 (PyNumberMethods *)0, /* tp_as_number */3544 (PySequenceMethods *)0, /* tp_as_sequence */3545 (PyMappingMethods *)0, /* tp_as_mapping */3546 (hashfunc) CFURLRefObj_hash, /*tp_hash*/3547 0, /*tp_call*/3548 0, /*tp_str*/3549 PyObject_GenericGetAttr, /*tp_getattro*/3550 PyObject_GenericSetAttr, /*tp_setattro */3551 0, /*tp_as_buffer*/3552 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */3553 0, /*tp_doc*/3554 0, /*tp_traverse*/3555 0, /*tp_clear*/3556 0, /*tp_richcompare*/3557 0, /*tp_weaklistoffset*/3558 0, /*tp_iter*/3559 0, /*tp_iternext*/3560 CFURLRefObj_methods, /* tp_methods */3561 0, /*tp_members*/3562 CFURLRefObj_getsetlist, /*tp_getset*/3563 0, /*tp_base*/3564 0, /*tp_dict*/3565 0, /*tp_descr_get*/3566 0, /*tp_descr_set*/3567 0, /*tp_dictoffset*/3568 CFURLRefObj_tp_init, /* tp_init */3569 CFURLRefObj_tp_alloc, /* tp_alloc */3570 CFURLRefObj_tp_new, /* tp_new */3571 CFURLRefObj_tp_free, /* tp_free */3572 };3573 3574 3574 /* -------------------- End object type CFURLRef -------------------- */ 3575 3575 … … 3577 3577 static PyObject *CF___CFRangeMake(PyObject *_self, PyObject *_args) 3578 3578 { 3579 PyObject *_res = NULL;3580 CFRange _rv;3581 CFIndex loc;3582 CFIndex len;3579 PyObject *_res = NULL; 3580 CFRange _rv; 3581 CFIndex loc; 3582 CFIndex len; 3583 3583 #ifndef __CFRangeMake 3584 PyMac_PRECHECK(__CFRangeMake);3585 #endif 3586 if (!PyArg_ParseTuple(_args, "ll",3587 &loc,3588 &len))3589 return NULL;3590 _rv = __CFRangeMake(loc,3591 len);3592 _res = Py_BuildValue("O&",3593 CFRange_New, _rv);3594 return _res;3584 PyMac_PRECHECK(__CFRangeMake); 3585 #endif 3586 if (!PyArg_ParseTuple(_args, "ll", 3587 &loc, 3588 &len)) 3589 return NULL; 3590 _rv = __CFRangeMake(loc, 3591 len); 3592 _res = Py_BuildValue("O&", 3593 CFRange_New, _rv); 3594 return _res; 3595 3595 } 3596 3596 3597 3597 static PyObject *CF_CFAllocatorGetTypeID(PyObject *_self, PyObject *_args) 3598 3598 { 3599 PyObject *_res = NULL;3600 CFTypeID _rv;3599 PyObject *_res = NULL; 3600 CFTypeID _rv; 3601 3601 #ifndef CFAllocatorGetTypeID 3602 PyMac_PRECHECK(CFAllocatorGetTypeID);3603 #endif 3604 if (!PyArg_ParseTuple(_args, ""))3605 return NULL;3606 _rv = CFAllocatorGetTypeID();3607 _res = Py_BuildValue("l",3608 _rv);3609 return _res;3602 PyMac_PRECHECK(CFAllocatorGetTypeID); 3603 #endif 3604 if (!PyArg_ParseTuple(_args, "")) 3605 return NULL; 3606 _rv = CFAllocatorGetTypeID(); 3607 _res = Py_BuildValue("l", 3608 _rv); 3609 return _res; 3610 3610 } 3611 3611 3612 3612 static PyObject *CF_CFAllocatorGetPreferredSizeForSize(PyObject *_self, PyObject *_args) 3613 3613 { 3614 PyObject *_res = NULL;3615 CFIndex _rv;3616 CFIndex size;3617 CFOptionFlags hint;3614 PyObject *_res = NULL; 3615 CFIndex _rv; 3616 CFIndex size; 3617 CFOptionFlags hint; 3618 3618 #ifndef CFAllocatorGetPreferredSizeForSize 3619 PyMac_PRECHECK(CFAllocatorGetPreferredSizeForSize);3620 #endif 3621 if (!PyArg_ParseTuple(_args, "ll",3622 &size,3623 &hint))3624 return NULL;3625 _rv = CFAllocatorGetPreferredSizeForSize((CFAllocatorRef)NULL,3626 size,3627 hint);3628 _res = Py_BuildValue("l",3629 _rv);3630 return _res;3619 PyMac_PRECHECK(CFAllocatorGetPreferredSizeForSize); 3620 #endif 3621 if (!PyArg_ParseTuple(_args, "ll", 3622 &size, 3623 &hint)) 3624 return NULL; 3625 _rv = CFAllocatorGetPreferredSizeForSize((CFAllocatorRef)NULL, 3626 size, 3627 hint); 3628 _res = Py_BuildValue("l", 3629 _rv); 3630 return _res; 3631 3631 } 3632 3632 3633 3633 static PyObject *CF_CFCopyTypeIDDescription(PyObject *_self, PyObject *_args) 3634 3634 { 3635 PyObject *_res = NULL;3636 CFStringRef _rv;3637 CFTypeID type_id;3635 PyObject *_res = NULL; 3636 CFStringRef _rv; 3637 CFTypeID type_id; 3638 3638 #ifndef CFCopyTypeIDDescription 3639 PyMac_PRECHECK(CFCopyTypeIDDescription);3640 #endif 3641 if (!PyArg_ParseTuple(_args, "l",3642 &type_id))3643 return NULL;3644 _rv = CFCopyTypeIDDescription(type_id);3645 _res = Py_BuildValue("O&",3646 CFStringRefObj_New, _rv);3647 return _res;3639 PyMac_PRECHECK(CFCopyTypeIDDescription); 3640 #endif 3641 if (!PyArg_ParseTuple(_args, "l", 3642 &type_id)) 3643 return NULL; 3644 _rv = CFCopyTypeIDDescription(type_id); 3645 _res = Py_BuildValue("O&", 3646 CFStringRefObj_New, _rv); 3647 return _res; 3648 3648 } 3649 3649 3650 3650 static PyObject *CF_CFArrayGetTypeID(PyObject *_self, PyObject *_args) 3651 3651 { 3652 PyObject *_res = NULL;3653 CFTypeID _rv;3652 PyObject *_res = NULL; 3653 CFTypeID _rv; 3654 3654 #ifndef CFArrayGetTypeID 3655 PyMac_PRECHECK(CFArrayGetTypeID);3656 #endif 3657 if (!PyArg_ParseTuple(_args, ""))3658 return NULL;3659 _rv = CFArrayGetTypeID();3660 _res = Py_BuildValue("l",3661 _rv);3662 return _res;3655 PyMac_PRECHECK(CFArrayGetTypeID); 3656 #endif 3657 if (!PyArg_ParseTuple(_args, "")) 3658 return NULL; 3659 _rv = CFArrayGetTypeID(); 3660 _res = Py_BuildValue("l", 3661 _rv); 3662 return _res; 3663 3663 } 3664 3664 3665 3665 static PyObject *CF_CFArrayCreateMutable(PyObject *_self, PyObject *_args) 3666 3666 { 3667 PyObject *_res = NULL;3668 CFMutableArrayRef _rv;3669 CFIndex capacity;3667 PyObject *_res = NULL; 3668 CFMutableArrayRef _rv; 3669 CFIndex capacity; 3670 3670 #ifndef CFArrayCreateMutable 3671 PyMac_PRECHECK(CFArrayCreateMutable);3672 #endif 3673 if (!PyArg_ParseTuple(_args, "l",3674 &capacity))3675 return NULL;3676 _rv = CFArrayCreateMutable((CFAllocatorRef)NULL,3677 capacity,3678 &kCFTypeArrayCallBacks);3679 _res = Py_BuildValue("O&",3680 CFMutableArrayRefObj_New, _rv);3681 return _res;3671 PyMac_PRECHECK(CFArrayCreateMutable); 3672 #endif 3673 if (!PyArg_ParseTuple(_args, "l", 3674 &capacity)) 3675 return NULL; 3676 _rv = CFArrayCreateMutable((CFAllocatorRef)NULL, 3677 capacity, 3678 &kCFTypeArrayCallBacks); 3679 _res = Py_BuildValue("O&", 3680 CFMutableArrayRefObj_New, _rv); 3681 return _res; 3682 3682 } 3683 3683 3684 3684 static PyObject *CF_CFArrayCreateMutableCopy(PyObject *_self, PyObject *_args) 3685 3685 { 3686 PyObject *_res = NULL;3687 CFMutableArrayRef _rv;3688 CFIndex capacity;3689 CFArrayRef theArray;3686 PyObject *_res = NULL; 3687 CFMutableArrayRef _rv; 3688 CFIndex capacity; 3689 CFArrayRef theArray; 3690 3690 #ifndef CFArrayCreateMutableCopy 3691 PyMac_PRECHECK(CFArrayCreateMutableCopy);3692 #endif 3693 if (!PyArg_ParseTuple(_args, "lO&",3694 &capacity,3695 CFArrayRefObj_Convert, &theArray))3696 return NULL;3697 _rv = CFArrayCreateMutableCopy((CFAllocatorRef)NULL,3698 capacity,3699 theArray);3700 _res = Py_BuildValue("O&",3701 CFMutableArrayRefObj_New, _rv);3702 return _res;3691 PyMac_PRECHECK(CFArrayCreateMutableCopy); 3692 #endif 3693 if (!PyArg_ParseTuple(_args, "lO&", 3694 &capacity, 3695 CFArrayRefObj_Convert, &theArray)) 3696 return NULL; 3697 _rv = CFArrayCreateMutableCopy((CFAllocatorRef)NULL, 3698 capacity, 3699 theArray); 3700 _res = Py_BuildValue("O&", 3701 CFMutableArrayRefObj_New, _rv); 3702 return _res; 3703 3703 } 3704 3704 3705 3705 static PyObject *CF_CFDataGetTypeID(PyObject *_self, PyObject *_args) 3706 3706 { 3707 PyObject *_res = NULL;3708 CFTypeID _rv;3707 PyObject *_res = NULL; 3708 CFTypeID _rv; 3709 3709 #ifndef CFDataGetTypeID 3710 PyMac_PRECHECK(CFDataGetTypeID);3711 #endif 3712 if (!PyArg_ParseTuple(_args, ""))3713 return NULL;3714 _rv = CFDataGetTypeID();3715 _res = Py_BuildValue("l",3716 _rv);3717 return _res;3710 PyMac_PRECHECK(CFDataGetTypeID); 3711 #endif 3712 if (!PyArg_ParseTuple(_args, "")) 3713 return NULL; 3714 _rv = CFDataGetTypeID(); 3715 _res = Py_BuildValue("l", 3716 _rv); 3717 return _res; 3718 3718 } 3719 3719 3720 3720 static PyObject *CF_CFDataCreate(PyObject *_self, PyObject *_args) 3721 3721 { 3722 PyObject *_res = NULL;3723 CFDataRef _rv;3724 unsigned char *bytes__in__;3725 long bytes__len__;3726 int bytes__in_len__;3722 PyObject *_res = NULL; 3723 CFDataRef _rv; 3724 unsigned char *bytes__in__; 3725 long bytes__len__; 3726 int bytes__in_len__; 3727 3727 #ifndef CFDataCreate 3728 PyMac_PRECHECK(CFDataCreate);3729 #endif 3730 if (!PyArg_ParseTuple(_args, "s#",3731 &bytes__in__, &bytes__in_len__))3732 return NULL;3733 bytes__len__ = bytes__in_len__;3734 _rv = CFDataCreate((CFAllocatorRef)NULL,3735 bytes__in__, bytes__len__);3736 _res = Py_BuildValue("O&",3737 CFDataRefObj_New, _rv);3738 return _res;3728 PyMac_PRECHECK(CFDataCreate); 3729 #endif 3730 if (!PyArg_ParseTuple(_args, "s#", 3731 &bytes__in__, &bytes__in_len__)) 3732 return NULL; 3733 bytes__len__ = bytes__in_len__; 3734 _rv = CFDataCreate((CFAllocatorRef)NULL, 3735 bytes__in__, bytes__len__); 3736 _res = Py_BuildValue("O&", 3737 CFDataRefObj_New, _rv); 3738 return _res; 3739 3739 } 3740 3740 3741 3741 static PyObject *CF_CFDataCreateWithBytesNoCopy(PyObject *_self, PyObject *_args) 3742 3742 { 3743 PyObject *_res = NULL;3744 CFDataRef _rv;3745 unsigned char *bytes__in__;3746 long bytes__len__;3747 int bytes__in_len__;3743 PyObject *_res = NULL; 3744 CFDataRef _rv; 3745 unsigned char *bytes__in__; 3746 long bytes__len__; 3747 int bytes__in_len__; 3748 3748 #ifndef CFDataCreateWithBytesNoCopy 3749 PyMac_PRECHECK(CFDataCreateWithBytesNoCopy);3750 #endif 3751 if (!PyArg_ParseTuple(_args, "s#",3752 &bytes__in__, &bytes__in_len__))3753 return NULL;3754 bytes__len__ = bytes__in_len__;3755 _rv = CFDataCreateWithBytesNoCopy((CFAllocatorRef)NULL,3756 bytes__in__, bytes__len__,3757 (CFAllocatorRef)NULL);3758 _res = Py_BuildValue("O&",3759 CFDataRefObj_New, _rv);3760 return _res;3749 PyMac_PRECHECK(CFDataCreateWithBytesNoCopy); 3750 #endif 3751 if (!PyArg_ParseTuple(_args, "s#", 3752 &bytes__in__, &bytes__in_len__)) 3753 return NULL; 3754 bytes__len__ = bytes__in_len__; 3755 _rv = CFDataCreateWithBytesNoCopy((CFAllocatorRef)NULL, 3756 bytes__in__, bytes__len__, 3757 (CFAllocatorRef)NULL); 3758 _res = Py_BuildValue("O&", 3759 CFDataRefObj_New, _rv); 3760 return _res; 3761 3761 } 3762 3762 3763 3763 static PyObject *CF_CFDataCreateMutable(PyObject *_self, PyObject *_args) 3764 3764 { 3765 PyObject *_res = NULL;3766 CFMutableDataRef _rv;3767 CFIndex capacity;3765 PyObject *_res = NULL; 3766 CFMutableDataRef _rv; 3767 CFIndex capacity; 3768 3768 #ifndef CFDataCreateMutable 3769 PyMac_PRECHECK(CFDataCreateMutable);3770 #endif 3771 if (!PyArg_ParseTuple(_args, "l",3772 &capacity))3773 return NULL;3774 _rv = CFDataCreateMutable((CFAllocatorRef)NULL,3775 capacity);3776 _res = Py_BuildValue("O&",3777 CFMutableDataRefObj_New, _rv);3778 return _res;3769 PyMac_PRECHECK(CFDataCreateMutable); 3770 #endif 3771 if (!PyArg_ParseTuple(_args, "l", 3772 &capacity)) 3773 return NULL; 3774 _rv = CFDataCreateMutable((CFAllocatorRef)NULL, 3775 capacity); 3776 _res = Py_BuildValue("O&", 3777 CFMutableDataRefObj_New, _rv); 3778 return _res; 3779 3779 } 3780 3780 3781 3781 static PyObject *CF_CFDataCreateMutableCopy(PyObject *_self, PyObject *_args) 3782 3782 { 3783 PyObject *_res = NULL;3784 CFMutableDataRef _rv;3785 CFIndex capacity;3786 CFDataRef theData;3783 PyObject *_res = NULL; 3784 CFMutableDataRef _rv; 3785 CFIndex capacity; 3786 CFDataRef theData; 3787 3787 #ifndef CFDataCreateMutableCopy 3788 PyMac_PRECHECK(CFDataCreateMutableCopy);3789 #endif 3790 if (!PyArg_ParseTuple(_args, "lO&",3791 &capacity,3792 CFDataRefObj_Convert, &theData))3793 return NULL;3794 _rv = CFDataCreateMutableCopy((CFAllocatorRef)NULL,3795 capacity,3796 theData);3797 _res = Py_BuildValue("O&",3798 CFMutableDataRefObj_New, _rv);3799 return _res;3788 PyMac_PRECHECK(CFDataCreateMutableCopy); 3789 #endif 3790 if (!PyArg_ParseTuple(_args, "lO&", 3791 &capacity, 3792 CFDataRefObj_Convert, &theData)) 3793 return NULL; 3794 _rv = CFDataCreateMutableCopy((CFAllocatorRef)NULL, 3795 capacity, 3796 theData); 3797 _res = Py_BuildValue("O&", 3798 CFMutableDataRefObj_New, _rv); 3799 return _res; 3800 3800 } 3801 3801 3802 3802 static PyObject *CF_CFDictionaryGetTypeID(PyObject *_self, PyObject *_args) 3803 3803 { 3804 PyObject *_res = NULL;3805 CFTypeID _rv;3804 PyObject *_res = NULL; 3805 CFTypeID _rv; 3806 3806 #ifndef CFDictionaryGetTypeID 3807 PyMac_PRECHECK(CFDictionaryGetTypeID);3808 #endif 3809 if (!PyArg_ParseTuple(_args, ""))3810 return NULL;3811 _rv = CFDictionaryGetTypeID();3812 _res = Py_BuildValue("l",3813 _rv);3814 return _res;3807 PyMac_PRECHECK(CFDictionaryGetTypeID); 3808 #endif 3809 if (!PyArg_ParseTuple(_args, "")) 3810 return NULL; 3811 _rv = CFDictionaryGetTypeID(); 3812 _res = Py_BuildValue("l", 3813 _rv); 3814 return _res; 3815 3815 } 3816 3816 3817 3817 static PyObject *CF_CFDictionaryCreateMutable(PyObject *_self, PyObject *_args) 3818 3818 { 3819 PyObject *_res = NULL;3820 CFMutableDictionaryRef _rv;3821 CFIndex capacity;3819 PyObject *_res = NULL; 3820 CFMutableDictionaryRef _rv; 3821 CFIndex capacity; 3822 3822 #ifndef CFDictionaryCreateMutable 3823 PyMac_PRECHECK(CFDictionaryCreateMutable);3824 #endif 3825 if (!PyArg_ParseTuple(_args, "l",3826 &capacity))3827 return NULL;3828 _rv = CFDictionaryCreateMutable((CFAllocatorRef)NULL,3829 capacity,3830 &kCFTypeDictionaryKeyCallBacks,3831 &kCFTypeDictionaryValueCallBacks);3832 _res = Py_BuildValue("O&",3833 CFMutableDictionaryRefObj_New, _rv);3834 return _res;3823 PyMac_PRECHECK(CFDictionaryCreateMutable); 3824 #endif 3825 if (!PyArg_ParseTuple(_args, "l", 3826 &capacity)) 3827 return NULL; 3828 _rv = CFDictionaryCreateMutable((CFAllocatorRef)NULL, 3829 capacity, 3830 &kCFTypeDictionaryKeyCallBacks, 3831 &kCFTypeDictionaryValueCallBacks); 3832 _res = Py_BuildValue("O&", 3833 CFMutableDictionaryRefObj_New, _rv); 3834 return _res; 3835 3835 } 3836 3836 3837 3837 static PyObject *CF_CFDictionaryCreateMutableCopy(PyObject *_self, PyObject *_args) 3838 3838 { 3839 PyObject *_res = NULL;3840 CFMutableDictionaryRef _rv;3841 CFIndex capacity;3842 CFDictionaryRef theDict;3839 PyObject *_res = NULL; 3840 CFMutableDictionaryRef _rv; 3841 CFIndex capacity; 3842 CFDictionaryRef theDict; 3843 3843 #ifndef CFDictionaryCreateMutableCopy 3844 PyMac_PRECHECK(CFDictionaryCreateMutableCopy);3845 #endif 3846 if (!PyArg_ParseTuple(_args, "lO&",3847 &capacity,3848 CFDictionaryRefObj_Convert, &theDict))3849 return NULL;3850 _rv = CFDictionaryCreateMutableCopy((CFAllocatorRef)NULL,3851 capacity,3852 theDict);3853 _res = Py_BuildValue("O&",3854 CFMutableDictionaryRefObj_New, _rv);3855 return _res;3844 PyMac_PRECHECK(CFDictionaryCreateMutableCopy); 3845 #endif 3846 if (!PyArg_ParseTuple(_args, "lO&", 3847 &capacity, 3848 CFDictionaryRefObj_Convert, &theDict)) 3849 return NULL; 3850 _rv = CFDictionaryCreateMutableCopy((CFAllocatorRef)NULL, 3851 capacity, 3852 theDict); 3853 _res = Py_BuildValue("O&", 3854 CFMutableDictionaryRefObj_New, _rv); 3855 return _res; 3856 3856 } 3857 3857 3858 3858 static PyObject *CF_CFPreferencesCopyAppValue(PyObject *_self, PyObject *_args) 3859 3859 { 3860 PyObject *_res = NULL;3861 CFTypeRef _rv;3862 CFStringRef key;3863 CFStringRef applicationID;3860 PyObject *_res = NULL; 3861 CFTypeRef _rv; 3862 CFStringRef key; 3863 CFStringRef applicationID; 3864 3864 #ifndef CFPreferencesCopyAppValue 3865 PyMac_PRECHECK(CFPreferencesCopyAppValue);3866 #endif 3867 if (!PyArg_ParseTuple(_args, "O&O&",3868 CFStringRefObj_Convert, &key,3869 CFStringRefObj_Convert, &applicationID))3870 return NULL;3871 _rv = CFPreferencesCopyAppValue(key,3872 applicationID);3873 _res = Py_BuildValue("O&",3874 CFTypeRefObj_New, _rv);3875 return _res;3865 PyMac_PRECHECK(CFPreferencesCopyAppValue); 3866 #endif 3867 if (!PyArg_ParseTuple(_args, "O&O&", 3868 CFStringRefObj_Convert, &key, 3869 CFStringRefObj_Convert, &applicationID)) 3870 return NULL; 3871 _rv = CFPreferencesCopyAppValue(key, 3872 applicationID); 3873 _res = Py_BuildValue("O&", 3874 CFTypeRefObj_New, _rv); 3875 return _res; 3876 3876 } 3877 3877 3878 3878 static PyObject *CF_CFPreferencesGetAppBooleanValue(PyObject *_self, PyObject *_args) 3879 3879 { 3880 PyObject *_res = NULL;3881 Boolean _rv;3882 CFStringRef key;3883 CFStringRef applicationID;3884 Boolean keyExistsAndHasValidFormat;3880 PyObject *_res = NULL; 3881 Boolean _rv; 3882 CFStringRef key; 3883 CFStringRef applicationID; 3884 Boolean keyExistsAndHasValidFormat; 3885 3885 #ifndef CFPreferencesGetAppBooleanValue 3886 PyMac_PRECHECK(CFPreferencesGetAppBooleanValue);3887 #endif 3888 if (!PyArg_ParseTuple(_args, "O&O&",3889 CFStringRefObj_Convert, &key,3890 CFStringRefObj_Convert, &applicationID))3891 return NULL;3892 _rv = CFPreferencesGetAppBooleanValue(key,3893 applicationID,3894 &keyExistsAndHasValidFormat);3895 _res = Py_BuildValue("ll",3896 _rv,3897 keyExistsAndHasValidFormat);3898 return _res;3886 PyMac_PRECHECK(CFPreferencesGetAppBooleanValue); 3887 #endif 3888 if (!PyArg_ParseTuple(_args, "O&O&", 3889 CFStringRefObj_Convert, &key, 3890 CFStringRefObj_Convert, &applicationID)) 3891 return NULL; 3892 _rv = CFPreferencesGetAppBooleanValue(key, 3893 applicationID, 3894 &keyExistsAndHasValidFormat); 3895 _res = Py_BuildValue("ll", 3896 _rv, 3897 keyExistsAndHasValidFormat); 3898 return _res; 3899 3899 } 3900 3900 3901 3901 static PyObject *CF_CFPreferencesGetAppIntegerValue(PyObject *_self, PyObject *_args) 3902 3902 { 3903 PyObject *_res = NULL;3904 CFIndex _rv;3905 CFStringRef key;3906 CFStringRef applicationID;3907 Boolean keyExistsAndHasValidFormat;3903 PyObject *_res = NULL; 3904 CFIndex _rv; 3905 CFStringRef key; 3906 CFStringRef applicationID; 3907 Boolean keyExistsAndHasValidFormat; 3908 3908 #ifndef CFPreferencesGetAppIntegerValue 3909 PyMac_PRECHECK(CFPreferencesGetAppIntegerValue);3910 #endif 3911 if (!PyArg_ParseTuple(_args, "O&O&",3912 CFStringRefObj_Convert, &key,3913 CFStringRefObj_Convert, &applicationID))3914 return NULL;3915 _rv = CFPreferencesGetAppIntegerValue(key,3916 applicationID,3917 &keyExistsAndHasValidFormat);3918 _res = Py_BuildValue("ll",3919 _rv,3920 keyExistsAndHasValidFormat);3921 return _res;3909 PyMac_PRECHECK(CFPreferencesGetAppIntegerValue); 3910 #endif 3911 if (!PyArg_ParseTuple(_args, "O&O&", 3912 CFStringRefObj_Convert, &key, 3913 CFStringRefObj_Convert, &applicationID)) 3914 return NULL; 3915 _rv = CFPreferencesGetAppIntegerValue(key, 3916 applicationID, 3917 &keyExistsAndHasValidFormat); 3918 _res = Py_BuildValue("ll", 3919 _rv, 3920 keyExistsAndHasValidFormat); 3921 return _res; 3922 3922 } 3923 3923 3924 3924 static PyObject *CF_CFPreferencesSetAppValue(PyObject *_self, PyObject *_args) 3925 3925 { 3926 PyObject *_res = NULL;3927 CFStringRef key;3928 CFTypeRef value;3929 CFStringRef applicationID;3926 PyObject *_res = NULL; 3927 CFStringRef key; 3928 CFTypeRef value; 3929 CFStringRef applicationID; 3930 3930 #ifndef CFPreferencesSetAppValue 3931 PyMac_PRECHECK(CFPreferencesSetAppValue);3932 #endif 3933 if (!PyArg_ParseTuple(_args, "O&O&O&",3934 CFStringRefObj_Convert, &key,3935 CFTypeRefObj_Convert, &value,3936 CFStringRefObj_Convert, &applicationID))3937 return NULL;3938 CFPreferencesSetAppValue(key,3939 value,3940 applicationID);3941 Py_INCREF(Py_None);3942 _res = Py_None;3943 return _res;3931 PyMac_PRECHECK(CFPreferencesSetAppValue); 3932 #endif 3933 if (!PyArg_ParseTuple(_args, "O&O&O&", 3934 CFStringRefObj_Convert, &key, 3935 CFTypeRefObj_Convert, &value, 3936 CFStringRefObj_Convert, &applicationID)) 3937 return NULL; 3938 CFPreferencesSetAppValue(key, 3939 value, 3940 applicationID); 3941 Py_INCREF(Py_None); 3942 _res = Py_None; 3943 return _res; 3944 3944 } 3945 3945 3946 3946 static PyObject *CF_CFPreferencesAddSuitePreferencesToApp(PyObject *_self, PyObject *_args) 3947 3947 { 3948 PyObject *_res = NULL;3949 CFStringRef applicationID;3950 CFStringRef suiteID;3948 PyObject *_res = NULL; 3949 CFStringRef applicationID; 3950 CFStringRef suiteID; 3951 3951 #ifndef CFPreferencesAddSuitePreferencesToApp 3952 PyMac_PRECHECK(CFPreferencesAddSuitePreferencesToApp);3953 #endif 3954 if (!PyArg_ParseTuple(_args, "O&O&",3955 CFStringRefObj_Convert, &applicationID,3956 CFStringRefObj_Convert, &suiteID))3957 return NULL;3958 CFPreferencesAddSuitePreferencesToApp(applicationID,3959 suiteID);3960 Py_INCREF(Py_None);3961 _res = Py_None;3962 return _res;3952 PyMac_PRECHECK(CFPreferencesAddSuitePreferencesToApp); 3953 #endif 3954 if (!PyArg_ParseTuple(_args, "O&O&", 3955 CFStringRefObj_Convert, &applicationID, 3956 CFStringRefObj_Convert, &suiteID)) 3957 return NULL; 3958 CFPreferencesAddSuitePreferencesToApp(applicationID, 3959 suiteID); 3960 Py_INCREF(Py_None); 3961 _res = Py_None; 3962 return _res; 3963 3963 } 3964 3964 3965 3965 static PyObject *CF_CFPreferencesRemoveSuitePreferencesFromApp(PyObject *_self, PyObject *_args) 3966 3966 { 3967 PyObject *_res = NULL;3968 CFStringRef applicationID;3969 CFStringRef suiteID;3967 PyObject *_res = NULL; 3968 CFStringRef applicationID; 3969 CFStringRef suiteID; 3970 3970 #ifndef CFPreferencesRemoveSuitePreferencesFromApp 3971 PyMac_PRECHECK(CFPreferencesRemoveSuitePreferencesFromApp);3972 #endif 3973 if (!PyArg_ParseTuple(_args, "O&O&",3974 CFStringRefObj_Convert, &applicationID,3975 CFStringRefObj_Convert, &suiteID))3976 return NULL;3977 CFPreferencesRemoveSuitePreferencesFromApp(applicationID,3978 suiteID);3979 Py_INCREF(Py_None);3980 _res = Py_None;3981 return _res;3971 PyMac_PRECHECK(CFPreferencesRemoveSuitePreferencesFromApp); 3972 #endif 3973 if (!PyArg_ParseTuple(_args, "O&O&", 3974 CFStringRefObj_Convert, &applicationID, 3975 CFStringRefObj_Convert, &suiteID)) 3976 return NULL; 3977 CFPreferencesRemoveSuitePreferencesFromApp(applicationID, 3978 suiteID); 3979 Py_INCREF(Py_None); 3980 _res = Py_None; 3981 return _res; 3982 3982 } 3983 3983 3984 3984 static PyObject *CF_CFPreferencesAppSynchronize(PyObject *_self, PyObject *_args) 3985 3985 { 3986 PyObject *_res = NULL;3987 Boolean _rv;3988 CFStringRef applicationID;3986 PyObject *_res = NULL; 3987 Boolean _rv; 3988 CFStringRef applicationID; 3989 3989 #ifndef CFPreferencesAppSynchronize 3990 PyMac_PRECHECK(CFPreferencesAppSynchronize);3991 #endif 3992 if (!PyArg_ParseTuple(_args, "O&",3993 CFStringRefObj_Convert, &applicationID))3994 return NULL;3995 _rv = CFPreferencesAppSynchronize(applicationID);3996 _res = Py_BuildValue("l",3997 _rv);3998 return _res;3990 PyMac_PRECHECK(CFPreferencesAppSynchronize); 3991 #endif 3992 if (!PyArg_ParseTuple(_args, "O&", 3993 CFStringRefObj_Convert, &applicationID)) 3994 return NULL; 3995 _rv = CFPreferencesAppSynchronize(applicationID); 3996 _res = Py_BuildValue("l", 3997 _rv); 3998 return _res; 3999 3999 } 4000 4000 4001 4001 static PyObject *CF_CFPreferencesCopyValue(PyObject *_self, PyObject *_args) 4002 4002 { 4003 PyObject *_res = NULL;4004 CFTypeRef _rv;4005 CFStringRef key;4006 CFStringRef applicationID;4007 CFStringRef userName;4008 CFStringRef hostName;4003 PyObject *_res = NULL; 4004 CFTypeRef _rv; 4005 CFStringRef key; 4006 CFStringRef applicationID; 4007 CFStringRef userName; 4008 CFStringRef hostName; 4009 4009 #ifndef CFPreferencesCopyValue 4010 PyMac_PRECHECK(CFPreferencesCopyValue);4011 #endif 4012 if (!PyArg_ParseTuple(_args, "O&O&O&O&",4013 CFStringRefObj_Convert, &key,4014 CFStringRefObj_Convert, &applicationID,4015 CFStringRefObj_Convert, &userName,4016 CFStringRefObj_Convert, &hostName))4017 return NULL;4018 _rv = CFPreferencesCopyValue(key,4019 applicationID,4020 userName,4021 hostName);4022 _res = Py_BuildValue("O&",4023 CFTypeRefObj_New, _rv);4024 return _res;4010 PyMac_PRECHECK(CFPreferencesCopyValue); 4011 #endif 4012 if (!PyArg_ParseTuple(_args, "O&O&O&O&", 4013 CFStringRefObj_Convert, &key, 4014 CFStringRefObj_Convert, &applicationID, 4015 CFStringRefObj_Convert, &userName, 4016 CFStringRefObj_Convert, &hostName)) 4017 return NULL; 4018 _rv = CFPreferencesCopyValue(key, 4019 applicationID, 4020 userName, 4021 hostName); 4022 _res = Py_BuildValue("O&", 4023 CFTypeRefObj_New, _rv); 4024 return _res; 4025 4025 } 4026 4026 4027 4027 static PyObject *CF_CFPreferencesCopyMultiple(PyObject *_self, PyObject *_args) 4028 4028 { 4029 PyObject *_res = NULL;4030 CFDictionaryRef _rv;4031 CFArrayRef keysToFetch;4032 CFStringRef applicationID;4033 CFStringRef userName;4034 CFStringRef hostName;4029 PyObject *_res = NULL; 4030 CFDictionaryRef _rv; 4031 CFArrayRef keysToFetch; 4032 CFStringRef applicationID; 4033 CFStringRef userName; 4034 CFStringRef hostName; 4035 4035 #ifndef CFPreferencesCopyMultiple 4036 PyMac_PRECHECK(CFPreferencesCopyMultiple);4037 #endif 4038 if (!PyArg_ParseTuple(_args, "O&O&O&O&",4039 CFArrayRefObj_Convert, &keysToFetch,4040 CFStringRefObj_Convert, &applicationID,4041 CFStringRefObj_Convert, &userName,4042 CFStringRefObj_Convert, &hostName))4043 return NULL;4044 _rv = CFPreferencesCopyMultiple(keysToFetch,4045 applicationID,4046 userName,4047 hostName);4048 _res = Py_BuildValue("O&",4049 CFDictionaryRefObj_New, _rv);4050 return _res;4036 PyMac_PRECHECK(CFPreferencesCopyMultiple); 4037 #endif 4038 if (!PyArg_ParseTuple(_args, "O&O&O&O&", 4039 CFArrayRefObj_Convert, &keysToFetch, 4040 CFStringRefObj_Convert, &applicationID, 4041 CFStringRefObj_Convert, &userName, 4042 CFStringRefObj_Convert, &hostName)) 4043 return NULL; 4044 _rv = CFPreferencesCopyMultiple(keysToFetch, 4045 applicationID, 4046 userName, 4047 hostName); 4048 _res = Py_BuildValue("O&", 4049 CFDictionaryRefObj_New, _rv); 4050 return _res; 4051 4051 } 4052 4052 4053 4053 static PyObject *CF_CFPreferencesSetValue(PyObject *_self, PyObject *_args) 4054 4054 { 4055 PyObject *_res = NULL;4056 CFStringRef key;4057 CFTypeRef value;4058 CFStringRef applicationID;4059 CFStringRef userName;4060 CFStringRef hostName;4055 PyObject *_res = NULL; 4056 CFStringRef key; 4057 CFTypeRef value; 4058 CFStringRef applicationID; 4059 CFStringRef userName; 4060 CFStringRef hostName; 4061 4061 #ifndef CFPreferencesSetValue 4062 PyMac_PRECHECK(CFPreferencesSetValue);4063 #endif 4064 if (!PyArg_ParseTuple(_args, "O&O&O&O&O&",4065 CFStringRefObj_Convert, &key,4066 CFTypeRefObj_Convert, &value,4067 CFStringRefObj_Convert, &applicationID,4068 CFStringRefObj_Convert, &userName,4069 CFStringRefObj_Convert, &hostName))4070 return NULL;4071 CFPreferencesSetValue(key,4072 value,4073 applicationID,4074 userName,4075 hostName);4076 Py_INCREF(Py_None);4077 _res = Py_None;4078 return _res;4062 PyMac_PRECHECK(CFPreferencesSetValue); 4063 #endif 4064 if (!PyArg_ParseTuple(_args, "O&O&O&O&O&", 4065 CFStringRefObj_Convert, &key, 4066 CFTypeRefObj_Convert, &value, 4067 CFStringRefObj_Convert, &applicationID, 4068 CFStringRefObj_Convert, &userName, 4069 CFStringRefObj_Convert, &hostName)) 4070 return NULL; 4071 CFPreferencesSetValue(key, 4072 value, 4073 applicationID, 4074 userName, 4075 hostName); 4076 Py_INCREF(Py_None); 4077 _res = Py_None; 4078 return _res; 4079 4079 } 4080 4080 4081 4081 static PyObject *CF_CFPreferencesSetMultiple(PyObject *_self, PyObject *_args) 4082 4082 { 4083 PyObject *_res = NULL;4084 CFDictionaryRef keysToSet;4085 CFArrayRef keysToRemove;4086 CFStringRef applicationID;4087 CFStringRef userName;4088 CFStringRef hostName;4083 PyObject *_res = NULL; 4084 CFDictionaryRef keysToSet; 4085 CFArrayRef keysToRemove; 4086 CFStringRef applicationID; 4087 CFStringRef userName; 4088 CFStringRef hostName; 4089 4089 #ifndef CFPreferencesSetMultiple 4090 PyMac_PRECHECK(CFPreferencesSetMultiple);4091 #endif 4092 if (!PyArg_ParseTuple(_args, "O&O&O&O&O&",4093 CFDictionaryRefObj_Convert, &keysToSet,4094 CFArrayRefObj_Convert, &keysToRemove,4095 CFStringRefObj_Convert, &applicationID,4096 CFStringRefObj_Convert, &userName,4097 CFStringRefObj_Convert, &hostName))4098 return NULL;4099 CFPreferencesSetMultiple(keysToSet,4100 keysToRemove,4101 applicationID,4102 userName,4103 hostName);4104 Py_INCREF(Py_None);4105 _res = Py_None;4106 return _res;4090 PyMac_PRECHECK(CFPreferencesSetMultiple); 4091 #endif 4092 if (!PyArg_ParseTuple(_args, "O&O&O&O&O&", 4093 CFDictionaryRefObj_Convert, &keysToSet, 4094 CFArrayRefObj_Convert, &keysToRemove, 4095 CFStringRefObj_Convert, &applicationID, 4096 CFStringRefObj_Convert, &userName, 4097 CFStringRefObj_Convert, &hostName)) 4098 return NULL; 4099 CFPreferencesSetMultiple(keysToSet, 4100 keysToRemove, 4101 applicationID, 4102 userName, 4103 hostName); 4104 Py_INCREF(Py_None); 4105 _res = Py_None; 4106 return _res; 4107 4107 } 4108 4108 4109 4109 static PyObject *CF_CFPreferencesSynchronize(PyObject *_self, PyObject *_args) 4110 4110 { 4111 PyObject *_res = NULL;4112 Boolean _rv;4113 CFStringRef applicationID;4114 CFStringRef userName;4115 CFStringRef hostName;4111 PyObject *_res = NULL; 4112 Boolean _rv; 4113 CFStringRef applicationID; 4114 CFStringRef userName; 4115 CFStringRef hostName; 4116 4116 #ifndef CFPreferencesSynchronize 4117 PyMac_PRECHECK(CFPreferencesSynchronize);4118 #endif 4119 if (!PyArg_ParseTuple(_args, "O&O&O&",4120 CFStringRefObj_Convert, &applicationID,4121 CFStringRefObj_Convert, &userName,4122 CFStringRefObj_Convert, &hostName))4123 return NULL;4124 _rv = CFPreferencesSynchronize(applicationID,4125 userName,4126 hostName);4127 _res = Py_BuildValue("l",4128 _rv);4129 return _res;4117 PyMac_PRECHECK(CFPreferencesSynchronize); 4118 #endif 4119 if (!PyArg_ParseTuple(_args, "O&O&O&", 4120 CFStringRefObj_Convert, &applicationID, 4121 CFStringRefObj_Convert, &userName, 4122 CFStringRefObj_Convert, &hostName)) 4123 return NULL; 4124 _rv = CFPreferencesSynchronize(applicationID, 4125 userName, 4126 hostName); 4127 _res = Py_BuildValue("l", 4128 _rv); 4129 return _res; 4130 4130 } 4131 4131 4132 4132 static PyObject *CF_CFPreferencesCopyApplicationList(PyObject *_self, PyObject *_args) 4133 4133 { 4134 PyObject *_res = NULL;4135 CFArrayRef _rv;4136 CFStringRef userName;4137 CFStringRef hostName;4134 PyObject *_res = NULL; 4135 CFArrayRef _rv; 4136 CFStringRef userName; 4137 CFStringRef hostName; 4138 4138 #ifndef CFPreferencesCopyApplicationList 4139 PyMac_PRECHECK(CFPreferencesCopyApplicationList);4140 #endif 4141 if (!PyArg_ParseTuple(_args, "O&O&",4142 CFStringRefObj_Convert, &userName,4143 CFStringRefObj_Convert, &hostName))4144 return NULL;4145 _rv = CFPreferencesCopyApplicationList(userName,4146 hostName);4147 _res = Py_BuildValue("O&",4148 CFArrayRefObj_New, _rv);4149 return _res;4139 PyMac_PRECHECK(CFPreferencesCopyApplicationList); 4140 #endif 4141 if (!PyArg_ParseTuple(_args, "O&O&", 4142 CFStringRefObj_Convert, &userName, 4143 CFStringRefObj_Convert, &hostName)) 4144 return NULL; 4145 _rv = CFPreferencesCopyApplicationList(userName, 4146 hostName); 4147 _res = Py_BuildValue("O&", 4148 CFArrayRefObj_New, _rv); 4149 return _res; 4150 4150 } 4151 4151 4152 4152 static PyObject *CF_CFPreferencesCopyKeyList(PyObject *_self, PyObject *_args) 4153 4153 { 4154 PyObject *_res = NULL;4155 CFArrayRef _rv;4156 CFStringRef applicationID;4157 CFStringRef userName;4158 CFStringRef hostName;4154 PyObject *_res = NULL; 4155 CFArrayRef _rv; 4156 CFStringRef applicationID; 4157 CFStringRef userName; 4158 CFStringRef hostName; 4159 4159 #ifndef CFPreferencesCopyKeyList 4160 PyMac_PRECHECK(CFPreferencesCopyKeyList);4161 #endif 4162 if (!PyArg_ParseTuple(_args, "O&O&O&",4163 CFStringRefObj_Convert, &applicationID,4164 CFStringRefObj_Convert, &userName,4165 CFStringRefObj_Convert, &hostName))4166 return NULL;4167 _rv = CFPreferencesCopyKeyList(applicationID,4168 userName,4169 hostName);4170 _res = Py_BuildValue("O&",4171 CFArrayRefObj_New, _rv);4172 return _res;4160 PyMac_PRECHECK(CFPreferencesCopyKeyList); 4161 #endif 4162 if (!PyArg_ParseTuple(_args, "O&O&O&", 4163 CFStringRefObj_Convert, &applicationID, 4164 CFStringRefObj_Convert, &userName, 4165 CFStringRefObj_Convert, &hostName)) 4166 return NULL; 4167 _rv = CFPreferencesCopyKeyList(applicationID, 4168 userName, 4169 hostName); 4170 _res = Py_BuildValue("O&", 4171 CFArrayRefObj_New, _rv); 4172 return _res; 4173 4173 } 4174 4174 4175 4175 static PyObject *CF_CFStringGetTypeID(PyObject *_self, PyObject *_args) 4176 4176 { 4177 PyObject *_res = NULL;4178 CFTypeID _rv;4177 PyObject *_res = NULL; 4178 CFTypeID _rv; 4179 4179 #ifndef CFStringGetTypeID 4180 PyMac_PRECHECK(CFStringGetTypeID);4181 #endif 4182 if (!PyArg_ParseTuple(_args, ""))4183 return NULL;4184 _rv = CFStringGetTypeID();4185 _res = Py_BuildValue("l",4186 _rv);4187 return _res;4180 PyMac_PRECHECK(CFStringGetTypeID); 4181 #endif 4182 if (!PyArg_ParseTuple(_args, "")) 4183 return NULL; 4184 _rv = CFStringGetTypeID(); 4185 _res = Py_BuildValue("l", 4186 _rv); 4187 return _res; 4188 4188 } 4189 4189 4190 4190 static PyObject *CF_CFStringCreateWithPascalString(PyObject *_self, PyObject *_args) 4191 4191 { 4192 PyObject *_res = NULL;4193 CFStringRef _rv;4194 Str255 pStr;4195 CFStringEncoding encoding;4192 PyObject *_res = NULL; 4193 CFStringRef _rv; 4194 Str255 pStr; 4195 CFStringEncoding encoding; 4196 4196 #ifndef CFStringCreateWithPascalString 4197 PyMac_PRECHECK(CFStringCreateWithPascalString);4198 #endif 4199 if (!PyArg_ParseTuple(_args, "O&l",4200 PyMac_GetStr255, pStr,4201 &encoding))4202 return NULL;4203 _rv = CFStringCreateWithPascalString((CFAllocatorRef)NULL,4204 pStr,4205 encoding);4206 _res = Py_BuildValue("O&",4207 CFStringRefObj_New, _rv);4208 return _res;4197 PyMac_PRECHECK(CFStringCreateWithPascalString); 4198 #endif 4199 if (!PyArg_ParseTuple(_args, "O&l", 4200 PyMac_GetStr255, pStr, 4201 &encoding)) 4202 return NULL; 4203 _rv = CFStringCreateWithPascalString((CFAllocatorRef)NULL, 4204 pStr, 4205 encoding); 4206 _res = Py_BuildValue("O&", 4207 CFStringRefObj_New, _rv); 4208 return _res; 4209 4209 } 4210 4210 4211 4211 static PyObject *CF_CFStringCreateWithCString(PyObject *_self, PyObject *_args) 4212 4212 { 4213 PyObject *_res = NULL;4214 CFStringRef _rv;4215 char* cStr;4216 CFStringEncoding encoding;4213 PyObject *_res = NULL; 4214 CFStringRef _rv; 4215 char* cStr; 4216 CFStringEncoding encoding; 4217 4217 #ifndef CFStringCreateWithCString 4218 PyMac_PRECHECK(CFStringCreateWithCString);4219 #endif 4220 if (!PyArg_ParseTuple(_args, "sl",4221 &cStr,4222 &encoding))4223 return NULL;4224 _rv = CFStringCreateWithCString((CFAllocatorRef)NULL,4225 cStr,4226 encoding);4227 _res = Py_BuildValue("O&",4228 CFStringRefObj_New, _rv);4229 return _res;4218 PyMac_PRECHECK(CFStringCreateWithCString); 4219 #endif 4220 if (!PyArg_ParseTuple(_args, "sl", 4221 &cStr, 4222 &encoding)) 4223 return NULL; 4224 _rv = CFStringCreateWithCString((CFAllocatorRef)NULL, 4225 cStr, 4226 encoding); 4227 _res = Py_BuildValue("O&", 4228 CFStringRefObj_New, _rv); 4229 return _res; 4230 4230 } 4231 4231 4232 4232 static PyObject *CF_CFStringCreateWithCharacters(PyObject *_self, PyObject *_args) 4233 4233 { 4234 PyObject *_res = NULL;4235 CFStringRef _rv;4236 UniChar *chars__in__;4237 UniCharCount chars__len__;4238 int chars__in_len__;4234 PyObject *_res = NULL; 4235 CFStringRef _rv; 4236 UniChar *chars__in__; 4237 UniCharCount chars__len__; 4238 int chars__in_len__; 4239 4239 #ifndef CFStringCreateWithCharacters 4240 PyMac_PRECHECK(CFStringCreateWithCharacters);4241 #endif 4242 if (!PyArg_ParseTuple(_args, "u#",4243 &chars__in__, &chars__in_len__))4244 return NULL;4245 chars__len__ = chars__in_len__;4246 _rv = CFStringCreateWithCharacters((CFAllocatorRef)NULL,4247 chars__in__, chars__len__);4248 _res = Py_BuildValue("O&",4249 CFStringRefObj_New, _rv);4250 return _res;4240 PyMac_PRECHECK(CFStringCreateWithCharacters); 4241 #endif 4242 if (!PyArg_ParseTuple(_args, "u#", 4243 &chars__in__, &chars__in_len__)) 4244 return NULL; 4245 chars__len__ = chars__in_len__; 4246 _rv = CFStringCreateWithCharacters((CFAllocatorRef)NULL, 4247 chars__in__, chars__len__); 4248 _res = Py_BuildValue("O&", 4249 CFStringRefObj_New, _rv); 4250 return _res; 4251 4251 } 4252 4252 4253 4253 static PyObject *CF_CFStringCreateWithPascalStringNoCopy(PyObject *_self, PyObject *_args) 4254 4254 { 4255 PyObject *_res = NULL;4256 CFStringRef _rv;4257 Str255 pStr;4258 CFStringEncoding encoding;4255 PyObject *_res = NULL; 4256 CFStringRef _rv; 4257 Str255 pStr; 4258 CFStringEncoding encoding; 4259 4259 #ifndef CFStringCreateWithPascalStringNoCopy 4260 PyMac_PRECHECK(CFStringCreateWithPascalStringNoCopy);4261 #endif 4262 if (!PyArg_ParseTuple(_args, "O&l",4263 PyMac_GetStr255, pStr,4264 &encoding))4265 return NULL;4266 _rv = CFStringCreateWithPascalStringNoCopy((CFAllocatorRef)NULL,4267 pStr,4268 encoding,4269 (CFAllocatorRef)NULL);4270 _res = Py_BuildValue("O&",4271 CFStringRefObj_New, _rv);4272 return _res;4260 PyMac_PRECHECK(CFStringCreateWithPascalStringNoCopy); 4261 #endif 4262 if (!PyArg_ParseTuple(_args, "O&l", 4263 PyMac_GetStr255, pStr, 4264 &encoding)) 4265 return NULL; 4266 _rv = CFStringCreateWithPascalStringNoCopy((CFAllocatorRef)NULL, 4267 pStr, 4268 encoding, 4269 (CFAllocatorRef)NULL); 4270 _res = Py_BuildValue("O&", 4271 CFStringRefObj_New, _rv); 4272 return _res; 4273 4273 } 4274 4274 4275 4275 static PyObject *CF_CFStringCreateWithCStringNoCopy(PyObject *_self, PyObject *_args) 4276 4276 { 4277 PyObject *_res = NULL;4278 CFStringRef _rv;4279 char* cStr;4280 CFStringEncoding encoding;4277 PyObject *_res = NULL; 4278 CFStringRef _rv; 4279 char* cStr; 4280 CFStringEncoding encoding; 4281 4281 #ifndef CFStringCreateWithCStringNoCopy 4282 PyMac_PRECHECK(CFStringCreateWithCStringNoCopy);4283 #endif 4284 if (!PyArg_ParseTuple(_args, "sl",4285 &cStr,4286 &encoding))4287 return NULL;4288 _rv = CFStringCreateWithCStringNoCopy((CFAllocatorRef)NULL,4289 cStr,4290 encoding,4291 (CFAllocatorRef)NULL);4292 _res = Py_BuildValue("O&",4293 CFStringRefObj_New, _rv);4294 return _res;4282 PyMac_PRECHECK(CFStringCreateWithCStringNoCopy); 4283 #endif 4284 if (!PyArg_ParseTuple(_args, "sl", 4285 &cStr, 4286 &encoding)) 4287 return NULL; 4288 _rv = CFStringCreateWithCStringNoCopy((CFAllocatorRef)NULL, 4289 cStr, 4290 encoding, 4291 (CFAllocatorRef)NULL); 4292 _res = Py_BuildValue("O&", 4293 CFStringRefObj_New, _rv); 4294 return _res; 4295 4295 } 4296 4296 4297 4297 static PyObject *CF_CFStringCreateWithCharactersNoCopy(PyObject *_self, PyObject *_args) 4298 4298 { 4299 PyObject *_res = NULL;4300 CFStringRef _rv;4301 UniChar *chars__in__;4302 UniCharCount chars__len__;4303 int chars__in_len__;4299 PyObject *_res = NULL; 4300 CFStringRef _rv; 4301 UniChar *chars__in__; 4302 UniCharCount chars__len__; 4303 int chars__in_len__; 4304 4304 #ifndef CFStringCreateWithCharactersNoCopy 4305 PyMac_PRECHECK(CFStringCreateWithCharactersNoCopy);4306 #endif 4307 if (!PyArg_ParseTuple(_args, "u#",4308 &chars__in__, &chars__in_len__))4309 return NULL;4310 chars__len__ = chars__in_len__;4311 _rv = CFStringCreateWithCharactersNoCopy((CFAllocatorRef)NULL,4312 chars__in__, chars__len__,4313 (CFAllocatorRef)NULL);4314 _res = Py_BuildValue("O&",4315 CFStringRefObj_New, _rv);4316 return _res;4305 PyMac_PRECHECK(CFStringCreateWithCharactersNoCopy); 4306 #endif 4307 if (!PyArg_ParseTuple(_args, "u#", 4308 &chars__in__, &chars__in_len__)) 4309 return NULL; 4310 chars__len__ = chars__in_len__; 4311 _rv = CFStringCreateWithCharactersNoCopy((CFAllocatorRef)NULL, 4312 chars__in__, chars__len__, 4313 (CFAllocatorRef)NULL); 4314 _res = Py_BuildValue("O&", 4315 CFStringRefObj_New, _rv); 4316 return _res; 4317 4317 } 4318 4318 4319 4319 static PyObject *CF_CFStringCreateMutable(PyObject *_self, PyObject *_args) 4320 4320 { 4321 PyObject *_res = NULL;4322 CFMutableStringRef _rv;4323 CFIndex maxLength;4321 PyObject *_res = NULL; 4322 CFMutableStringRef _rv; 4323 CFIndex maxLength; 4324 4324 #ifndef CFStringCreateMutable 4325 PyMac_PRECHECK(CFStringCreateMutable);4326 #endif 4327 if (!PyArg_ParseTuple(_args, "l",4328 &maxLength))4329 return NULL;4330 _rv = CFStringCreateMutable((CFAllocatorRef)NULL,4331 maxLength);4332 _res = Py_BuildValue("O&",4333 CFMutableStringRefObj_New, _rv);4334 return _res;4325 PyMac_PRECHECK(CFStringCreateMutable); 4326 #endif 4327 if (!PyArg_ParseTuple(_args, "l", 4328 &maxLength)) 4329 return NULL; 4330 _rv = CFStringCreateMutable((CFAllocatorRef)NULL, 4331 maxLength); 4332 _res = Py_BuildValue("O&", 4333 CFMutableStringRefObj_New, _rv); 4334 return _res; 4335 4335 } 4336 4336 4337 4337 static PyObject *CF_CFStringCreateMutableCopy(PyObject *_self, PyObject *_args) 4338 4338 { 4339 PyObject *_res = NULL;4340 CFMutableStringRef _rv;4341 CFIndex maxLength;4342 CFStringRef theString;4339 PyObject *_res = NULL; 4340 CFMutableStringRef _rv; 4341 CFIndex maxLength; 4342 CFStringRef theString; 4343 4343 #ifndef CFStringCreateMutableCopy 4344 PyMac_PRECHECK(CFStringCreateMutableCopy);4345 #endif 4346 if (!PyArg_ParseTuple(_args, "lO&",4347 &maxLength,4348 CFStringRefObj_Convert, &theString))4349 return NULL;4350 _rv = CFStringCreateMutableCopy((CFAllocatorRef)NULL,4351 maxLength,4352 theString);4353 _res = Py_BuildValue("O&",4354 CFMutableStringRefObj_New, _rv);4355 return _res;4344 PyMac_PRECHECK(CFStringCreateMutableCopy); 4345 #endif 4346 if (!PyArg_ParseTuple(_args, "lO&", 4347 &maxLength, 4348 CFStringRefObj_Convert, &theString)) 4349 return NULL; 4350 _rv = CFStringCreateMutableCopy((CFAllocatorRef)NULL, 4351 maxLength, 4352 theString); 4353 _res = Py_BuildValue("O&", 4354 CFMutableStringRefObj_New, _rv); 4355 return _res; 4356 4356 } 4357 4357 4358 4358 static PyObject *CF_CFStringCreateWithBytes(PyObject *_self, PyObject *_args) 4359 4359 { 4360 PyObject *_res = NULL;4361 CFStringRef _rv;4362 unsigned char *bytes__in__;4363 long bytes__len__;4364 int bytes__in_len__;4365 CFStringEncoding encoding;4366 Boolean isExternalRepresentation;4360 PyObject *_res = NULL; 4361 CFStringRef _rv; 4362 unsigned char *bytes__in__; 4363 long bytes__len__; 4364 int bytes__in_len__; 4365 CFStringEncoding encoding; 4366 Boolean isExternalRepresentation; 4367 4367 #ifndef CFStringCreateWithBytes 4368 PyMac_PRECHECK(CFStringCreateWithBytes);4369 #endif 4370 if (!PyArg_ParseTuple(_args, "s#ll",4371 &bytes__in__, &bytes__in_len__,4372 &encoding,4373 &isExternalRepresentation))4374 return NULL;4375 bytes__len__ = bytes__in_len__;4376 _rv = CFStringCreateWithBytes((CFAllocatorRef)NULL,4377 bytes__in__, bytes__len__,4378 encoding,4379 isExternalRepresentation);4380 _res = Py_BuildValue("O&",4381 CFStringRefObj_New, _rv);4382 return _res;4368 PyMac_PRECHECK(CFStringCreateWithBytes); 4369 #endif 4370 if (!PyArg_ParseTuple(_args, "s#ll", 4371 &bytes__in__, &bytes__in_len__, 4372 &encoding, 4373 &isExternalRepresentation)) 4374 return NULL; 4375 bytes__len__ = bytes__in_len__; 4376 _rv = CFStringCreateWithBytes((CFAllocatorRef)NULL, 4377 bytes__in__, bytes__len__, 4378 encoding, 4379 isExternalRepresentation); 4380 _res = Py_BuildValue("O&", 4381 CFStringRefObj_New, _rv); 4382 return _res; 4383 4383 } 4384 4384 4385 4385 static PyObject *CF_CFStringGetSystemEncoding(PyObject *_self, PyObject *_args) 4386 4386 { 4387 PyObject *_res = NULL;4388 CFStringEncoding _rv;4387 PyObject *_res = NULL; 4388 CFStringEncoding _rv; 4389 4389 #ifndef CFStringGetSystemEncoding 4390 PyMac_PRECHECK(CFStringGetSystemEncoding);4391 #endif 4392 if (!PyArg_ParseTuple(_args, ""))4393 return NULL;4394 _rv = CFStringGetSystemEncoding();4395 _res = Py_BuildValue("l",4396 _rv);4397 return _res;4390 PyMac_PRECHECK(CFStringGetSystemEncoding); 4391 #endif 4392 if (!PyArg_ParseTuple(_args, "")) 4393 return NULL; 4394 _rv = CFStringGetSystemEncoding(); 4395 _res = Py_BuildValue("l", 4396 _rv); 4397 return _res; 4398 4398 } 4399 4399 4400 4400 static PyObject *CF_CFStringGetMaximumSizeForEncoding(PyObject *_self, PyObject *_args) 4401 4401 { 4402 PyObject *_res = NULL;4403 CFIndex _rv;4404 CFIndex length;4405 CFStringEncoding encoding;4402 PyObject *_res = NULL; 4403 CFIndex _rv; 4404 CFIndex length; 4405 CFStringEncoding encoding; 4406 4406 #ifndef CFStringGetMaximumSizeForEncoding 4407 PyMac_PRECHECK(CFStringGetMaximumSizeForEncoding);4408 #endif 4409 if (!PyArg_ParseTuple(_args, "ll",4410 &length,4411 &encoding))4412 return NULL;4413 _rv = CFStringGetMaximumSizeForEncoding(length,4414 encoding);4415 _res = Py_BuildValue("l",4416 _rv);4417 return _res;4407 PyMac_PRECHECK(CFStringGetMaximumSizeForEncoding); 4408 #endif 4409 if (!PyArg_ParseTuple(_args, "ll", 4410 &length, 4411 &encoding)) 4412 return NULL; 4413 _rv = CFStringGetMaximumSizeForEncoding(length, 4414 encoding); 4415 _res = Py_BuildValue("l", 4416 _rv); 4417 return _res; 4418 4418 } 4419 4419 4420 4420 static PyObject *CF_CFStringIsEncodingAvailable(PyObject *_self, PyObject *_args) 4421 4421 { 4422 PyObject *_res = NULL;4423 Boolean _rv;4424 CFStringEncoding encoding;4422 PyObject *_res = NULL; 4423 Boolean _rv; 4424 CFStringEncoding encoding; 4425 4425 #ifndef CFStringIsEncodingAvailable 4426 PyMac_PRECHECK(CFStringIsEncodingAvailable);4427 #endif 4428 if (!PyArg_ParseTuple(_args, "l",4429 &encoding))4430 return NULL;4431 _rv = CFStringIsEncodingAvailable(encoding);4432 _res = Py_BuildValue("l",4433 _rv);4434 return _res;4426 PyMac_PRECHECK(CFStringIsEncodingAvailable); 4427 #endif 4428 if (!PyArg_ParseTuple(_args, "l", 4429 &encoding)) 4430 return NULL; 4431 _rv = CFStringIsEncodingAvailable(encoding); 4432 _res = Py_BuildValue("l", 4433 _rv); 4434 return _res; 4435 4435 } 4436 4436 4437 4437 static PyObject *CF_CFStringGetNameOfEncoding(PyObject *_self, PyObject *_args) 4438 4438 { 4439 PyObject *_res = NULL;4440 CFStringRef _rv;4441 CFStringEncoding encoding;4439 PyObject *_res = NULL; 4440 CFStringRef _rv; 4441 CFStringEncoding encoding; 4442 4442 #ifndef CFStringGetNameOfEncoding 4443 PyMac_PRECHECK(CFStringGetNameOfEncoding);4444 #endif 4445 if (!PyArg_ParseTuple(_args, "l",4446 &encoding))4447 return NULL;4448 _rv = CFStringGetNameOfEncoding(encoding);4449 _res = Py_BuildValue("O&",4450 CFStringRefObj_New, _rv);4451 return _res;4443 PyMac_PRECHECK(CFStringGetNameOfEncoding); 4444 #endif 4445 if (!PyArg_ParseTuple(_args, "l", 4446 &encoding)) 4447 return NULL; 4448 _rv = CFStringGetNameOfEncoding(encoding); 4449 _res = Py_BuildValue("O&", 4450 CFStringRefObj_New, _rv); 4451 return _res; 4452 4452 } 4453 4453 4454 4454 static PyObject *CF_CFStringConvertEncodingToNSStringEncoding(PyObject *_self, PyObject *_args) 4455 4455 { 4456 PyObject *_res = NULL;4457 UInt32 _rv;4458 CFStringEncoding encoding;4456 PyObject *_res = NULL; 4457 UInt32 _rv; 4458 CFStringEncoding encoding; 4459 4459 #ifndef CFStringConvertEncodingToNSStringEncoding 4460 PyMac_PRECHECK(CFStringConvertEncodingToNSStringEncoding);4461 #endif 4462 if (!PyArg_ParseTuple(_args, "l",4463 &encoding))4464 return NULL;4465 _rv = CFStringConvertEncodingToNSStringEncoding(encoding);4466 _res = Py_BuildValue("l",4467 _rv);4468 return _res;4460 PyMac_PRECHECK(CFStringConvertEncodingToNSStringEncoding); 4461 #endif 4462 if (!PyArg_ParseTuple(_args, "l", 4463 &encoding)) 4464 return NULL; 4465 _rv = CFStringConvertEncodingToNSStringEncoding(encoding); 4466 _res = Py_BuildValue("l", 4467 _rv); 4468 return _res; 4469 4469 } 4470 4470 4471 4471 static PyObject *CF_CFStringConvertNSStringEncodingToEncoding(PyObject *_self, PyObject *_args) 4472 4472 { 4473 PyObject *_res = NULL;4474 CFStringEncoding _rv;4475 UInt32 encoding;4473 PyObject *_res = NULL; 4474 CFStringEncoding _rv; 4475 UInt32 encoding; 4476 4476 #ifndef CFStringConvertNSStringEncodingToEncoding 4477 PyMac_PRECHECK(CFStringConvertNSStringEncodingToEncoding);4478 #endif 4479 if (!PyArg_ParseTuple(_args, "l",4480 &encoding))4481 return NULL;4482 _rv = CFStringConvertNSStringEncodingToEncoding(encoding);4483 _res = Py_BuildValue("l",4484 _rv);4485 return _res;4477 PyMac_PRECHECK(CFStringConvertNSStringEncodingToEncoding); 4478 #endif 4479 if (!PyArg_ParseTuple(_args, "l", 4480 &encoding)) 4481 return NULL; 4482 _rv = CFStringConvertNSStringEncodingToEncoding(encoding); 4483 _res = Py_BuildValue("l", 4484 _rv); 4485 return _res; 4486 4486 } 4487 4487 4488 4488 static PyObject *CF_CFStringConvertEncodingToWindowsCodepage(PyObject *_self, PyObject *_args) 4489 4489 { 4490 PyObject *_res = NULL;4491 UInt32 _rv;4492 CFStringEncoding encoding;4490 PyObject *_res = NULL; 4491 UInt32 _rv; 4492 CFStringEncoding encoding; 4493 4493 #ifndef CFStringConvertEncodingToWindowsCodepage 4494 PyMac_PRECHECK(CFStringConvertEncodingToWindowsCodepage);4495 #endif 4496 if (!PyArg_ParseTuple(_args, "l",4497 &encoding))4498 return NULL;4499 _rv = CFStringConvertEncodingToWindowsCodepage(encoding);4500 _res = Py_BuildValue("l",4501 _rv);4502 return _res;4494 PyMac_PRECHECK(CFStringConvertEncodingToWindowsCodepage); 4495 #endif 4496 if (!PyArg_ParseTuple(_args, "l", 4497 &encoding)) 4498 return NULL; 4499 _rv = CFStringConvertEncodingToWindowsCodepage(encoding); 4500 _res = Py_BuildValue("l", 4501 _rv); 4502 return _res; 4503 4503 } 4504 4504 4505 4505 static PyObject *CF_CFStringConvertWindowsCodepageToEncoding(PyObject *_self, PyObject *_args) 4506 4506 { 4507 PyObject *_res = NULL;4508 CFStringEncoding _rv;4509 UInt32 codepage;4507 PyObject *_res = NULL; 4508 CFStringEncoding _rv; 4509 UInt32 codepage; 4510 4510 #ifndef CFStringConvertWindowsCodepageToEncoding 4511 PyMac_PRECHECK(CFStringConvertWindowsCodepageToEncoding);4512 #endif 4513 if (!PyArg_ParseTuple(_args, "l",4514 &codepage))4515 return NULL;4516 _rv = CFStringConvertWindowsCodepageToEncoding(codepage);4517 _res = Py_BuildValue("l",4518 _rv);4519 return _res;4511 PyMac_PRECHECK(CFStringConvertWindowsCodepageToEncoding); 4512 #endif 4513 if (!PyArg_ParseTuple(_args, "l", 4514 &codepage)) 4515 return NULL; 4516 _rv = CFStringConvertWindowsCodepageToEncoding(codepage); 4517 _res = Py_BuildValue("l", 4518 _rv); 4519 return _res; 4520 4520 } 4521 4521 4522 4522 static PyObject *CF_CFStringConvertEncodingToIANACharSetName(PyObject *_self, PyObject *_args) 4523 4523 { 4524 PyObject *_res = NULL;4525 CFStringRef _rv;4526 CFStringEncoding encoding;4524 PyObject *_res = NULL; 4525 CFStringRef _rv; 4526 CFStringEncoding encoding; 4527 4527 #ifndef CFStringConvertEncodingToIANACharSetName 4528 PyMac_PRECHECK(CFStringConvertEncodingToIANACharSetName);4529 #endif 4530 if (!PyArg_ParseTuple(_args, "l",4531 &encoding))4532 return NULL;4533 _rv = CFStringConvertEncodingToIANACharSetName(encoding);4534 _res = Py_BuildValue("O&",4535 CFStringRefObj_New, _rv);4536 return _res;4528 PyMac_PRECHECK(CFStringConvertEncodingToIANACharSetName); 4529 #endif 4530 if (!PyArg_ParseTuple(_args, "l", 4531 &encoding)) 4532 return NULL; 4533 _rv = CFStringConvertEncodingToIANACharSetName(encoding); 4534 _res = Py_BuildValue("O&", 4535 CFStringRefObj_New, _rv); 4536 return _res; 4537 4537 } 4538 4538 4539 4539 static PyObject *CF_CFStringGetMostCompatibleMacStringEncoding(PyObject *_self, PyObject *_args) 4540 4540 { 4541 PyObject *_res = NULL;4542 CFStringEncoding _rv;4543 CFStringEncoding encoding;4541 PyObject *_res = NULL; 4542 CFStringEncoding _rv; 4543 CFStringEncoding encoding; 4544 4544 #ifndef CFStringGetMostCompatibleMacStringEncoding 4545 PyMac_PRECHECK(CFStringGetMostCompatibleMacStringEncoding);4546 #endif 4547 if (!PyArg_ParseTuple(_args, "l",4548 &encoding))4549 return NULL;4550 _rv = CFStringGetMostCompatibleMacStringEncoding(encoding);4551 _res = Py_BuildValue("l",4552 _rv);4553 return _res;4545 PyMac_PRECHECK(CFStringGetMostCompatibleMacStringEncoding); 4546 #endif 4547 if (!PyArg_ParseTuple(_args, "l", 4548 &encoding)) 4549 return NULL; 4550 _rv = CFStringGetMostCompatibleMacStringEncoding(encoding); 4551 _res = Py_BuildValue("l", 4552 _rv); 4553 return _res; 4554 4554 } 4555 4555 4556 4556 static PyObject *CF___CFStringMakeConstantString(PyObject *_self, PyObject *_args) 4557 4557 { 4558 PyObject *_res = NULL;4559 CFStringRef _rv;4560 char* cStr;4558 PyObject *_res = NULL; 4559 CFStringRef _rv; 4560 char* cStr; 4561 4561 #ifndef __CFStringMakeConstantString 4562 PyMac_PRECHECK(__CFStringMakeConstantString);4563 #endif 4564 if (!PyArg_ParseTuple(_args, "s",4565 &cStr))4566 return NULL;4567 _rv = __CFStringMakeConstantString(cStr);4568 _res = Py_BuildValue("O&",4569 CFStringRefObj_New, _rv);4570 return _res;4562 PyMac_PRECHECK(__CFStringMakeConstantString); 4563 #endif 4564 if (!PyArg_ParseTuple(_args, "s", 4565 &cStr)) 4566 return NULL; 4567 _rv = __CFStringMakeConstantString(cStr); 4568 _res = Py_BuildValue("O&", 4569 CFStringRefObj_New, _rv); 4570 return _res; 4571 4571 } 4572 4572 4573 4573 static PyObject *CF_CFURLGetTypeID(PyObject *_self, PyObject *_args) 4574 4574 { 4575 PyObject *_res = NULL;4576 CFTypeID _rv;4575 PyObject *_res = NULL; 4576 CFTypeID _rv; 4577 4577 #ifndef CFURLGetTypeID 4578 PyMac_PRECHECK(CFURLGetTypeID);4579 #endif 4580 if (!PyArg_ParseTuple(_args, ""))4581 return NULL;4582 _rv = CFURLGetTypeID();4583 _res = Py_BuildValue("l",4584 _rv);4585 return _res;4578 PyMac_PRECHECK(CFURLGetTypeID); 4579 #endif 4580 if (!PyArg_ParseTuple(_args, "")) 4581 return NULL; 4582 _rv = CFURLGetTypeID(); 4583 _res = Py_BuildValue("l", 4584 _rv); 4585 return _res; 4586 4586 } 4587 4587 4588 4588 static PyObject *CF_CFURLCreateWithBytes(PyObject *_self, PyObject *_args) 4589 4589 { 4590 PyObject *_res = NULL;4591 CFURLRef _rv;4592 unsigned char *URLBytes__in__;4593 long URLBytes__len__;4594 int URLBytes__in_len__;4595 CFStringEncoding encoding;4596 CFURLRef baseURL;4590 PyObject *_res = NULL; 4591 CFURLRef _rv; 4592 unsigned char *URLBytes__in__; 4593 long URLBytes__len__; 4594 int URLBytes__in_len__; 4595 CFStringEncoding encoding; 4596 CFURLRef baseURL; 4597 4597 #ifndef CFURLCreateWithBytes 4598 PyMac_PRECHECK(CFURLCreateWithBytes);4599 #endif 4600 if (!PyArg_ParseTuple(_args, "s#lO&",4601 &URLBytes__in__, &URLBytes__in_len__,4602 &encoding,4603 OptionalCFURLRefObj_Convert, &baseURL))4604 return NULL;4605 URLBytes__len__ = URLBytes__in_len__;4606 _rv = CFURLCreateWithBytes((CFAllocatorRef)NULL,4607 URLBytes__in__, URLBytes__len__,4608 encoding,4609 baseURL);4610 _res = Py_BuildValue("O&",4611 CFURLRefObj_New, _rv);4612 return _res;4598 PyMac_PRECHECK(CFURLCreateWithBytes); 4599 #endif 4600 if (!PyArg_ParseTuple(_args, "s#lO&", 4601 &URLBytes__in__, &URLBytes__in_len__, 4602 &encoding, 4603 OptionalCFURLRefObj_Convert, &baseURL)) 4604 return NULL; 4605 URLBytes__len__ = URLBytes__in_len__; 4606 _rv = CFURLCreateWithBytes((CFAllocatorRef)NULL, 4607 URLBytes__in__, URLBytes__len__, 4608 encoding, 4609 baseURL); 4610 _res = Py_BuildValue("O&", 4611 CFURLRefObj_New, _rv); 4612 return _res; 4613 4613 } 4614 4614 4615 4615 static PyObject *CF_CFURLCreateFromFileSystemRepresentation(PyObject *_self, PyObject *_args) 4616 4616 { 4617 PyObject *_res = NULL;4618 CFURLRef _rv;4619 unsigned char *buffer__in__;4620 long buffer__len__;4621 int buffer__in_len__;4622 Boolean isDirectory;4617 PyObject *_res = NULL; 4618 CFURLRef _rv; 4619 unsigned char *buffer__in__; 4620 long buffer__len__; 4621 int buffer__in_len__; 4622 Boolean isDirectory; 4623 4623 #ifndef CFURLCreateFromFileSystemRepresentation 4624 PyMac_PRECHECK(CFURLCreateFromFileSystemRepresentation);4625 #endif 4626 if (!PyArg_ParseTuple(_args, "s#l",4627 &buffer__in__, &buffer__in_len__,4628 &isDirectory))4629 return NULL;4630 buffer__len__ = buffer__in_len__;4631 _rv = CFURLCreateFromFileSystemRepresentation((CFAllocatorRef)NULL,4632 buffer__in__, buffer__len__,4633 isDirectory);4634 _res = Py_BuildValue("O&",4635 CFURLRefObj_New, _rv);4636 return _res;4624 PyMac_PRECHECK(CFURLCreateFromFileSystemRepresentation); 4625 #endif 4626 if (!PyArg_ParseTuple(_args, "s#l", 4627 &buffer__in__, &buffer__in_len__, 4628 &isDirectory)) 4629 return NULL; 4630 buffer__len__ = buffer__in_len__; 4631 _rv = CFURLCreateFromFileSystemRepresentation((CFAllocatorRef)NULL, 4632 buffer__in__, buffer__len__, 4633 isDirectory); 4634 _res = Py_BuildValue("O&", 4635 CFURLRefObj_New, _rv); 4636 return _res; 4637 4637 } 4638 4638 4639 4639 static PyObject *CF_CFURLCreateFromFileSystemRepresentationRelativeToBase(PyObject *_self, PyObject *_args) 4640 4640 { 4641 PyObject *_res = NULL;4642 CFURLRef _rv;4643 unsigned char *buffer__in__;4644 long buffer__len__;4645 int buffer__in_len__;4646 Boolean isDirectory;4647 CFURLRef baseURL;4641 PyObject *_res = NULL; 4642 CFURLRef _rv; 4643 unsigned char *buffer__in__; 4644 long buffer__len__; 4645 int buffer__in_len__; 4646 Boolean isDirectory; 4647 CFURLRef baseURL; 4648 4648 #ifndef CFURLCreateFromFileSystemRepresentationRelativeToBase 4649 PyMac_PRECHECK(CFURLCreateFromFileSystemRepresentationRelativeToBase);4650 #endif 4651 if (!PyArg_ParseTuple(_args, "s#lO&",4652 &buffer__in__, &buffer__in_len__,4653 &isDirectory,4654 OptionalCFURLRefObj_Convert, &baseURL))4655 return NULL;4656 buffer__len__ = buffer__in_len__;4657 _rv = CFURLCreateFromFileSystemRepresentationRelativeToBase((CFAllocatorRef)NULL,4658 buffer__in__, buffer__len__,4659 isDirectory,4660 baseURL);4661 _res = Py_BuildValue("O&",4662 CFURLRefObj_New, _rv);4663 return _res;4649 PyMac_PRECHECK(CFURLCreateFromFileSystemRepresentationRelativeToBase); 4650 #endif 4651 if (!PyArg_ParseTuple(_args, "s#lO&", 4652 &buffer__in__, &buffer__in_len__, 4653 &isDirectory, 4654 OptionalCFURLRefObj_Convert, &baseURL)) 4655 return NULL; 4656 buffer__len__ = buffer__in_len__; 4657 _rv = CFURLCreateFromFileSystemRepresentationRelativeToBase((CFAllocatorRef)NULL, 4658 buffer__in__, buffer__len__, 4659 isDirectory, 4660 baseURL); 4661 _res = Py_BuildValue("O&", 4662 CFURLRefObj_New, _rv); 4663 return _res; 4664 4664 } 4665 4665 4666 4666 static PyObject *CF_CFURLCreateFromFSRef(PyObject *_self, PyObject *_args) 4667 4667 { 4668 PyObject *_res = NULL;4669 CFURLRef _rv;4670 FSRef fsRef;4668 PyObject *_res = NULL; 4669 CFURLRef _rv; 4670 FSRef fsRef; 4671 4671 #ifndef CFURLCreateFromFSRef 4672 PyMac_PRECHECK(CFURLCreateFromFSRef);4673 #endif 4674 if (!PyArg_ParseTuple(_args, "O&",4675 PyMac_GetFSRef, &fsRef))4676 return NULL;4677 _rv = CFURLCreateFromFSRef((CFAllocatorRef)NULL,4678 &fsRef);4679 _res = Py_BuildValue("O&",4680 CFURLRefObj_New, _rv);4681 return _res;4672 PyMac_PRECHECK(CFURLCreateFromFSRef); 4673 #endif 4674 if (!PyArg_ParseTuple(_args, "O&", 4675 PyMac_GetFSRef, &fsRef)) 4676 return NULL; 4677 _rv = CFURLCreateFromFSRef((CFAllocatorRef)NULL, 4678 &fsRef); 4679 _res = Py_BuildValue("O&", 4680 CFURLRefObj_New, _rv); 4681 return _res; 4682 4682 } 4683 4683 4684 4684 static PyObject *CF_toCF(PyObject *_self, PyObject *_args) 4685 4685 { 4686 PyObject *_res = NULL;4687 4688 CFTypeRef rv;4689 CFTypeID typeid;4690 4691 if (!PyArg_ParseTuple(_args, "O&", PyCF_Python2CF, &rv))4692 return NULL;4693 typeid = CFGetTypeID(rv);4694 4695 if (typeid == CFStringGetTypeID())4696 return Py_BuildValue("O&", CFStringRefObj_New, rv);4697 if (typeid == CFArrayGetTypeID())4698 return Py_BuildValue("O&", CFArrayRefObj_New, rv);4699 if (typeid == CFDictionaryGetTypeID())4700 return Py_BuildValue("O&", CFDictionaryRefObj_New, rv);4701 if (typeid == CFURLGetTypeID())4702 return Py_BuildValue("O&", CFURLRefObj_New, rv);4703 4704 _res = Py_BuildValue("O&", CFTypeRefObj_New, rv);4705 return _res;4686 PyObject *_res = NULL; 4687 4688 CFTypeRef rv; 4689 CFTypeID typeid; 4690 4691 if (!PyArg_ParseTuple(_args, "O&", PyCF_Python2CF, &rv)) 4692 return NULL; 4693 typeid = CFGetTypeID(rv); 4694 4695 if (typeid == CFStringGetTypeID()) 4696 return Py_BuildValue("O&", CFStringRefObj_New, rv); 4697 if (typeid == CFArrayGetTypeID()) 4698 return Py_BuildValue("O&", CFArrayRefObj_New, rv); 4699 if (typeid == CFDictionaryGetTypeID()) 4700 return Py_BuildValue("O&", CFDictionaryRefObj_New, rv); 4701 if (typeid == CFURLGetTypeID()) 4702 return Py_BuildValue("O&", CFURLRefObj_New, rv); 4703 4704 _res = Py_BuildValue("O&", CFTypeRefObj_New, rv); 4705 return _res; 4706 4706 4707 4707 } 4708 4708 4709 4709 static PyMethodDef CF_methods[] = { 4710 {"__CFRangeMake", (PyCFunction)CF___CFRangeMake, 1,4711 PyDoc_STR("(CFIndex loc, CFIndex len) -> (CFRange _rv)")},4712 {"CFAllocatorGetTypeID", (PyCFunction)CF_CFAllocatorGetTypeID, 1,4713 PyDoc_STR("() -> (CFTypeID _rv)")},4714 {"CFAllocatorGetPreferredSizeForSize", (PyCFunction)CF_CFAllocatorGetPreferredSizeForSize, 1,4715 PyDoc_STR("(CFIndex size, CFOptionFlags hint) -> (CFIndex _rv)")},4716 {"CFCopyTypeIDDescription", (PyCFunction)CF_CFCopyTypeIDDescription, 1,4717 PyDoc_STR("(CFTypeID type_id) -> (CFStringRef _rv)")},4718 {"CFArrayGetTypeID", (PyCFunction)CF_CFArrayGetTypeID, 1,4719 PyDoc_STR("() -> (CFTypeID _rv)")},4720 {"CFArrayCreateMutable", (PyCFunction)CF_CFArrayCreateMutable, 1,4721 PyDoc_STR("(CFIndex capacity) -> (CFMutableArrayRef _rv)")},4722 {"CFArrayCreateMutableCopy", (PyCFunction)CF_CFArrayCreateMutableCopy, 1,4723 PyDoc_STR("(CFIndex capacity, CFArrayRef theArray) -> (CFMutableArrayRef _rv)")},4724 {"CFDataGetTypeID", (PyCFunction)CF_CFDataGetTypeID, 1,4725 PyDoc_STR("() -> (CFTypeID _rv)")},4726 {"CFDataCreate", (PyCFunction)CF_CFDataCreate, 1,4727 PyDoc_STR("(Buffer bytes) -> (CFDataRef _rv)")},4728 {"CFDataCreateWithBytesNoCopy", (PyCFunction)CF_CFDataCreateWithBytesNoCopy, 1,4729 PyDoc_STR("(Buffer bytes) -> (CFDataRef _rv)")},4730 {"CFDataCreateMutable", (PyCFunction)CF_CFDataCreateMutable, 1,4731 PyDoc_STR("(CFIndex capacity) -> (CFMutableDataRef _rv)")},4732 {"CFDataCreateMutableCopy", (PyCFunction)CF_CFDataCreateMutableCopy, 1,4733 PyDoc_STR("(CFIndex capacity, CFDataRef theData) -> (CFMutableDataRef _rv)")},4734 {"CFDictionaryGetTypeID", (PyCFunction)CF_CFDictionaryGetTypeID, 1,4735 PyDoc_STR("() -> (CFTypeID _rv)")},4736 {"CFDictionaryCreateMutable", (PyCFunction)CF_CFDictionaryCreateMutable, 1,4737 PyDoc_STR("(CFIndex capacity) -> (CFMutableDictionaryRef _rv)")},4738 {"CFDictionaryCreateMutableCopy", (PyCFunction)CF_CFDictionaryCreateMutableCopy, 1,4739 PyDoc_STR("(CFIndex capacity, CFDictionaryRef theDict) -> (CFMutableDictionaryRef _rv)")},4740 {"CFPreferencesCopyAppValue", (PyCFunction)CF_CFPreferencesCopyAppValue, 1,4741 PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (CFTypeRef _rv)")},4742 {"CFPreferencesGetAppBooleanValue", (PyCFunction)CF_CFPreferencesGetAppBooleanValue, 1,4743 PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (Boolean _rv, Boolean keyExistsAndHasValidFormat)")},4744 {"CFPreferencesGetAppIntegerValue", (PyCFunction)CF_CFPreferencesGetAppIntegerValue, 1,4745 PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (CFIndex _rv, Boolean keyExistsAndHasValidFormat)")},4746 {"CFPreferencesSetAppValue", (PyCFunction)CF_CFPreferencesSetAppValue, 1,4747 PyDoc_STR("(CFStringRef key, CFTypeRef value, CFStringRef applicationID) -> None")},4748 {"CFPreferencesAddSuitePreferencesToApp", (PyCFunction)CF_CFPreferencesAddSuitePreferencesToApp, 1,4749 PyDoc_STR("(CFStringRef applicationID, CFStringRef suiteID) -> None")},4750 {"CFPreferencesRemoveSuitePreferencesFromApp", (PyCFunction)CF_CFPreferencesRemoveSuitePreferencesFromApp, 1,4751 PyDoc_STR("(CFStringRef applicationID, CFStringRef suiteID) -> None")},4752 {"CFPreferencesAppSynchronize", (PyCFunction)CF_CFPreferencesAppSynchronize, 1,4753 PyDoc_STR("(CFStringRef applicationID) -> (Boolean _rv)")},4754 {"CFPreferencesCopyValue", (PyCFunction)CF_CFPreferencesCopyValue, 1,4755 PyDoc_STR("(CFStringRef key, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFTypeRef _rv)")},4756 {"CFPreferencesCopyMultiple", (PyCFunction)CF_CFPreferencesCopyMultiple, 1,4757 PyDoc_STR("(CFArrayRef keysToFetch, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFDictionaryRef _rv)")},4758 {"CFPreferencesSetValue", (PyCFunction)CF_CFPreferencesSetValue, 1,4759 PyDoc_STR("(CFStringRef key, CFTypeRef value, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> None")},4760 {"CFPreferencesSetMultiple", (PyCFunction)CF_CFPreferencesSetMultiple, 1,4761 PyDoc_STR("(CFDictionaryRef keysToSet, CFArrayRef keysToRemove, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> None")},4762 {"CFPreferencesSynchronize", (PyCFunction)CF_CFPreferencesSynchronize, 1,4763 PyDoc_STR("(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (Boolean _rv)")},4764 {"CFPreferencesCopyApplicationList", (PyCFunction)CF_CFPreferencesCopyApplicationList, 1,4765 PyDoc_STR("(CFStringRef userName, CFStringRef hostName) -> (CFArrayRef _rv)")},4766 {"CFPreferencesCopyKeyList", (PyCFunction)CF_CFPreferencesCopyKeyList, 1,4767 PyDoc_STR("(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFArrayRef _rv)")},4768 {"CFStringGetTypeID", (PyCFunction)CF_CFStringGetTypeID, 1,4769 PyDoc_STR("() -> (CFTypeID _rv)")},4770 {"CFStringCreateWithPascalString", (PyCFunction)CF_CFStringCreateWithPascalString, 1,4771 PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> (CFStringRef _rv)")},4772 {"CFStringCreateWithCString", (PyCFunction)CF_CFStringCreateWithCString, 1,4773 PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> (CFStringRef _rv)")},4774 {"CFStringCreateWithCharacters", (PyCFunction)CF_CFStringCreateWithCharacters, 1,4775 PyDoc_STR("(Buffer chars) -> (CFStringRef _rv)")},4776 {"CFStringCreateWithPascalStringNoCopy", (PyCFunction)CF_CFStringCreateWithPascalStringNoCopy, 1,4777 PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> (CFStringRef _rv)")},4778 {"CFStringCreateWithCStringNoCopy", (PyCFunction)CF_CFStringCreateWithCStringNoCopy, 1,4779 PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> (CFStringRef _rv)")},4780 {"CFStringCreateWithCharactersNoCopy", (PyCFunction)CF_CFStringCreateWithCharactersNoCopy, 1,4781 PyDoc_STR("(Buffer chars) -> (CFStringRef _rv)")},4782 {"CFStringCreateMutable", (PyCFunction)CF_CFStringCreateMutable, 1,4783 PyDoc_STR("(CFIndex maxLength) -> (CFMutableStringRef _rv)")},4784 {"CFStringCreateMutableCopy", (PyCFunction)CF_CFStringCreateMutableCopy, 1,4785 PyDoc_STR("(CFIndex maxLength, CFStringRef theString) -> (CFMutableStringRef _rv)")},4786 {"CFStringCreateWithBytes", (PyCFunction)CF_CFStringCreateWithBytes, 1,4787 PyDoc_STR("(Buffer bytes, CFStringEncoding encoding, Boolean isExternalRepresentation) -> (CFStringRef _rv)")},4788 {"CFStringGetSystemEncoding", (PyCFunction)CF_CFStringGetSystemEncoding, 1,4789 PyDoc_STR("() -> (CFStringEncoding _rv)")},4790 {"CFStringGetMaximumSizeForEncoding", (PyCFunction)CF_CFStringGetMaximumSizeForEncoding, 1,4791 PyDoc_STR("(CFIndex length, CFStringEncoding encoding) -> (CFIndex _rv)")},4792 {"CFStringIsEncodingAvailable", (PyCFunction)CF_CFStringIsEncodingAvailable, 1,4793 PyDoc_STR("(CFStringEncoding encoding) -> (Boolean _rv)")},4794 {"CFStringGetNameOfEncoding", (PyCFunction)CF_CFStringGetNameOfEncoding, 1,4795 PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")},4796 {"CFStringConvertEncodingToNSStringEncoding", (PyCFunction)CF_CFStringConvertEncodingToNSStringEncoding, 1,4797 PyDoc_STR("(CFStringEncoding encoding) -> (UInt32 _rv)")},4798 {"CFStringConvertNSStringEncodingToEncoding", (PyCFunction)CF_CFStringConvertNSStringEncodingToEncoding, 1,4799 PyDoc_STR("(UInt32 encoding) -> (CFStringEncoding _rv)")},4800 {"CFStringConvertEncodingToWindowsCodepage", (PyCFunction)CF_CFStringConvertEncodingToWindowsCodepage, 1,4801 PyDoc_STR("(CFStringEncoding encoding) -> (UInt32 _rv)")},4802 {"CFStringConvertWindowsCodepageToEncoding", (PyCFunction)CF_CFStringConvertWindowsCodepageToEncoding, 1,4803 PyDoc_STR("(UInt32 codepage) -> (CFStringEncoding _rv)")},4804 {"CFStringConvertEncodingToIANACharSetName", (PyCFunction)CF_CFStringConvertEncodingToIANACharSetName, 1,4805 PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")},4806 {"CFStringGetMostCompatibleMacStringEncoding", (PyCFunction)CF_CFStringGetMostCompatibleMacStringEncoding, 1,4807 PyDoc_STR("(CFStringEncoding encoding) -> (CFStringEncoding _rv)")},4808 {"__CFStringMakeConstantString", (PyCFunction)CF___CFStringMakeConstantString, 1,4809 PyDoc_STR("(char* cStr) -> (CFStringRef _rv)")},4810 {"CFURLGetTypeID", (PyCFunction)CF_CFURLGetTypeID, 1,4811 PyDoc_STR("() -> (CFTypeID _rv)")},4812 {"CFURLCreateWithBytes", (PyCFunction)CF_CFURLCreateWithBytes, 1,4813 PyDoc_STR("(Buffer URLBytes, CFStringEncoding encoding, CFURLRef baseURL) -> (CFURLRef _rv)")},4814 {"CFURLCreateFromFileSystemRepresentation", (PyCFunction)CF_CFURLCreateFromFileSystemRepresentation, 1,4815 PyDoc_STR("(Buffer buffer, Boolean isDirectory) -> (CFURLRef _rv)")},4816 {"CFURLCreateFromFileSystemRepresentationRelativeToBase", (PyCFunction)CF_CFURLCreateFromFileSystemRepresentationRelativeToBase, 1,4817 PyDoc_STR("(Buffer buffer, Boolean isDirectory, CFURLRef baseURL) -> (CFURLRef _rv)")},4818 {"CFURLCreateFromFSRef", (PyCFunction)CF_CFURLCreateFromFSRef, 1,4819 PyDoc_STR("(FSRef fsRef) -> (CFURLRef _rv)")},4820 {"toCF", (PyCFunction)CF_toCF, 1,4821 PyDoc_STR("(python_object) -> (CF_object)")},4822 {NULL, NULL, 0}4710 {"__CFRangeMake", (PyCFunction)CF___CFRangeMake, 1, 4711 PyDoc_STR("(CFIndex loc, CFIndex len) -> (CFRange _rv)")}, 4712 {"CFAllocatorGetTypeID", (PyCFunction)CF_CFAllocatorGetTypeID, 1, 4713 PyDoc_STR("() -> (CFTypeID _rv)")}, 4714 {"CFAllocatorGetPreferredSizeForSize", (PyCFunction)CF_CFAllocatorGetPreferredSizeForSize, 1, 4715 PyDoc_STR("(CFIndex size, CFOptionFlags hint) -> (CFIndex _rv)")}, 4716 {"CFCopyTypeIDDescription", (PyCFunction)CF_CFCopyTypeIDDescription, 1, 4717 PyDoc_STR("(CFTypeID type_id) -> (CFStringRef _rv)")}, 4718 {"CFArrayGetTypeID", (PyCFunction)CF_CFArrayGetTypeID, 1, 4719 PyDoc_STR("() -> (CFTypeID _rv)")}, 4720 {"CFArrayCreateMutable", (PyCFunction)CF_CFArrayCreateMutable, 1, 4721 PyDoc_STR("(CFIndex capacity) -> (CFMutableArrayRef _rv)")}, 4722 {"CFArrayCreateMutableCopy", (PyCFunction)CF_CFArrayCreateMutableCopy, 1, 4723 PyDoc_STR("(CFIndex capacity, CFArrayRef theArray) -> (CFMutableArrayRef _rv)")}, 4724 {"CFDataGetTypeID", (PyCFunction)CF_CFDataGetTypeID, 1, 4725 PyDoc_STR("() -> (CFTypeID _rv)")}, 4726 {"CFDataCreate", (PyCFunction)CF_CFDataCreate, 1, 4727 PyDoc_STR("(Buffer bytes) -> (CFDataRef _rv)")}, 4728 {"CFDataCreateWithBytesNoCopy", (PyCFunction)CF_CFDataCreateWithBytesNoCopy, 1, 4729 PyDoc_STR("(Buffer bytes) -> (CFDataRef _rv)")}, 4730 {"CFDataCreateMutable", (PyCFunction)CF_CFDataCreateMutable, 1, 4731 PyDoc_STR("(CFIndex capacity) -> (CFMutableDataRef _rv)")}, 4732 {"CFDataCreateMutableCopy", (PyCFunction)CF_CFDataCreateMutableCopy, 1, 4733 PyDoc_STR("(CFIndex capacity, CFDataRef theData) -> (CFMutableDataRef _rv)")}, 4734 {"CFDictionaryGetTypeID", (PyCFunction)CF_CFDictionaryGetTypeID, 1, 4735 PyDoc_STR("() -> (CFTypeID _rv)")}, 4736 {"CFDictionaryCreateMutable", (PyCFunction)CF_CFDictionaryCreateMutable, 1, 4737 PyDoc_STR("(CFIndex capacity) -> (CFMutableDictionaryRef _rv)")}, 4738 {"CFDictionaryCreateMutableCopy", (PyCFunction)CF_CFDictionaryCreateMutableCopy, 1, 4739 PyDoc_STR("(CFIndex capacity, CFDictionaryRef theDict) -> (CFMutableDictionaryRef _rv)")}, 4740 {"CFPreferencesCopyAppValue", (PyCFunction)CF_CFPreferencesCopyAppValue, 1, 4741 PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (CFTypeRef _rv)")}, 4742 {"CFPreferencesGetAppBooleanValue", (PyCFunction)CF_CFPreferencesGetAppBooleanValue, 1, 4743 PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (Boolean _rv, Boolean keyExistsAndHasValidFormat)")}, 4744 {"CFPreferencesGetAppIntegerValue", (PyCFunction)CF_CFPreferencesGetAppIntegerValue, 1, 4745 PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (CFIndex _rv, Boolean keyExistsAndHasValidFormat)")}, 4746 {"CFPreferencesSetAppValue", (PyCFunction)CF_CFPreferencesSetAppValue, 1, 4747 PyDoc_STR("(CFStringRef key, CFTypeRef value, CFStringRef applicationID) -> None")}, 4748 {"CFPreferencesAddSuitePreferencesToApp", (PyCFunction)CF_CFPreferencesAddSuitePreferencesToApp, 1, 4749 PyDoc_STR("(CFStringRef applicationID, CFStringRef suiteID) -> None")}, 4750 {"CFPreferencesRemoveSuitePreferencesFromApp", (PyCFunction)CF_CFPreferencesRemoveSuitePreferencesFromApp, 1, 4751 PyDoc_STR("(CFStringRef applicationID, CFStringRef suiteID) -> None")}, 4752 {"CFPreferencesAppSynchronize", (PyCFunction)CF_CFPreferencesAppSynchronize, 1, 4753 PyDoc_STR("(CFStringRef applicationID) -> (Boolean _rv)")}, 4754 {"CFPreferencesCopyValue", (PyCFunction)CF_CFPreferencesCopyValue, 1, 4755 PyDoc_STR("(CFStringRef key, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFTypeRef _rv)")}, 4756 {"CFPreferencesCopyMultiple", (PyCFunction)CF_CFPreferencesCopyMultiple, 1, 4757 PyDoc_STR("(CFArrayRef keysToFetch, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFDictionaryRef _rv)")}, 4758 {"CFPreferencesSetValue", (PyCFunction)CF_CFPreferencesSetValue, 1, 4759 PyDoc_STR("(CFStringRef key, CFTypeRef value, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> None")}, 4760 {"CFPreferencesSetMultiple", (PyCFunction)CF_CFPreferencesSetMultiple, 1, 4761 PyDoc_STR("(CFDictionaryRef keysToSet, CFArrayRef keysToRemove, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> None")}, 4762 {"CFPreferencesSynchronize", (PyCFunction)CF_CFPreferencesSynchronize, 1, 4763 PyDoc_STR("(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (Boolean _rv)")}, 4764 {"CFPreferencesCopyApplicationList", (PyCFunction)CF_CFPreferencesCopyApplicationList, 1, 4765 PyDoc_STR("(CFStringRef userName, CFStringRef hostName) -> (CFArrayRef _rv)")}, 4766 {"CFPreferencesCopyKeyList", (PyCFunction)CF_CFPreferencesCopyKeyList, 1, 4767 PyDoc_STR("(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFArrayRef _rv)")}, 4768 {"CFStringGetTypeID", (PyCFunction)CF_CFStringGetTypeID, 1, 4769 PyDoc_STR("() -> (CFTypeID _rv)")}, 4770 {"CFStringCreateWithPascalString", (PyCFunction)CF_CFStringCreateWithPascalString, 1, 4771 PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4772 {"CFStringCreateWithCString", (PyCFunction)CF_CFStringCreateWithCString, 1, 4773 PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4774 {"CFStringCreateWithCharacters", (PyCFunction)CF_CFStringCreateWithCharacters, 1, 4775 PyDoc_STR("(Buffer chars) -> (CFStringRef _rv)")}, 4776 {"CFStringCreateWithPascalStringNoCopy", (PyCFunction)CF_CFStringCreateWithPascalStringNoCopy, 1, 4777 PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4778 {"CFStringCreateWithCStringNoCopy", (PyCFunction)CF_CFStringCreateWithCStringNoCopy, 1, 4779 PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4780 {"CFStringCreateWithCharactersNoCopy", (PyCFunction)CF_CFStringCreateWithCharactersNoCopy, 1, 4781 PyDoc_STR("(Buffer chars) -> (CFStringRef _rv)")}, 4782 {"CFStringCreateMutable", (PyCFunction)CF_CFStringCreateMutable, 1, 4783 PyDoc_STR("(CFIndex maxLength) -> (CFMutableStringRef _rv)")}, 4784 {"CFStringCreateMutableCopy", (PyCFunction)CF_CFStringCreateMutableCopy, 1, 4785 PyDoc_STR("(CFIndex maxLength, CFStringRef theString) -> (CFMutableStringRef _rv)")}, 4786 {"CFStringCreateWithBytes", (PyCFunction)CF_CFStringCreateWithBytes, 1, 4787 PyDoc_STR("(Buffer bytes, CFStringEncoding encoding, Boolean isExternalRepresentation) -> (CFStringRef _rv)")}, 4788 {"CFStringGetSystemEncoding", (PyCFunction)CF_CFStringGetSystemEncoding, 1, 4789 PyDoc_STR("() -> (CFStringEncoding _rv)")}, 4790 {"CFStringGetMaximumSizeForEncoding", (PyCFunction)CF_CFStringGetMaximumSizeForEncoding, 1, 4791 PyDoc_STR("(CFIndex length, CFStringEncoding encoding) -> (CFIndex _rv)")}, 4792 {"CFStringIsEncodingAvailable", (PyCFunction)CF_CFStringIsEncodingAvailable, 1, 4793 PyDoc_STR("(CFStringEncoding encoding) -> (Boolean _rv)")}, 4794 {"CFStringGetNameOfEncoding", (PyCFunction)CF_CFStringGetNameOfEncoding, 1, 4795 PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4796 {"CFStringConvertEncodingToNSStringEncoding", (PyCFunction)CF_CFStringConvertEncodingToNSStringEncoding, 1, 4797 PyDoc_STR("(CFStringEncoding encoding) -> (UInt32 _rv)")}, 4798 {"CFStringConvertNSStringEncodingToEncoding", (PyCFunction)CF_CFStringConvertNSStringEncodingToEncoding, 1, 4799 PyDoc_STR("(UInt32 encoding) -> (CFStringEncoding _rv)")}, 4800 {"CFStringConvertEncodingToWindowsCodepage", (PyCFunction)CF_CFStringConvertEncodingToWindowsCodepage, 1, 4801 PyDoc_STR("(CFStringEncoding encoding) -> (UInt32 _rv)")}, 4802 {"CFStringConvertWindowsCodepageToEncoding", (PyCFunction)CF_CFStringConvertWindowsCodepageToEncoding, 1, 4803 PyDoc_STR("(UInt32 codepage) -> (CFStringEncoding _rv)")}, 4804 {"CFStringConvertEncodingToIANACharSetName", (PyCFunction)CF_CFStringConvertEncodingToIANACharSetName, 1, 4805 PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4806 {"CFStringGetMostCompatibleMacStringEncoding", (PyCFunction)CF_CFStringGetMostCompatibleMacStringEncoding, 1, 4807 PyDoc_STR("(CFStringEncoding encoding) -> (CFStringEncoding _rv)")}, 4808 {"__CFStringMakeConstantString", (PyCFunction)CF___CFStringMakeConstantString, 1, 4809 PyDoc_STR("(char* cStr) -> (CFStringRef _rv)")}, 4810 {"CFURLGetTypeID", (PyCFunction)CF_CFURLGetTypeID, 1, 4811 PyDoc_STR("() -> (CFTypeID _rv)")}, 4812 {"CFURLCreateWithBytes", (PyCFunction)CF_CFURLCreateWithBytes, 1, 4813 PyDoc_STR("(Buffer URLBytes, CFStringEncoding encoding, CFURLRef baseURL) -> (CFURLRef _rv)")}, 4814 {"CFURLCreateFromFileSystemRepresentation", (PyCFunction)CF_CFURLCreateFromFileSystemRepresentation, 1, 4815 PyDoc_STR("(Buffer buffer, Boolean isDirectory) -> (CFURLRef _rv)")}, 4816 {"CFURLCreateFromFileSystemRepresentationRelativeToBase", (PyCFunction)CF_CFURLCreateFromFileSystemRepresentationRelativeToBase, 1, 4817 PyDoc_STR("(Buffer buffer, Boolean isDirectory, CFURLRef baseURL) -> (CFURLRef _rv)")}, 4818 {"CFURLCreateFromFSRef", (PyCFunction)CF_CFURLCreateFromFSRef, 1, 4819 PyDoc_STR("(FSRef fsRef) -> (CFURLRef _rv)")}, 4820 {"toCF", (PyCFunction)CF_toCF, 1, 4821 PyDoc_STR("(python_object) -> (CF_object)")}, 4822 {NULL, NULL, 0} 4823 4823 }; 4824 4824 … … 4829 4829 PyObject *CFObj_New(CFTypeRef itself) 4830 4830 { 4831 if (itself == NULL)4832 {4833 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");4834 return NULL;4835 }4836 if (CFGetTypeID(itself) == CFArrayGetTypeID()) return CFArrayRefObj_New((CFArrayRef)itself);4837 if (CFGetTypeID(itself) == CFDictionaryGetTypeID()) return CFDictionaryRefObj_New((CFDictionaryRef)itself);4838 if (CFGetTypeID(itself) == CFDataGetTypeID()) return CFDataRefObj_New((CFDataRef)itself);4839 if (CFGetTypeID(itself) == CFStringGetTypeID()) return CFStringRefObj_New((CFStringRef)itself);4840 if (CFGetTypeID(itself) == CFURLGetTypeID()) return CFURLRefObj_New((CFURLRef)itself);4841 /* XXXX Or should we use PyCF_CF2Python here?? */4842 return CFTypeRefObj_New(itself);4831 if (itself == NULL) 4832 { 4833 PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 4834 return NULL; 4835 } 4836 if (CFGetTypeID(itself) == CFArrayGetTypeID()) return CFArrayRefObj_New((CFArrayRef)itself); 4837 if (CFGetTypeID(itself) == CFDictionaryGetTypeID()) return CFDictionaryRefObj_New((CFDictionaryRef)itself); 4838 if (CFGetTypeID(itself) == CFDataGetTypeID()) return CFDataRefObj_New((CFDataRef)itself); 4839 if (CFGetTypeID(itself) == CFStringGetTypeID()) return CFStringRefObj_New((CFStringRef)itself); 4840 if (CFGetTypeID(itself) == CFURLGetTypeID()) return CFURLRefObj_New((CFURLRef)itself); 4841 /* XXXX Or should we use PyCF_CF2Python here?? */ 4842 return CFTypeRefObj_New(itself); 4843 4843 } 4844 4844 int CFObj_Convert(PyObject *v, CFTypeRef *p_itself) 4845 4845 { 4846 4846 4847 if (v == Py_None) { *p_itself = NULL; return 1; }4848 /* Check for other CF objects here */4849 4850 if (!CFTypeRefObj_Check(v) &&4851 !CFArrayRefObj_Check(v) &&4852 !CFMutableArrayRefObj_Check(v) &&4853 !CFDictionaryRefObj_Check(v) &&4854 !CFMutableDictionaryRefObj_Check(v) &&4855 !CFDataRefObj_Check(v) &&4856 !CFMutableDataRefObj_Check(v) &&4857 !CFStringRefObj_Check(v) &&4858 !CFMutableStringRefObj_Check(v) &&4859 !CFURLRefObj_Check(v) )4860 {4861 /* XXXX Or should we use PyCF_Python2CF here?? */4862 PyErr_SetString(PyExc_TypeError, "CF object required");4863 return 0;4864 }4865 *p_itself = ((CFTypeRefObject *)v)->ob_itself;4866 return 1;4847 if (v == Py_None) { *p_itself = NULL; return 1; } 4848 /* Check for other CF objects here */ 4849 4850 if (!CFTypeRefObj_Check(v) && 4851 !CFArrayRefObj_Check(v) && 4852 !CFMutableArrayRefObj_Check(v) && 4853 !CFDictionaryRefObj_Check(v) && 4854 !CFMutableDictionaryRefObj_Check(v) && 4855 !CFDataRefObj_Check(v) && 4856 !CFMutableDataRefObj_Check(v) && 4857 !CFStringRefObj_Check(v) && 4858 !CFMutableStringRefObj_Check(v) && 4859 !CFURLRefObj_Check(v) ) 4860 { 4861 /* XXXX Or should we use PyCF_Python2CF here?? */ 4862 PyErr_SetString(PyExc_TypeError, "CF object required"); 4863 return 0; 4864 } 4865 *p_itself = ((CFTypeRefObject *)v)->ob_itself; 4866 return 1; 4867 4867 } 4868 4868 … … 4870 4870 void init_CF(void) 4871 4871 { 4872 PyObject *m;4873 PyObject *d;4874 4875 4876 4877 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFObj_New);4878 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFObj_Convert);4879 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFTypeRefObj_New);4880 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFTypeRefObj_Convert);4881 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFStringRef, CFStringRefObj_New);4882 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFStringRef, CFStringRefObj_Convert);4883 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableStringRef, CFMutableStringRefObj_New);4884 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableStringRef, CFMutableStringRefObj_Convert);4885 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFArrayRef, CFArrayRefObj_New);4886 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFArrayRef, CFArrayRefObj_Convert);4887 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableArrayRef, CFMutableArrayRefObj_New);4888 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableArrayRef, CFMutableArrayRefObj_Convert);4889 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFDictionaryRef, CFDictionaryRefObj_New);4890 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFDictionaryRef, CFDictionaryRefObj_Convert);4891 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableDictionaryRef, CFMutableDictionaryRefObj_New);4892 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableDictionaryRef, CFMutableDictionaryRefObj_Convert);4893 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFURLRef, CFURLRefObj_New);4894 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFURLRef, CFURLRefObj_Convert);4895 4896 4897 m = Py_InitModule("_CF", CF_methods);4898 d = PyModule_GetDict(m);4899 CF_Error = PyMac_GetOSErrException();4900 if (CF_Error == NULL ||4901 PyDict_SetItemString(d, "Error", CF_Error) != 0)4902 return;4903 CFTypeRef_Type.ob_type = &PyType_Type;4904 if (PyType_Ready(&CFTypeRef_Type) < 0) return;4905 Py_INCREF(&CFTypeRef_Type);4906 PyModule_AddObject(m, "CFTypeRef", (PyObject *)&CFTypeRef_Type);4907 /* Backward-compatible name */4908 Py_INCREF(&CFTypeRef_Type);4909 PyModule_AddObject(m, "CFTypeRefType", (PyObject *)&CFTypeRef_Type);4910 CFArrayRef_Type.ob_type = &PyType_Type;4911 CFArrayRef_Type.tp_base = &CFTypeRef_Type;4912 if (PyType_Ready(&CFArrayRef_Type) < 0) return;4913 Py_INCREF(&CFArrayRef_Type);4914 PyModule_AddObject(m, "CFArrayRef", (PyObject *)&CFArrayRef_Type);4915 /* Backward-compatible name */4916 Py_INCREF(&CFArrayRef_Type);4917 PyModule_AddObject(m, "CFArrayRefType", (PyObject *)&CFArrayRef_Type);4918 CFMutableArrayRef_Type.ob_type = &PyType_Type;4919 CFMutableArrayRef_Type.tp_base = &CFArrayRef_Type;4920 if (PyType_Ready(&CFMutableArrayRef_Type) < 0) return;4921 Py_INCREF(&CFMutableArrayRef_Type);4922 PyModule_AddObject(m, "CFMutableArrayRef", (PyObject *)&CFMutableArrayRef_Type);4923 /* Backward-compatible name */4924 Py_INCREF(&CFMutableArrayRef_Type);4925 PyModule_AddObject(m, "CFMutableArrayRefType", (PyObject *)&CFMutableArrayRef_Type);4926 CFDictionaryRef_Type.ob_type = &PyType_Type;4927 CFDictionaryRef_Type.tp_base = &CFTypeRef_Type;4928 if (PyType_Ready(&CFDictionaryRef_Type) < 0) return;4929 Py_INCREF(&CFDictionaryRef_Type);4930 PyModule_AddObject(m, "CFDictionaryRef", (PyObject *)&CFDictionaryRef_Type);4931 /* Backward-compatible name */4932 Py_INCREF(&CFDictionaryRef_Type);4933 PyModule_AddObject(m, "CFDictionaryRefType", (PyObject *)&CFDictionaryRef_Type);4934 CFMutableDictionaryRef_Type.ob_type = &PyType_Type;4935 CFMutableDictionaryRef_Type.tp_base = &CFDictionaryRef_Type;4936 if (PyType_Ready(&CFMutableDictionaryRef_Type) < 0) return;4937 Py_INCREF(&CFMutableDictionaryRef_Type);4938 PyModule_AddObject(m, "CFMutableDictionaryRef", (PyObject *)&CFMutableDictionaryRef_Type);4939 /* Backward-compatible name */4940 Py_INCREF(&CFMutableDictionaryRef_Type);4941 PyModule_AddObject(m, "CFMutableDictionaryRefType", (PyObject *)&CFMutableDictionaryRef_Type);4942 CFDataRef_Type.ob_type = &PyType_Type;4943 CFDataRef_Type.tp_base = &CFTypeRef_Type;4944 if (PyType_Ready(&CFDataRef_Type) < 0) return;4945 Py_INCREF(&CFDataRef_Type);4946 PyModule_AddObject(m, "CFDataRef", (PyObject *)&CFDataRef_Type);4947 /* Backward-compatible name */4948 Py_INCREF(&CFDataRef_Type);4949 PyModule_AddObject(m, "CFDataRefType", (PyObject *)&CFDataRef_Type);4950 CFMutableDataRef_Type.ob_type = &PyType_Type;4951 CFMutableDataRef_Type.tp_base = &CFDataRef_Type;4952 if (PyType_Ready(&CFMutableDataRef_Type) < 0) return;4953 Py_INCREF(&CFMutableDataRef_Type);4954 PyModule_AddObject(m, "CFMutableDataRef", (PyObject *)&CFMutableDataRef_Type);4955 /* Backward-compatible name */4956 Py_INCREF(&CFMutableDataRef_Type);4957 PyModule_AddObject(m, "CFMutableDataRefType", (PyObject *)&CFMutableDataRef_Type);4958 CFStringRef_Type.ob_type = &PyType_Type;4959 CFStringRef_Type.tp_base = &CFTypeRef_Type;4960 if (PyType_Ready(&CFStringRef_Type) < 0) return;4961 Py_INCREF(&CFStringRef_Type);4962 PyModule_AddObject(m, "CFStringRef", (PyObject *)&CFStringRef_Type);4963 /* Backward-compatible name */4964 Py_INCREF(&CFStringRef_Type);4965 PyModule_AddObject(m, "CFStringRefType", (PyObject *)&CFStringRef_Type);4966 CFMutableStringRef_Type.ob_type = &PyType_Type;4967 CFMutableStringRef_Type.tp_base = &CFStringRef_Type;4968 if (PyType_Ready(&CFMutableStringRef_Type) < 0) return;4969 Py_INCREF(&CFMutableStringRef_Type);4970 PyModule_AddObject(m, "CFMutableStringRef", (PyObject *)&CFMutableStringRef_Type);4971 /* Backward-compatible name */4972 Py_INCREF(&CFMutableStringRef_Type);4973 PyModule_AddObject(m, "CFMutableStringRefType", (PyObject *)&CFMutableStringRef_Type);4974 CFURLRef_Type.ob_type = &PyType_Type;4975 CFURLRef_Type.tp_base = &CFTypeRef_Type;4976 if (PyType_Ready(&CFURLRef_Type) < 0) return;4977 Py_INCREF(&CFURLRef_Type);4978 PyModule_AddObject(m, "CFURLRef", (PyObject *)&CFURLRef_Type);4979 /* Backward-compatible name */4980 Py_INCREF(&CFURLRef_Type);4981 PyModule_AddObject(m, "CFURLRefType", (PyObject *)&CFURLRef_Type);4872 PyObject *m; 4873 PyObject *d; 4874 4875 4876 4877 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFObj_New); 4878 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFObj_Convert); 4879 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFTypeRefObj_New); 4880 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFTypeRefObj_Convert); 4881 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFStringRef, CFStringRefObj_New); 4882 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFStringRef, CFStringRefObj_Convert); 4883 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableStringRef, CFMutableStringRefObj_New); 4884 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableStringRef, CFMutableStringRefObj_Convert); 4885 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFArrayRef, CFArrayRefObj_New); 4886 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFArrayRef, CFArrayRefObj_Convert); 4887 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableArrayRef, CFMutableArrayRefObj_New); 4888 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableArrayRef, CFMutableArrayRefObj_Convert); 4889 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFDictionaryRef, CFDictionaryRefObj_New); 4890 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFDictionaryRef, CFDictionaryRefObj_Convert); 4891 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableDictionaryRef, CFMutableDictionaryRefObj_New); 4892 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableDictionaryRef, CFMutableDictionaryRefObj_Convert); 4893 PyMac_INIT_TOOLBOX_OBJECT_NEW(CFURLRef, CFURLRefObj_New); 4894 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFURLRef, CFURLRefObj_Convert); 4895 4896 4897 m = Py_InitModule("_CF", CF_methods); 4898 d = PyModule_GetDict(m); 4899 CF_Error = PyMac_GetOSErrException(); 4900 if (CF_Error == NULL || 4901 PyDict_SetItemString(d, "Error", CF_Error) != 0) 4902 return; 4903 CFTypeRef_Type.ob_type = &PyType_Type; 4904 if (PyType_Ready(&CFTypeRef_Type) < 0) return; 4905 Py_INCREF(&CFTypeRef_Type); 4906 PyModule_AddObject(m, "CFTypeRef", (PyObject *)&CFTypeRef_Type); 4907 /* Backward-compatible name */ 4908 Py_INCREF(&CFTypeRef_Type); 4909 PyModule_AddObject(m, "CFTypeRefType", (PyObject *)&CFTypeRef_Type); 4910 CFArrayRef_Type.ob_type = &PyType_Type; 4911 CFArrayRef_Type.tp_base = &CFTypeRef_Type; 4912 if (PyType_Ready(&CFArrayRef_Type) < 0) return; 4913 Py_INCREF(&CFArrayRef_Type); 4914 PyModule_AddObject(m, "CFArrayRef", (PyObject *)&CFArrayRef_Type); 4915 /* Backward-compatible name */ 4916 Py_INCREF(&CFArrayRef_Type); 4917 PyModule_AddObject(m, "CFArrayRefType", (PyObject *)&CFArrayRef_Type); 4918 CFMutableArrayRef_Type.ob_type = &PyType_Type; 4919 CFMutableArrayRef_Type.tp_base = &CFArrayRef_Type; 4920 if (PyType_Ready(&CFMutableArrayRef_Type) < 0) return; 4921 Py_INCREF(&CFMutableArrayRef_Type); 4922 PyModule_AddObject(m, "CFMutableArrayRef", (PyObject *)&CFMutableArrayRef_Type); 4923 /* Backward-compatible name */ 4924 Py_INCREF(&CFMutableArrayRef_Type); 4925 PyModule_AddObject(m, "CFMutableArrayRefType", (PyObject *)&CFMutableArrayRef_Type); 4926 CFDictionaryRef_Type.ob_type = &PyType_Type; 4927 CFDictionaryRef_Type.tp_base = &CFTypeRef_Type; 4928 if (PyType_Ready(&CFDictionaryRef_Type) < 0) return; 4929 Py_INCREF(&CFDictionaryRef_Type); 4930 PyModule_AddObject(m, "CFDictionaryRef", (PyObject *)&CFDictionaryRef_Type); 4931 /* Backward-compatible name */ 4932 Py_INCREF(&CFDictionaryRef_Type); 4933 PyModule_AddObject(m, "CFDictionaryRefType", (PyObject *)&CFDictionaryRef_Type); 4934 CFMutableDictionaryRef_Type.ob_type = &PyType_Type; 4935 CFMutableDictionaryRef_Type.tp_base = &CFDictionaryRef_Type; 4936 if (PyType_Ready(&CFMutableDictionaryRef_Type) < 0) return; 4937 Py_INCREF(&CFMutableDictionaryRef_Type); 4938 PyModule_AddObject(m, "CFMutableDictionaryRef", (PyObject *)&CFMutableDictionaryRef_Type); 4939 /* Backward-compatible name */ 4940 Py_INCREF(&CFMutableDictionaryRef_Type); 4941 PyModule_AddObject(m, "CFMutableDictionaryRefType", (PyObject *)&CFMutableDictionaryRef_Type); 4942 CFDataRef_Type.ob_type = &PyType_Type; 4943 CFDataRef_Type.tp_base = &CFTypeRef_Type; 4944 if (PyType_Ready(&CFDataRef_Type) < 0) return; 4945 Py_INCREF(&CFDataRef_Type); 4946 PyModule_AddObject(m, "CFDataRef", (PyObject *)&CFDataRef_Type); 4947 /* Backward-compatible name */ 4948 Py_INCREF(&CFDataRef_Type); 4949 PyModule_AddObject(m, "CFDataRefType", (PyObject *)&CFDataRef_Type); 4950 CFMutableDataRef_Type.ob_type = &PyType_Type; 4951 CFMutableDataRef_Type.tp_base = &CFDataRef_Type; 4952 if (PyType_Ready(&CFMutableDataRef_Type) < 0) return; 4953 Py_INCREF(&CFMutableDataRef_Type); 4954 PyModule_AddObject(m, "CFMutableDataRef", (PyObject *)&CFMutableDataRef_Type); 4955 /* Backward-compatible name */ 4956 Py_INCREF(&CFMutableDataRef_Type); 4957 PyModule_AddObject(m, "CFMutableDataRefType", (PyObject *)&CFMutableDataRef_Type); 4958 CFStringRef_Type.ob_type = &PyType_Type; 4959 CFStringRef_Type.tp_base = &CFTypeRef_Type; 4960 if (PyType_Ready(&CFStringRef_Type) < 0) return; 4961 Py_INCREF(&CFStringRef_Type); 4962 PyModule_AddObject(m, "CFStringRef", (PyObject *)&CFStringRef_Type); 4963 /* Backward-compatible name */ 4964 Py_INCREF(&CFStringRef_Type); 4965 PyModule_AddObject(m, "CFStringRefType", (PyObject *)&CFStringRef_Type); 4966 CFMutableStringRef_Type.ob_type = &PyType_Type; 4967 CFMutableStringRef_Type.tp_base = &CFStringRef_Type; 4968 if (PyType_Ready(&CFMutableStringRef_Type) < 0) return; 4969 Py_INCREF(&CFMutableStringRef_Type); 4970 PyModule_AddObject(m, "CFMutableStringRef", (PyObject *)&CFMutableStringRef_Type); 4971 /* Backward-compatible name */ 4972 Py_INCREF(&CFMutableStringRef_Type); 4973 PyModule_AddObject(m, "CFMutableStringRefType", (PyObject *)&CFMutableStringRef_Type); 4974 CFURLRef_Type.ob_type = &PyType_Type; 4975 CFURLRef_Type.tp_base = &CFTypeRef_Type; 4976 if (PyType_Ready(&CFURLRef_Type) < 0) return; 4977 Py_INCREF(&CFURLRef_Type); 4978 PyModule_AddObject(m, "CFURLRef", (PyObject *)&CFURLRef_Type); 4979 /* Backward-compatible name */ 4980 Py_INCREF(&CFURLRef_Type); 4981 PyModule_AddObject(m, "CFURLRefType", (PyObject *)&CFURLRef_Type); 4982 4982 4983 4983 #define _STRINGCONST(name) PyModule_AddObject(m, #name, CFStringRefObj_New(name)) 4984 _STRINGCONST(kCFPreferencesAnyApplication);4985 _STRINGCONST(kCFPreferencesCurrentApplication);4986 _STRINGCONST(kCFPreferencesAnyHost);4987 _STRINGCONST(kCFPreferencesCurrentHost);4988 _STRINGCONST(kCFPreferencesAnyUser);4989 _STRINGCONST(kCFPreferencesCurrentUser);4984 _STRINGCONST(kCFPreferencesAnyApplication); 4985 _STRINGCONST(kCFPreferencesCurrentApplication); 4986 _STRINGCONST(kCFPreferencesAnyHost); 4987 _STRINGCONST(kCFPreferencesCurrentHost); 4988 _STRINGCONST(kCFPreferencesAnyUser); 4989 _STRINGCONST(kCFPreferencesCurrentUser); 4990 4990 4991 4991 -
python/trunk/Mac/Modules/cf/pycfbridge.c
r2 r391 16 16 PyObject * 17 17 PyCF_CF2Python(CFTypeRef src) { 18 CFTypeID typeid;19 20 if( src == NULL ) {21 Py_INCREF(Py_None);22 return Py_None;23 }24 typeid = CFGetTypeID(src);25 if (typeid == CFArrayGetTypeID())26 return PyCF_CF2Python_sequence((CFArrayRef)src);27 if (typeid == CFDictionaryGetTypeID())28 return PyCF_CF2Python_mapping((CFDictionaryRef)src);29 return PyCF_CF2Python_simple(src);18 CFTypeID typeid; 19 20 if( src == NULL ) { 21 Py_INCREF(Py_None); 22 return Py_None; 23 } 24 typeid = CFGetTypeID(src); 25 if (typeid == CFArrayGetTypeID()) 26 return PyCF_CF2Python_sequence((CFArrayRef)src); 27 if (typeid == CFDictionaryGetTypeID()) 28 return PyCF_CF2Python_mapping((CFDictionaryRef)src); 29 return PyCF_CF2Python_simple(src); 30 30 } 31 31 32 32 PyObject * 33 33 PyCF_CF2Python_sequence(CFArrayRef src) { 34 int size = CFArrayGetCount(src);35 PyObject *rv;36 CFTypeRef item_cf;37 PyObject *item_py = NULL;38 int i;39 40 if ( (rv=PyList_New(size)) == NULL )41 return NULL;42 for(i=0; i<size; i++) {43 item_cf = CFArrayGetValueAtIndex(src, i);44 if (item_cf == NULL ) goto err;45 item_py = PyCF_CF2Python(item_cf);46 if (item_py == NULL ) goto err;47 if (PyList_SetItem(rv, i, item_py) < 0) goto err;48 item_py = NULL;49 }50 return rv;51 err: 52 Py_XDECREF(item_py);53 Py_DECREF(rv);54 return NULL;34 int size = CFArrayGetCount(src); 35 PyObject *rv; 36 CFTypeRef item_cf; 37 PyObject *item_py = NULL; 38 int i; 39 40 if ( (rv=PyList_New(size)) == NULL ) 41 return NULL; 42 for(i=0; i<size; i++) { 43 item_cf = CFArrayGetValueAtIndex(src, i); 44 if (item_cf == NULL ) goto err; 45 item_py = PyCF_CF2Python(item_cf); 46 if (item_py == NULL ) goto err; 47 if (PyList_SetItem(rv, i, item_py) < 0) goto err; 48 item_py = NULL; 49 } 50 return rv; 51 err: 52 Py_XDECREF(item_py); 53 Py_DECREF(rv); 54 return NULL; 55 55 } 56 56 57 57 PyObject * 58 58 PyCF_CF2Python_mapping(CFTypeRef src) { 59 int size = CFDictionaryGetCount(src);60 PyObject *rv = NULL;61 CFTypeRef *allkeys = NULL, *allvalues = NULL;62 CFTypeRef key_cf, value_cf;63 PyObject *key_py = NULL, *value_py = NULL;64 int i;65 66 allkeys = malloc(size*sizeof(CFTypeRef *));67 if (allkeys == NULL) {68 PyErr_NoMemory();69 goto err;70 }71 allvalues = malloc(size*sizeof(CFTypeRef *));72 if (allvalues == NULL) {73 PyErr_NoMemory();74 goto err;75 }76 if ( (rv=PyDict_New()) == NULL ) goto err;77 CFDictionaryGetKeysAndValues(src, allkeys, allvalues);78 for(i=0; i<size; i++) {79 key_cf = allkeys[i];80 value_cf = allvalues[i];81 key_py = PyCF_CF2Python(key_cf);82 if (key_py == NULL ) goto err;83 value_py = PyCF_CF2Python(value_cf);84 if (value_py == NULL ) goto err;85 if (PyDict_SetItem(rv, key_py, value_py) < 0) goto err;86 key_py = NULL;87 value_py = NULL;88 }89 return rv;90 err: 91 Py_XDECREF(key_py);92 Py_XDECREF(value_py);93 Py_XDECREF(rv);94 free(allkeys);95 free(allvalues);96 return NULL;59 int size = CFDictionaryGetCount(src); 60 PyObject *rv = NULL; 61 CFTypeRef *allkeys = NULL, *allvalues = NULL; 62 CFTypeRef key_cf, value_cf; 63 PyObject *key_py = NULL, *value_py = NULL; 64 int i; 65 66 allkeys = malloc(size*sizeof(CFTypeRef *)); 67 if (allkeys == NULL) { 68 PyErr_NoMemory(); 69 goto err; 70 } 71 allvalues = malloc(size*sizeof(CFTypeRef *)); 72 if (allvalues == NULL) { 73 PyErr_NoMemory(); 74 goto err; 75 } 76 if ( (rv=PyDict_New()) == NULL ) goto err; 77 CFDictionaryGetKeysAndValues(src, allkeys, allvalues); 78 for(i=0; i<size; i++) { 79 key_cf = allkeys[i]; 80 value_cf = allvalues[i]; 81 key_py = PyCF_CF2Python(key_cf); 82 if (key_py == NULL ) goto err; 83 value_py = PyCF_CF2Python(value_cf); 84 if (value_py == NULL ) goto err; 85 if (PyDict_SetItem(rv, key_py, value_py) < 0) goto err; 86 key_py = NULL; 87 value_py = NULL; 88 } 89 return rv; 90 err: 91 Py_XDECREF(key_py); 92 Py_XDECREF(value_py); 93 Py_XDECREF(rv); 94 free(allkeys); 95 free(allvalues); 96 return NULL; 97 97 } 98 98 99 99 PyObject * 100 100 PyCF_CF2Python_simple(CFTypeRef src) { 101 CFTypeID typeid;102 103 typeid = CFGetTypeID(src);104 if (typeid == CFStringGetTypeID())105 return PyCF_CF2Python_string((CFStringRef)src);106 if (typeid == CFBooleanGetTypeID())107 return PyBool_FromLong((long)CFBooleanGetValue(src));108 if (typeid == CFNumberGetTypeID()) {109 if (CFNumberIsFloatType(src)) {110 double d;111 CFNumberGetValue(src, kCFNumberDoubleType, &d);112 return PyFloat_FromDouble(d);113 } else {114 long l;115 if (!CFNumberGetValue(src, kCFNumberLongType, &l))116 /* XXXX Out of range! */;117 return PyInt_FromLong(l);118 }119 }120 /* XXXX Should return as CFTypeRef, really... */121 PyMac_Error(resNotFound);122 return NULL;101 CFTypeID typeid; 102 103 typeid = CFGetTypeID(src); 104 if (typeid == CFStringGetTypeID()) 105 return PyCF_CF2Python_string((CFStringRef)src); 106 if (typeid == CFBooleanGetTypeID()) 107 return PyBool_FromLong((long)CFBooleanGetValue(src)); 108 if (typeid == CFNumberGetTypeID()) { 109 if (CFNumberIsFloatType(src)) { 110 double d; 111 CFNumberGetValue(src, kCFNumberDoubleType, &d); 112 return PyFloat_FromDouble(d); 113 } else { 114 long l; 115 if (!CFNumberGetValue(src, kCFNumberLongType, &l)) 116 /* XXXX Out of range! */; 117 return PyInt_FromLong(l); 118 } 119 } 120 /* XXXX Should return as CFTypeRef, really... */ 121 PyMac_Error(resNotFound); 122 return NULL; 123 123 } 124 124 … … 126 126 PyObject * 127 127 PyCF_CF2Python_string(CFStringRef src) { 128 int size = CFStringGetLength(src)+1;129 Py_UNICODE *data = malloc(size*sizeof(Py_UNICODE));130 CFRange range;131 PyObject *rv;132 133 range.location = 0;134 range.length = size;135 if( data == NULL ) return PyErr_NoMemory();136 CFStringGetCharacters(src, range, data);137 rv = (PyObject *)PyUnicode_FromUnicode(data, size-1);138 free(data);139 return rv;128 int size = CFStringGetLength(src)+1; 129 Py_UNICODE *data = malloc(size*sizeof(Py_UNICODE)); 130 CFRange range; 131 PyObject *rv; 132 133 range.location = 0; 134 range.length = size; 135 if( data == NULL ) return PyErr_NoMemory(); 136 CFStringGetCharacters(src, range, data); 137 rv = (PyObject *)PyUnicode_FromUnicode(data, size-1); 138 free(data); 139 return rv; 140 140 } 141 141 … … 147 147 PyCF_Python2CF(PyObject *src, CFTypeRef *dst) { 148 148 149 if (PyString_Check(src) || PyUnicode_Check(src))150 return PyCF_Python2CF_simple(src, dst);151 if (PySequence_Check(src))152 return PyCF_Python2CF_sequence(src, (CFArrayRef *)dst);153 if (PyMapping_Check(src))154 return PyCF_Python2CF_mapping(src, (CFDictionaryRef *)dst);155 return PyCF_Python2CF_simple(src, dst);149 if (PyString_Check(src) || PyUnicode_Check(src)) 150 return PyCF_Python2CF_simple(src, dst); 151 if (PySequence_Check(src)) 152 return PyCF_Python2CF_sequence(src, (CFArrayRef *)dst); 153 if (PyMapping_Check(src)) 154 return PyCF_Python2CF_mapping(src, (CFDictionaryRef *)dst); 155 return PyCF_Python2CF_simple(src, dst); 156 156 } 157 157 158 158 int 159 159 PyCF_Python2CF_sequence(PyObject *src, CFArrayRef *dst) { 160 CFMutableArrayRef rv = NULL;161 CFTypeRef item_cf = NULL;162 PyObject *item_py = NULL;163 int size, i;164 165 if( !PySequence_Check(src) ) {166 PyErr_Format(PyExc_TypeError,167 "Cannot convert %.500s objects to CFArray",168 src->ob_type->tp_name);169 return 0;170 }171 size = PySequence_Size(src);172 rv = CFArrayCreateMutable((CFAllocatorRef)NULL, size, &kCFTypeArrayCallBacks);173 if (rv == NULL) {174 PyMac_Error(resNotFound); 175 goto err;176 }177 178 for( i=0; i<size; i++) {179 item_py = PySequence_GetItem(src, i);180 if (item_py == NULL) goto err;181 if ( !PyCF_Python2CF(item_py, &item_cf)) goto err;182 Py_DECREF(item_py);183 CFArraySetValueAtIndex(rv, i, item_cf);184 CFRelease(item_cf);185 item_cf = NULL;186 }187 *dst = rv;188 return 1;189 err: 190 Py_XDECREF(item_py);191 if (rv) CFRelease(rv);192 if (item_cf) CFRelease(item_cf);193 return 0; 160 CFMutableArrayRef rv = NULL; 161 CFTypeRef item_cf = NULL; 162 PyObject *item_py = NULL; 163 int size, i; 164 165 if( !PySequence_Check(src) ) { 166 PyErr_Format(PyExc_TypeError, 167 "Cannot convert %.500s objects to CFArray", 168 src->ob_type->tp_name); 169 return 0; 170 } 171 size = PySequence_Size(src); 172 rv = CFArrayCreateMutable((CFAllocatorRef)NULL, size, &kCFTypeArrayCallBacks); 173 if (rv == NULL) { 174 PyMac_Error(resNotFound); 175 goto err; 176 } 177 178 for( i=0; i<size; i++) { 179 item_py = PySequence_GetItem(src, i); 180 if (item_py == NULL) goto err; 181 if ( !PyCF_Python2CF(item_py, &item_cf)) goto err; 182 Py_DECREF(item_py); 183 CFArraySetValueAtIndex(rv, i, item_cf); 184 CFRelease(item_cf); 185 item_cf = NULL; 186 } 187 *dst = rv; 188 return 1; 189 err: 190 Py_XDECREF(item_py); 191 if (rv) CFRelease(rv); 192 if (item_cf) CFRelease(item_cf); 193 return 0; 194 194 } 195 195 196 196 int 197 197 PyCF_Python2CF_mapping(PyObject *src, CFDictionaryRef *dst) { 198 CFMutableDictionaryRef rv = NULL;199 PyObject *aslist = NULL;200 CFTypeRef key_cf = NULL, value_cf = NULL;201 PyObject *item_py = NULL, *key_py = NULL, *value_py = NULL;202 int size, i;203 204 if( !PyMapping_Check(src) ) {205 PyErr_Format(PyExc_TypeError,206 "Cannot convert %.500s objects to CFDictionary",207 src->ob_type->tp_name);208 return 0;209 }210 size = PyMapping_Size(src);211 rv = CFDictionaryCreateMutable((CFAllocatorRef)NULL, size,212 &kCFTypeDictionaryKeyCallBacks,213 &kCFTypeDictionaryValueCallBacks);214 if (rv == NULL) {215 PyMac_Error(resNotFound); 216 goto err;217 }218 if ( (aslist = PyMapping_Items(src)) == NULL ) goto err;219 220 for( i=0; i<size; i++) {221 item_py = PySequence_GetItem(aslist, i);222 if (item_py == NULL) goto err;223 if (!PyArg_ParseTuple(item_py, "OO", &key_py, &value_py)) goto err;224 if ( !PyCF_Python2CF(key_py, &key_cf) ) goto err;225 if ( !PyCF_Python2CF(value_py, &value_cf) ) goto err;226 CFDictionaryAddValue(rv, key_cf, value_cf);227 CFRelease(key_cf);228 key_cf = NULL;229 CFRelease(value_cf);230 value_cf = NULL;231 }232 *dst = rv;233 return 1;234 err: 235 Py_XDECREF(item_py);236 Py_XDECREF(aslist);237 if (rv) CFRelease(rv);238 if (key_cf) CFRelease(key_cf);239 if (value_cf) CFRelease(value_cf);240 return 0; 198 CFMutableDictionaryRef rv = NULL; 199 PyObject *aslist = NULL; 200 CFTypeRef key_cf = NULL, value_cf = NULL; 201 PyObject *item_py = NULL, *key_py = NULL, *value_py = NULL; 202 int size, i; 203 204 if( !PyMapping_Check(src) ) { 205 PyErr_Format(PyExc_TypeError, 206 "Cannot convert %.500s objects to CFDictionary", 207 src->ob_type->tp_name); 208 return 0; 209 } 210 size = PyMapping_Size(src); 211 rv = CFDictionaryCreateMutable((CFAllocatorRef)NULL, size, 212 &kCFTypeDictionaryKeyCallBacks, 213 &kCFTypeDictionaryValueCallBacks); 214 if (rv == NULL) { 215 PyMac_Error(resNotFound); 216 goto err; 217 } 218 if ( (aslist = PyMapping_Items(src)) == NULL ) goto err; 219 220 for( i=0; i<size; i++) { 221 item_py = PySequence_GetItem(aslist, i); 222 if (item_py == NULL) goto err; 223 if (!PyArg_ParseTuple(item_py, "OO", &key_py, &value_py)) goto err; 224 if ( !PyCF_Python2CF(key_py, &key_cf) ) goto err; 225 if ( !PyCF_Python2CF(value_py, &value_cf) ) goto err; 226 CFDictionaryAddValue(rv, key_cf, value_cf); 227 CFRelease(key_cf); 228 key_cf = NULL; 229 CFRelease(value_cf); 230 value_cf = NULL; 231 } 232 *dst = rv; 233 return 1; 234 err: 235 Py_XDECREF(item_py); 236 Py_XDECREF(aslist); 237 if (rv) CFRelease(rv); 238 if (key_cf) CFRelease(key_cf); 239 if (value_cf) CFRelease(value_cf); 240 return 0; 241 241 } 242 242 243 243 int 244 244 PyCF_Python2CF_simple(PyObject *src, CFTypeRef *dst) { 245 245 246 246 #if 0 247 if (PyObject_HasAttrString(src, "CFType")) {248 *dst = PyObject_CallMethod(src, "CFType", "");249 return (*dst != NULL);250 }247 if (PyObject_HasAttrString(src, "CFType")) { 248 *dst = PyObject_CallMethod(src, "CFType", ""); 249 return (*dst != NULL); 250 } 251 251 #endif 252 if (PyString_Check(src) || PyUnicode_Check(src)) 253 return PyCF_Python2CF_string(src, (CFStringRef *)dst);254 if (PyBool_Check(src)) {255 if (src == Py_True)256 *dst = kCFBooleanTrue;257 else258 *dst = kCFBooleanFalse;259 return 1;260 }261 if (PyInt_Check(src)) {262 long v = PyInt_AsLong(src);263 *dst = CFNumberCreate(NULL, kCFNumberLongType, &v);264 return 1;265 }266 if (PyFloat_Check(src)) {267 double d = PyFloat_AsDouble(src);268 *dst = CFNumberCreate(NULL, kCFNumberDoubleType, &d);269 return 1;270 }271 272 PyErr_Format(PyExc_TypeError,273 "Cannot convert %.500s objects to CFType",274 src->ob_type->tp_name);275 return 0;252 if (PyString_Check(src) || PyUnicode_Check(src)) 253 return PyCF_Python2CF_string(src, (CFStringRef *)dst); 254 if (PyBool_Check(src)) { 255 if (src == Py_True) 256 *dst = kCFBooleanTrue; 257 else 258 *dst = kCFBooleanFalse; 259 return 1; 260 } 261 if (PyInt_Check(src)) { 262 long v = PyInt_AsLong(src); 263 *dst = CFNumberCreate(NULL, kCFNumberLongType, &v); 264 return 1; 265 } 266 if (PyFloat_Check(src)) { 267 double d = PyFloat_AsDouble(src); 268 *dst = CFNumberCreate(NULL, kCFNumberDoubleType, &d); 269 return 1; 270 } 271 272 PyErr_Format(PyExc_TypeError, 273 "Cannot convert %.500s objects to CFType", 274 src->ob_type->tp_name); 275 return 0; 276 276 } 277 277 278 278 int 279 279 PyCF_Python2CF_string(PyObject *src, CFStringRef *dst) { 280 char *chars;281 CFIndex size;282 UniChar *unichars;283 284 if (PyString_Check(src)) {285 if (!PyArg_Parse(src, "es", "ascii", &chars))286 return 0; /* This error is more descriptive than the general one below */287 *dst = CFStringCreateWithCString((CFAllocatorRef)NULL, chars, kCFStringEncodingASCII);288 PyMem_Free(chars);289 return 1;290 }291 if (PyUnicode_Check(src)) {292 /* We use the CF types here, if Python was configured differently that will give an error */293 size = PyUnicode_GetSize(src);294 if ((unichars = PyUnicode_AsUnicode(src)) == NULL ) goto err;295 *dst = CFStringCreateWithCharacters((CFAllocatorRef)NULL, unichars, size);296 return 1;297 }298 err: 299 PyErr_Format(PyExc_TypeError,300 "Cannot convert %.500s objects to CFString",301 src->ob_type->tp_name);302 return 0;303 } 280 char *chars; 281 CFIndex size; 282 UniChar *unichars; 283 284 if (PyString_Check(src)) { 285 if (!PyArg_Parse(src, "es", "ascii", &chars)) 286 return 0; /* This error is more descriptive than the general one below */ 287 *dst = CFStringCreateWithCString((CFAllocatorRef)NULL, chars, kCFStringEncodingASCII); 288 PyMem_Free(chars); 289 return 1; 290 } 291 if (PyUnicode_Check(src)) { 292 /* We use the CF types here, if Python was configured differently that will give an error */ 293 size = PyUnicode_GetSize(src); 294 if ((unichars = PyUnicode_AsUnicode(src)) == NULL ) goto err; 295 *dst = CFStringCreateWithCharacters((CFAllocatorRef)NULL, unichars, size); 296 return 1; 297 } 298 err: 299 PyErr_Format(PyExc_TypeError, 300 "Cannot convert %.500s objects to CFString", 301 src->ob_type->tp_name); 302 return 0; 303 }
Note:
See TracChangeset
for help on using the changeset viewer.
