Changeset 10954

Show
Ignore:
Timestamp:
06/09/07 11:56:07 (2 years ago)
Author:
piotras
Message:

Initialize objects with php_midgard_object_init ( wherever it's possible )

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/midgard/apis/php4/midgard.c

    r10911 r10954  
    4343/* True global resources - no need for thread safety here */ 
    4444GHashTable * midgard_registered_types; 
    45 static MidgardSchema *midgard_global_schema
     45static MidgardSchema *midgard_global_schema = NULL
    4646static zend_class_entry *midgard_metadata_class; 
    4747static zend_class_entry *ce_midgard_exception; 
     
    352352                        zval *zobject; 
    353353                        MAKE_STD_ZVAL(zobject); 
    354                         object_init_ex(zobject, Z_OBJCE_P(zval_object)); 
    355                          
     354                        php_midgard_gobject_new_with_gobject(zobject, Z_OBJCE_P(zval_object),  
     355                                       objects[i], TRUE); 
    356356                        zend_hash_next_index_insert( 
    357357                                        HASH_OF(return_value), &zobject, sizeof(zval *), NULL); 
    358                         g_object_unref(objects[i]); 
    359358                } 
    360359                 
     
    365364        }         
    366365} 
    367  
    368366   
    369367PHP_FUNCTION(_midgard_php_object_create) 
     
    578576                pobj = midgard_object_get_parent(mobj); 
    579577                 
    580                 if(pobj) { 
    581                          
     578                if(pobj) {  
    582579                        type_name = G_OBJECT_TYPE_NAME((GObject*)pobj); 
    583580                        class_name = g_ascii_strdown(type_name, strlen(type_name)); 
    584581                        zend_hash_find(CG(class_table),  
    585582                                        class_name, strlen(class_name)+1, (void **) &pce); 
    586                         object_init_ex(return_value, *pce); 
     583                        php_midgard_gobject_new_with_gobject(return_value, *pce,  
     584                                        G_OBJECT(pobj), TRUE); 
    587585                        g_free(class_name); 
    588586                }      
     
    643641                        for (i = 0; i < holder->elements; i++) { 
    644642                                 
    645                                 zval *zobject; 
    646                                 MAKE_STD_ZVAL(zobject); 
    647                                 gchar *class_name = g_ascii_strdown( 
    648                                                 g_type_name(G_TYPE_FROM_INSTANCE(objects[i])), -1); 
    649  
    650                                 zend_class_entry **ce; 
    651                                 zend_hash_find(CG(class_table),  
    652                                                 class_name, strlen(class_name)+1, (void **) &ce); 
    653                                 object_init_ex(zobject, *ce); 
    654                                 g_free(class_name); 
    655                                  
     643                                zval *zobject = NULL; 
     644                                php_midgard_object_init(zobject,  
     645                                                G_OBJECT_TYPE_NAME(G_OBJECT(objects[i])), 
     646                                                G_OBJECT(objects[i]), TRUE);                     
    656647                                zend_hash_next_index_insert( 
    657648                                                HASH_OF(return_value), &zobject, sizeof(zval *), NULL); 
     
    695686                         
    696687                        for (i = 0; i < holder->elements; i++) { 
    697                                  
    698                                 zval *zobject; 
    699                                 MAKE_STD_ZVAL(zobject); 
    700                                 gchar *class_name = g_ascii_strdown( 
    701                                                 g_type_name(G_TYPE_FROM_INSTANCE(objects[i])), -1); 
    702                                 zend_class_entry **ce; 
    703                                 zend_hash_find(CG(class_table), 
    704                                                 class_name, strlen(class_name)+1, (void **) &ce); 
    705                                 object_init_ex(zobject, *ce); 
    706                                 g_free(class_name); 
    707                                  
     688 
     689                                zval *zobject = NULL; 
     690                                php_midgard_object_init(zobject, 
     691                                                G_OBJECT_TYPE_NAME(G_OBJECT(objects[i])), 
     692                                                G_OBJECT(objects[i]), TRUE);                     
    708693                                zend_hash_next_index_insert( 
    709                                                 HASH_OF(return_value), &zobject, sizeof(zval *), NULL); 
     694                                                HASH_OF(return_value),  
     695                                                &zobject, sizeof(zval *), NULL); 
    710696                        }                                                
    711697                } 
     
    813799                while(objects[i] != NULL){ 
    814800                         
    815                         zval *zobject
    816                         MAKE_STD_ZVAL(zobject); 
    817                         object_init_ex(zobject, *ce); 
    818                          
     801                        zval *zobject = NULL
     802                        php_midgard_object_init(zobject, 
     803                                       G_OBJECT_TYPE_NAME(G_OBJECT(objects[i])), 
     804                                       G_OBJECT(objects[i]), TRUE); 
    819805                        zend_hash_next_index_insert( 
    820806                                        HASH_OF(return_value),  
     
    10311017         
    10321018        /* register Gtype types from schemas */ 
    1033         if(!g_type_from_name("midgard_article")) { 
     1019        if(!g_type_from_name("midgard_article")  
     1020                        && midgard_global_schema == NULL) { 
    10341021 
    10351022                midgard_global_schema = g_object_new(MIDGARD_TYPE_SCHEMA, NULL); 
     
    11311118        /* Free connection */ 
    11321119        MidgardConnection *mgd = mgd_handle(); 
    1133         if(mgd != NULL) 
    1134                 g_object_unref(mgd); 
     1120        if(mgd != NULL)  
     1121                g_warning("midgard_close() not yet implemented"); 
    11351122 
    11361123        return SUCCESS; 
     
    11381125 
    11391126PHP_RINIT_FUNCTION(midgard) 
    1140 { 
     1127{       
    11411128        inherited_cnc = NULL; 
    11421129 
    1143         if (SG(server_context)) { 
     1130        if (SG(server_context)) {       
    11441131                MGDG(mgd) = midgard_connection_workaround_get(); 
    11451132        } 
     
    11561143                inherited_cnc = mgd_handle(); 
    11571144 
    1158                 _make_midgard_global(); 
    1159  
    1160                 /* Initialize midgard_request object. 
    1161                  * It's freed with other gobjects */ 
    1162                 zend_class_entry **ce; 
    1163                 zend_hash_find(CG(class_table), "midgard_request", 
    1164                                 sizeof("midgard_request"), (void **) &ce); 
    1165          
    1166                 zval *zobject; 
    1167                 MAKE_STD_ZVAL(zobject); 
    1168                 object_init_ex(zobject, *ce); 
    1169                 php_midgard_gobject_new_with_gobject(zobject, *ce, 
    1170                                 G_OBJECT(mgd_handle()->rcfg)); 
    1171  
     1145                _make_midgard_global();  
    11721146        } 
    11731147         
     
    12161190        */ 
    12171191 
     1192        g_debug("MIDGARD RSHUTDOWN SUCCESS"); 
    12181193        return SUCCESS; 
    12191194} 
     
    12841259 
    12851260        MGDG(mgd) = mgd;     
    1286         _make_midgard_global();  
     1261        /* FIXME, it should be available from MIDGARD_CONNECTION global */ 
     1262        //_make_midgard_global();  
    12871263         
    12881264        if (mgd != NULL){                
     
    14041380 
    14051381static void _make_midgard_global() 
    1406 { 
     1382{       
    14071383        int i;   
    14081384        zval *types, *confv, *mgd_php_globals, *schema_array; 
     
    14111387        GValueArray *array = NULL; 
    14121388         
    1413         TSRMLS_FETCH(); 
     1389        TSRMLS_FETCH();         
    14141390         
    14151391        /* FIXME , we should initialize $MIDGARD object here 
     
    14431419        add_assoc_zval(mgd_php_globals, "schema", schema_array); 
    14441420 
    1445         /* add midgard_request object */ 
    1446         zval *mro; 
    1447         zend_class_entry **mrce; 
    1448  
    1449         zend_lookup_class("midgard_request", strlen("midgard_request"), &mrce TSRMLS_DC); 
    1450          
     1421        zval *mro = NULL; 
    14511422        MAKE_STD_ZVAL(mro); 
    1452         object_init_ex(mro, *mrce);      
    1453         add_assoc_zval(mgd_php_globals, "midgard_request", mro); 
    14541423 
    14551424        /* This can be cli ? */ 
    14561425        if(rcfg == NULL) { 
    1457                  
     1426 
    14581427                MidgardRequest *request = midgard_request_new(); 
    1459                 php_midgard_gobject *php_gobject = 
    1460                         (php_midgard_gobject *)zend_object_store_get_object(mro TSRMLS_CC); 
    1461                 php_gobject->gobject = G_OBJECT(request); 
    1462  
     1428                php_midgard_object_init(mro, "midgard_request", G_OBJECT(request), TRUE); 
     1429                add_assoc_zval(mgd_php_globals, "midgard_request", mro); 
    14631430        } 
    14641431 
     
    14671434 
    14681435                /* MIDGARD_REQUEST */ 
    1469                 php_midgard_gobject *php_gobject = 
    1470                         (php_midgard_gobject *)zend_object_store_get_object(mro TSRMLS_CC); 
    1471                 php_gobject->gobject = G_OBJECT(rcfg); 
     1436                php_midgard_object_init(mro, "midgard_request", G_OBJECT(rcfg), TRUE); 
     1437                add_assoc_zval(mgd_php_globals, "midgard_request", mro); 
    14721438                 
    14731439                /* ARGC */ 
     
    15231489                                GObject *object = g_value_get_object(oval); 
    15241490 
    1525                                 const gchar *_classname =  
    1526                                         G_OBJECT_TYPE_NAME(object); 
    1527                                 gchar *class_name =  
    1528                                         g_ascii_strdown(_classname, -1); 
    1529                                  
    1530                                 zend_class_entry **ce; 
    1531                                 zend_hash_find(CG(class_table), class_name,  
    1532                                                 strlen(class_name)+1, (void **) &ce); 
    1533  
    1534                                 g_free(class_name); 
    1535  
    1536                                 zval *zobject; 
     1491                                zval *zobject = NULL; 
    15371492                                MAKE_STD_ZVAL(zobject); 
    1538                                 object_init_ex(zobject, *ce); 
    1539                                 php_midgard_gobject_new_with_gobject(zobject, *ce,  
    1540                                                 object); 
     1493                                php_midgard_object_init(zobject,  
     1494                                               G_OBJECT_TYPE_NAME(object), 
     1495                                                object, FALSE); 
    15411496 
    15421497                                zend_hash_next_index_insert( 
     
    15591514                /* HOST ID */ 
    15601515                id = 0; 
    1561                 if(rcfg->host) 
     1516                if(rcfg->host) { 
    15621517                        g_object_get(G_OBJECT(rcfg->host), "id", &id, NULL); 
    1563  
     1518                        /* FIXME , Initialize midgard_host for PHP */ 
     1519                } 
     1520         
    15641521                add_assoc_long(mgd_php_globals, "host", id); 
    15651522 
  • trunk/midgard/apis/php4/php_midgard_compat.c

    r10833 r10954  
    8989        /* It's important to initialize *any* object here. 
    9090         * MidgardUser will be automagicaly unref'ed at request end */ 
    91         zend_class_entry **ce; 
    92         zend_hash_find(CG(class_table), "midgard_user", sizeof("midgard_user"), (void **) &ce); 
    93         zval *zobject; 
    94         MAKE_STD_ZVAL(zobject); 
    95         object_init_ex(zobject, *ce); 
    96         php_midgard_gobject_new_with_gobject(zobject, *ce, G_OBJECT(user)); 
     91 
     92        zval *zobject = NULL; 
     93        php_midgard_object_init(zobject, "midgard_user", G_OBJECT(user), TRUE); 
    9794 
    9895        RETURN_TRUE;