@@ -506,145 +506,6 @@ unicodeFromTclObj(Tcl_Obj *value)
506
506
#endif
507
507
}
508
508
509
-
510
- static PyObject *
511
- Split (const char * list )
512
- {
513
- int argc ;
514
- const char * * argv ;
515
- PyObject * v ;
516
-
517
- if (list == NULL ) {
518
- Py_RETURN_NONE ;
519
- }
520
-
521
- if (Tcl_SplitList ((Tcl_Interp * )NULL , list , & argc , & argv ) != TCL_OK ) {
522
- /* Not a list.
523
- * Could be a quoted string containing funnies, e.g. {"}.
524
- * Return the string itself.
525
- */
526
- return unicodeFromTclString (list );
527
- }
528
-
529
- if (argc == 0 )
530
- v = PyUnicode_FromString ("" );
531
- else if (argc == 1 )
532
- v = unicodeFromTclString (argv [0 ]);
533
- else if ((v = PyTuple_New (argc )) != NULL ) {
534
- int i ;
535
- PyObject * w ;
536
-
537
- for (i = 0 ; i < argc ; i ++ ) {
538
- if ((w = Split (argv [i ])) == NULL ) {
539
- Py_DECREF (v );
540
- v = NULL ;
541
- break ;
542
- }
543
- PyTuple_SET_ITEM (v , i , w );
544
- }
545
- }
546
- Tcl_Free (FREECAST argv );
547
- return v ;
548
- }
549
-
550
- /* In some cases, Tcl will still return strings that are supposed to
551
- be lists. SplitObj walks through a nested tuple, finding string
552
- objects that need to be split. */
553
-
554
- static PyObject *
555
- SplitObj (PyObject * arg )
556
- {
557
- if (PyTuple_Check (arg )) {
558
- Py_ssize_t i , size ;
559
- PyObject * elem , * newelem , * result ;
560
-
561
- size = PyTuple_GET_SIZE (arg );
562
- result = NULL ;
563
- /* Recursively invoke SplitObj for all tuple items.
564
- If this does not return a new object, no action is
565
- needed. */
566
- for (i = 0 ; i < size ; i ++ ) {
567
- elem = PyTuple_GET_ITEM (arg , i );
568
- newelem = SplitObj (elem );
569
- if (!newelem ) {
570
- Py_XDECREF (result );
571
- return NULL ;
572
- }
573
- if (!result ) {
574
- Py_ssize_t k ;
575
- if (newelem == elem ) {
576
- Py_DECREF (newelem );
577
- continue ;
578
- }
579
- result = PyTuple_New (size );
580
- if (!result )
581
- return NULL ;
582
- for (k = 0 ; k < i ; k ++ ) {
583
- elem = PyTuple_GET_ITEM (arg , k );
584
- Py_INCREF (elem );
585
- PyTuple_SET_ITEM (result , k , elem );
586
- }
587
- }
588
- PyTuple_SET_ITEM (result , i , newelem );
589
- }
590
- if (result )
591
- return result ;
592
- /* Fall through, returning arg. */
593
- }
594
- else if (PyList_Check (arg )) {
595
- Py_ssize_t i , size ;
596
- PyObject * elem , * newelem , * result ;
597
-
598
- size = PyList_GET_SIZE (arg );
599
- result = PyTuple_New (size );
600
- if (!result )
601
- return NULL ;
602
- /* Recursively invoke SplitObj for all list items. */
603
- for (i = 0 ; i < size ; i ++ ) {
604
- elem = PyList_GET_ITEM (arg , i );
605
- newelem = SplitObj (elem );
606
- if (!newelem ) {
607
- Py_XDECREF (result );
608
- return NULL ;
609
- }
610
- PyTuple_SET_ITEM (result , i , newelem );
611
- }
612
- return result ;
613
- }
614
- else if (PyUnicode_Check (arg )) {
615
- int argc ;
616
- const char * * argv ;
617
- const char * list = PyUnicode_AsUTF8 (arg );
618
-
619
- if (list == NULL ||
620
- Tcl_SplitList ((Tcl_Interp * )NULL , list , & argc , & argv ) != TCL_OK ) {
621
- Py_INCREF (arg );
622
- return arg ;
623
- }
624
- Tcl_Free (FREECAST argv );
625
- if (argc > 1 )
626
- return Split (list );
627
- /* Fall through, returning arg. */
628
- }
629
- else if (PyBytes_Check (arg )) {
630
- int argc ;
631
- const char * * argv ;
632
- const char * list = PyBytes_AS_STRING (arg );
633
-
634
- if (Tcl_SplitList ((Tcl_Interp * )NULL , (char * )list , & argc , & argv ) != TCL_OK ) {
635
- Py_INCREF (arg );
636
- return arg ;
637
- }
638
- Tcl_Free (FREECAST argv );
639
- if (argc > 1 )
640
- return Split (PyBytes_AS_STRING (arg ));
641
- /* Fall through, returning arg. */
642
- }
643
- Py_INCREF (arg );
644
- return arg ;
645
- }
646
-
647
-
648
509
/*[clinic input]
649
510
module _tkinter
650
511
class _tkinter.tkapp "TkappObject *" "&Tkapp_Type_spec"
@@ -2342,68 +2203,6 @@ _tkinter_tkapp_splitlist(TkappObject *self, PyObject *arg)
2342
2203
return v ;
2343
2204
}
2344
2205
2345
- /*[clinic input]
2346
- _tkinter.tkapp.split
2347
-
2348
- arg: object
2349
- /
2350
-
2351
- [clinic start generated code]*/
2352
-
2353
- static PyObject *
2354
- _tkinter_tkapp_split (TkappObject * self , PyObject * arg )
2355
- /*[clinic end generated code: output=e08ad832363facfd input=a1c78349eacaa140]*/
2356
- {
2357
- PyObject * v ;
2358
- char * list ;
2359
-
2360
- if (PyErr_WarnEx (PyExc_DeprecationWarning ,
2361
- "split() is deprecated; consider using splitlist() instead" , 1 ))
2362
- {
2363
- return NULL ;
2364
- }
2365
-
2366
- if (PyTclObject_Check (arg )) {
2367
- Tcl_Obj * value = ((PyTclObject * )arg )-> value ;
2368
- int objc ;
2369
- Tcl_Obj * * objv ;
2370
- int i ;
2371
- if (Tcl_ListObjGetElements (Tkapp_Interp (self ), value ,
2372
- & objc , & objv ) == TCL_ERROR ) {
2373
- return FromObj (self , value );
2374
- }
2375
- if (objc == 0 )
2376
- return PyUnicode_FromString ("" );
2377
- if (objc == 1 )
2378
- return FromObj (self , objv [0 ]);
2379
- if (!(v = PyTuple_New (objc )))
2380
- return NULL ;
2381
- for (i = 0 ; i < objc ; i ++ ) {
2382
- PyObject * s = FromObj (self , objv [i ]);
2383
- if (!s ) {
2384
- Py_DECREF (v );
2385
- return NULL ;
2386
- }
2387
- PyTuple_SET_ITEM (v , i , s );
2388
- }
2389
- return v ;
2390
- }
2391
- if (PyTuple_Check (arg ) || PyList_Check (arg ))
2392
- return SplitObj (arg );
2393
-
2394
- if (!PyArg_Parse (arg , "et:split" , "utf-8" , & list ))
2395
- return NULL ;
2396
- if (strlen (list ) >= INT_MAX ) {
2397
- PyErr_SetString (PyExc_OverflowError , "string is too long" );
2398
- PyMem_Free (list );
2399
- return NULL ;
2400
- }
2401
- v = Split (list );
2402
- PyMem_Free (list );
2403
- return v ;
2404
- }
2405
-
2406
-
2407
2206
2408
2207
/** Tcl Command **/
2409
2208
@@ -3331,7 +3130,6 @@ static PyMethodDef Tkapp_methods[] =
3331
3130
_TKINTER_TKAPP_EXPRDOUBLE_METHODDEF
3332
3131
_TKINTER_TKAPP_EXPRBOOLEAN_METHODDEF
3333
3132
_TKINTER_TKAPP_SPLITLIST_METHODDEF
3334
- _TKINTER_TKAPP_SPLIT_METHODDEF
3335
3133
_TKINTER_TKAPP_CREATECOMMAND_METHODDEF
3336
3134
_TKINTER_TKAPP_DELETECOMMAND_METHODDEF
3337
3135
_TKINTER_TKAPP_CREATEFILEHANDLER_METHODDEF
0 commit comments