Changeset 6149 for branches/stable_5.0
- Timestamp:
- 19/08/09 16:49:28 (3 years ago)
- Location:
- branches/stable_5.0
- Files:
-
- 11 modified
-
ARBDB/ad_load.c (modified) (2 diffs)
-
ARBDB/ad_prot.h (modified) (3 diffs)
-
ARBDB/arbdb.c (modified) (5 diffs)
-
ARBDB/arbdb.h (modified) (2 diffs)
-
SL/DB_SCANNER/db_scanner.cxx (modified) (13 diffs)
-
WINDOW/AW_button.cxx (modified) (15 diffs)
-
WINDOW/AW_nawar.cxx (modified) (10 diffs)
-
WINDOW/AW_window.cxx (modified) (1 diff)
-
WINDOW/aw_root.hxx (modified) (5 diffs)
-
WINDOW/aw_window.hxx (modified) (1 diff)
-
WINDOW/aw_window_Xm.hxx (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/stable_5.0/ARBDB/ad_load.c
r6143 r6149 1510 1510 } 1511 1511 else { 1512 gbd = 0; 1512 gbd = 0; 1513 error = GB_await_error(); 1513 1514 } 1514 1515 } … … 1594 1595 GB_begin_transaction((GBDATA *)gbd); 1595 1596 } 1597 1598 gb_assert(error || gbd); 1596 1599 1597 1600 if (error) { -
branches/stable_5.0/ARBDB/ad_prot.h
r6125 r6149 133 133 long GB_read_int P_((GBDATA *gbd)); 134 134 int GB_read_byte P_((GBDATA *gbd)); 135 void *GB_read_pointer P_((GBDATA *gbd)); 135 136 double GB_read_float P_((GBDATA *gbd)); 136 137 long GB_read_count P_((GBDATA *gbd)); … … 160 161 GB_ERROR GB_write_byte P_((GBDATA *gbd, int i)); 161 162 GB_ERROR GB_write_int P_((GBDATA *gbd, long i)); 163 GB_ERROR GB_write_pointer P_((GBDATA *gbd, void *pointer)); 162 164 GB_ERROR GB_write_float P_((GBDATA *gbd, double f)); 163 165 GB_ERROR GB_write_pntr P_((GBDATA *gbd, const char *s, long bytes_size, long stored_size)); … … 202 204 GB_ERROR GB_set_temporary P_((GBDATA *gbd)); 203 205 GB_ERROR GB_clear_temporary P_((GBDATA *gbd)); 204 long GB_read_temporary P_((GBDATA *gbd)); 206 GB_BOOL GB_is_temporary P_((GBDATA *gbd)); 207 GB_BOOL GB_in_temporary_branch P_((GBDATA *gbd)); 205 208 GB_ERROR GB_push_local_transaction P_((GBDATA *gbd)); 206 209 GB_ERROR GB_pop_local_transaction P_((GBDATA *gbd)); -
branches/stable_5.0/ARBDB/arbdb.c
r6143 r6149 426 426 } 427 427 428 void *GB_read_pointer(GBDATA *gbd) { 429 GB_TEST_READ(gbd,GB_POINTER,"GB_read_pointer"); 430 return gbd->info.ptr; 431 } 432 428 433 double GB_read_float(GBDATA *gbd) 429 434 { … … 752 757 if ((long)((int32_t)i) != i) { 753 758 gb_assert(0); 759 GB_warningf("Warning: 64bit incompatibility detected\nNo data written to '%s'\n", GB_get_db_path(gbd)); 754 760 return "GB_INT out of range (signed, 32bit)"; 755 761 } … … 757 763 gb_save_extern_data_in_ts(gbd); 758 764 gbd->info.i = i; 765 gb_touch_entry(gbd,gb_changed); 766 GB_DO_CALLBACKS(gbd); 767 } 768 return 0; 769 } 770 771 GB_ERROR GB_write_pointer(GBDATA *gbd, void *pointer) { 772 GB_TEST_WRITE(gbd,GB_POINTER,"GB_write_pointer"); 773 if (gbd->info.ptr != pointer) { 774 gb_save_extern_data_in_ts(gbd); 775 gbd->info.ptr = pointer; 759 776 gb_touch_entry(gbd,gb_changed); 760 777 GB_DO_CALLBACKS(gbd); … … 1302 1319 return NULL; 1303 1320 }; 1321 1322 if (type == GB_POINTER) { 1323 if (!GB_in_temporary_branch(father)) { 1324 GB_export_error("GB_create: pointers only allowed in temporary branches"); 1325 return NULL; 1326 } 1327 } 1328 1304 1329 gbd = gb_make_entry((GBCONTAINER *)father, key, -1,0,type); 1305 1330 gb_touch_header(GB_FATHER(gbd)); … … 1642 1667 } 1643 1668 1644 long GB_read_temporary(GBDATA *gbd) {1669 GB_BOOL GB_is_temporary(GBDATA *gbd) { 1645 1670 GB_TEST_TRANSACTION(gbd); 1646 1671 return (long)gbd->flags.temporary; 1647 1672 } 1673 1674 GB_BOOL GB_in_temporary_branch(GBDATA *gbd) { 1675 // returns true, if 'gbd' is member of a temporary subtree 1676 1677 if (GB_is_temporary(gbd)) return GB_TRUE; 1678 1679 GBDATA *gb_parent = GB_get_father(gbd); 1680 if (!gb_parent) return GB_FALSE; 1681 1682 return GB_in_temporary_branch(gb_parent); 1683 } 1684 1648 1685 1649 1686 /******************************************************************************************** -
branches/stable_5.0/ARBDB/arbdb.h
r6143 r6149 125 125 GB_INT = 3, 126 126 GB_FLOAT = 4, 127 // 5 is unused127 GB_POINTER = 5, // not savable! only allowed in temporary entries 128 128 GB_BITS = 6, 129 129 // 7 is unused … … 188 188 189 189 union gb_data_base_type_union { 190 int32_t i; 191 struct GB_INTern_strings istr; 192 struct GB_INTern in; 193 struct gb_extern_data ex; 190 int32_t i; 191 void *ptr; 192 struct GB_INTern_strings istr; 193 struct GB_INTern in; 194 struct gb_extern_data ex; 194 195 }; 195 196 -
branches/stable_5.0/SL/DB_SCANNER/db_scanner.cxx
r6047 r6149 40 40 cbs->may_be_an_error = 0; 41 41 GB_push_transaction(cbs->gb_main); 42 GBDATA *gbd = (GBDATA *)aw_root->awar(cbs->def_gbd)->read_ int();42 GBDATA *gbd = (GBDATA *)aw_root->awar(cbs->def_gbd)->read_pointer(); 43 43 if ( !cbs->gb_user || 44 44 !gbd || … … 134 134 else error = GB_write_as_string(gb_new,value); 135 135 136 cbs->aws->get_root()->awar(cbs->def_gbd)->write_ int((long)gb_new); // remap arbdb136 cbs->aws->get_root()->awar(cbs->def_gbd)->write_pointer(gb_new); // remap arbdb 137 137 } 138 138 } … … 195 195 error = GB_delete(gbd); 196 196 if (!error) { 197 cbs->aws->get_root()->awar(cbs->def_gbd)->write_ int((long)gb_key);197 cbs->aws->get_root()->awar(cbs->def_gbd)->write_pointer(gb_key); 198 198 } 199 199 } … … 250 250 GB_push_transaction(cbs->gb_main); 251 251 if (cbs->may_be_an_error) { // sorry 252 cbs->aws->get_root()->awar(cbs->def_gbd)->write_ int((long)0);253 } 254 gbd = (GBDATA *)cbs->aws->get_root()->awar(cbs->def_gbd)->read_ int();252 cbs->aws->get_root()->awar(cbs->def_gbd)->write_pointer(NULL); 253 } 254 gbd = (GBDATA *)cbs->aws->get_root()->awar(cbs->def_gbd)->read_pointer(); 255 255 256 256 if (cbs->gb_edit) { … … 301 301 sprintf(buffer,"tmp/arbdb_scanner_%i/list",scanner_id); 302 302 cbs->def_gbd = strdup(buffer); 303 aw_root->awar_ int(cbs->def_gbd, 0, AW_ROOT_DEFAULT);303 aw_root->awar_pointer(cbs->def_gbd, 0, AW_ROOT_DEFAULT); 304 304 305 305 sprintf(buffer,"tmp/arbdb_scanner_%i/find",scanner_id); … … 317 317 aws->at(box_pos_fig); 318 318 319 cbs->id = aws->create_selection_list(cbs->def_gbd, 0,"",20,10);319 cbs->id = aws->create_selection_list(cbs->def_gbd, 0, "", 20, 10); 320 320 cbs->aws = aws; 321 321 cbs->awr = aw_root; … … 386 386 case GB_DB: { 387 387 GBS_strcat(out, "<CONTAINER>:"); 388 cbs->aws->insert_selection(cbs->id, GBS_mempntr(out), (long)gbd);388 cbs->aws->insert_selection(cbs->id, GBS_mempntr(out), gbd); 389 389 GBS_strforget(out); 390 390 … … 396 396 case GB_LINK: { 397 397 GBS_strnprintf(out, 100, "LINK TO '%s'", GB_read_link_pntr(gbd)); 398 cbs->aws->insert_selection(cbs->id, GBS_mempntr(out), (long)gbd);398 cbs->aws->insert_selection(cbs->id, GBS_mempntr(out), gbd); 399 399 GBS_strforget(out); 400 400 … … 417 417 GBS_strcat(out, "<unprintable>"); 418 418 } 419 cbs->aws->insert_selection(cbs->id, GBS_mempntr(out), (long)gbd);419 cbs->aws->insert_selection(cbs->id, GBS_mempntr(out), gbd); 420 420 GBS_strforget(out); 421 421 break; … … 492 492 } 493 493 } 494 cbs->aws->insert_selection( cbs->id, buffer, (long)gbd);494 cbs->aws->insert_selection(cbs->id, buffer, gbd); 495 495 } 496 496 else { // non-existing entry 497 p[0] =' '; p[1] = ':'; p[2] = 0;498 cbs->aws->insert_selection( cbs->id, buffer, (long)gb_key);497 p[0] = ' '; p[1] = ':'; p[2] = 0; 498 cbs->aws->insert_selection(cbs->id, buffer, gb_key); 499 499 } 500 500 } … … 538 538 } 539 539 } 540 aws->insert_default_selection( cbs->id, "", ( long)0);540 aws->insert_default_selection( cbs->id, "", (void*)NULL); 541 541 aws->update_selection_list( cbs->id ); 542 542 if (cbs->gb_user) { … … 551 551 static void awt_scanner_changed_cb2(GBDATA *dummy, struct adawcbstruct *cbs, GB_CB_TYPE gbtype) 552 552 { 553 cbs->aws->get_root()->awar(cbs->def_gbd)->write_ int((long)0);553 cbs->aws->get_root()->awar(cbs->def_gbd)->write_pointer(NULL); 554 554 // unmap edit field 555 555 awt_scanner_changed_cb(dummy,cbs,gbtype); … … 579 579 } 580 580 581 cbs->aws->get_root()->awar(cbs->def_gbd)->write_ int((long)0);581 cbs->aws->get_root()->awar(cbs->def_gbd)->write_pointer(NULL); 582 582 awt_scanner_changed_cb(gb_pntr,cbs,GB_CB_CHANGED); 583 583 -
branches/stable_5.0/WINDOW/AW_button.cxx
r6143 r6149 149 149 switch ( vus->awar->variable_type ) { 150 150 case AW_STRING: 151 error = vus->awar->write_string( tmp );151 error = vus->awar->write_string( tmp ); 152 152 break; 153 153 case AW_INT: 154 h_int = atoi(tmp);155 error = vus->awar->write_int( h_int );154 h_int = atoi(tmp); 155 error = vus->awar->write_int( h_int ); 156 156 break; 157 157 case AW_FLOAT: 158 158 h_float = atof(tmp); 159 error = vus->awar->write_float( h_float );159 error = vus->awar->write_float( h_float ); 160 160 break; 161 161 default: 162 error = GB_export_error("Unknown AWAR type"); 162 gb_assert(0); 163 error = GB_export_error("Unknown or incompatible AWAR type"); 163 164 } 164 165 XtFree( tmp ); … … 181 182 case AW_INT: error = vus->awar->write_int(vus->variable_int_value ); break; 182 183 case AW_FLOAT: error = vus->awar->write_float( vus->variable_float_value ); break; 183 default: GB_warning("Unknown AWAR type"); break; 184 #if defined(DEVEL_RALF) 185 #warning missing implementation for AW_POINTER 186 #endif // DEVEL_RALF 187 default: 188 gb_assert(0); 189 GB_warning("Unknown AWAR type"); 190 break; 184 191 } 185 192 break; … … 222 229 error = vus->awar->write_float( list_table->float_value ); 223 230 break; 231 case AW_POINTER: 232 error = vus->awar->write_pointer( list_table->pointer_value ); 233 break; 224 234 default: 235 gb_assert(0); 225 236 error = GB_export_error("Unknown AWAR type"); 226 237 break; … … 232 243 break; 233 244 default: 245 gb_assert(0); 234 246 GB_warning("Unknown Widget Type"); 235 247 break; … … 1687 1699 1688 1700 void AW_window::insert_selection(AW_selection_list *selection_list, const char *displayed, const char *value) { 1689 if ( selection_list->variable_type != AW_STRING) {1701 if (selection_list->variable_type != AW_STRING) { 1690 1702 selection_type_mismatch("string"); 1691 1703 return; 1692 1704 } 1693 1705 1694 if ( selection_list->list_table) {1695 selection_list->last_of_list_table->next = new AW_select_table_struct( displayed, value);1706 if (selection_list->list_table) { 1707 selection_list->last_of_list_table->next = new AW_select_table_struct(displayed, value); 1696 1708 selection_list->last_of_list_table = selection_list->last_of_list_table->next; 1697 1709 selection_list->last_of_list_table->next = NULL; 1698 1710 }else { 1699 selection_list->last_of_list_table = selection_list->list_table = new AW_select_table_struct( displayed, value ); 1700 } 1701 } 1702 1703 1704 void AW_window::insert_default_selection( AW_selection_list *selection_list, const char *displayed, const char *value ) { 1705 1706 if ( selection_list->variable_type != AW_STRING ) { 1711 selection_list->last_of_list_table = selection_list->list_table = new AW_select_table_struct(displayed, value); 1712 } 1713 } 1714 1715 1716 void AW_window::insert_default_selection(AW_selection_list *selection_list, const char *displayed, const char *value) { 1717 if (selection_list->variable_type != AW_STRING) { 1707 1718 selection_type_mismatch("string"); 1708 1719 return; 1709 1720 } 1710 if ( selection_list->default_select) {1721 if (selection_list->default_select) { 1711 1722 delete selection_list->default_select; 1712 1723 } 1713 selection_list->default_select = new AW_select_table_struct( displayed, value ); 1714 } 1715 1716 1717 void AW_window::insert_selection( AW_selection_list *selection_list, const char *displayed, long value ) { 1718 1719 if ( selection_list->variable_type != AW_INT ) { 1724 selection_list->default_select = new AW_select_table_struct(displayed, value); 1725 } 1726 1727 #if defined(DEVEL_RALF) 1728 #warning parameter value must be int32_t 1729 #endif // DEVEL_RALF 1730 void AW_window::insert_selection(AW_selection_list *selection_list, const char *displayed, long value) { 1731 1732 if (selection_list->variable_type != AW_INT) { 1720 1733 selection_type_mismatch("int"); 1721 1734 return; 1722 1735 } 1723 if ( selection_list->list_table) {1724 selection_list->last_of_list_table->next = new AW_select_table_struct( displayed, value);1736 if (selection_list->list_table) { 1737 selection_list->last_of_list_table->next = new AW_select_table_struct(displayed, value); 1725 1738 selection_list->last_of_list_table = selection_list->last_of_list_table->next; 1726 1739 selection_list->last_of_list_table->next = NULL; 1727 1740 }else { 1728 selection_list->last_of_list_table = selection_list->list_table = new AW_select_table_struct( displayed, value ); 1729 } 1730 } 1731 1732 1733 void AW_window::insert_default_selection( AW_selection_list *selection_list, const char *displayed, long value ) { 1734 1735 if ( selection_list->variable_type != AW_INT ) { 1741 selection_list->last_of_list_table = selection_list->list_table = new AW_select_table_struct(displayed, value); 1742 } 1743 } 1744 1745 #if defined(DEVEL_RALF) 1746 #warning parameter value must be int32_t 1747 #endif // DEVEL_RALF 1748 void AW_window::insert_default_selection(AW_selection_list *selection_list, const char *displayed, long value) { 1749 if (selection_list->variable_type != AW_INT) { 1736 1750 selection_type_mismatch("int"); 1737 1751 return; 1738 1752 } 1739 if ( selection_list->default_select) {1753 if (selection_list->default_select) { 1740 1754 delete selection_list->default_select; 1741 1755 } 1742 selection_list->default_select = new AW_select_table_struct( displayed, value ); 1743 } 1744 1745 1746 void AW_window::clear_selection_list( AW_selection_list *selection_list ) { 1756 selection_list->default_select = new AW_select_table_struct(displayed, value); 1757 } 1758 1759 void AW_window::insert_selection(AW_selection_list * selection_list, const char *displayed, void *pointer) { 1760 if (selection_list->variable_type != AW_POINTER) { 1761 selection_type_mismatch("pointer"); 1762 return; 1763 } 1764 if (selection_list->list_table) { 1765 selection_list->last_of_list_table->next = new AW_select_table_struct(displayed, pointer); 1766 selection_list->last_of_list_table = selection_list->last_of_list_table->next; 1767 selection_list->last_of_list_table->next = NULL; 1768 }else { 1769 selection_list->last_of_list_table = selection_list->list_table = new AW_select_table_struct(displayed, pointer); 1770 } 1771 } 1772 1773 void AW_window::insert_default_selection(AW_selection_list * selection_list, const char *displayed, void *pointer) { 1774 if (selection_list->variable_type != AW_POINTER) { 1775 selection_type_mismatch("pointer"); 1776 return; 1777 } 1778 if (selection_list->default_select) { 1779 delete selection_list->default_select; 1780 } 1781 selection_list->default_select = new AW_select_table_struct(displayed, pointer); 1782 } 1783 1784 void AW_window::clear_selection_list(AW_selection_list *selection_list) { 1747 1785 AW_select_table_struct *list_table; 1748 1786 AW_select_table_struct *help; 1749 1787 1750 1788 1751 for ( help = selection_list->list_table; help;) {1789 for (help = selection_list->list_table; help; ) { 1752 1790 list_table = help; 1753 1791 help = list_table->next; 1754 1792 delete list_table; 1755 1793 } 1756 if ( selection_list->default_select) {1794 if (selection_list->default_select) { 1757 1795 delete selection_list->default_select; 1758 1796 } … … 1814 1852 AW_select_table_struct *list_table; 1815 1853 1816 int pos = 0; 1817 char *global_var_value = NULL; 1818 long global_var_int_value; 1819 float global_var_float_value; 1854 int pos = 0; 1820 1855 1821 1856 if (!selection_list->variable_name) return; // not connected to awar … … 1823 1858 pos = 0; 1824 1859 switch ( selection_list->variable_type ) { 1825 case AW_STRING: global_var_value = root->awar( selection_list->variable_name )->read_string(); 1860 case AW_STRING: { 1861 char *var_value = root->awar( selection_list->variable_name )->read_string(); 1826 1862 for ( list_table = selection_list->list_table; list_table; list_table = list_table->next ) { 1827 if ( strcmp( global_var_value, list_table->char_value ) == 0 ) {1863 if ( strcmp( var_value, list_table->char_value ) == 0 ) { 1828 1864 found = true; 1829 1865 break; … … 1831 1867 pos++; 1832 1868 } 1869 free(var_value); 1833 1870 break; 1834 case AW_INT: global_var_int_value = root->awar( selection_list->variable_name )->read_int(); 1871 } 1872 case AW_INT: { 1873 int var_value = root->awar( selection_list->variable_name )->read_int(); 1835 1874 for ( list_table = selection_list->list_table; list_table; list_table = list_table->next ) { 1836 if ( global_var_int_value == list_table->int_value ) {1875 if ( var_value == list_table->int_value ) { 1837 1876 found = true; 1838 1877 break; … … 1841 1880 } 1842 1881 break; 1843 case AW_FLOAT: global_var_float_value = root->awar( selection_list->variable_name )->read_float(); 1882 } 1883 case AW_FLOAT: { 1884 float var_value = root->awar( selection_list->variable_name )->read_float(); 1844 1885 for ( list_table = selection_list->list_table; list_table; list_table = list_table->next ) { 1845 if ( global_var_float_value == list_table->float_value ) {1886 if ( var_value == list_table->float_value ) { 1846 1887 found = true; 1847 1888 break; … … 1850 1891 } 1851 1892 break; 1893 } 1894 case AW_POINTER: { 1895 void *var_value = root->awar( selection_list->variable_name )->read_pointer(); 1896 for ( list_table = selection_list->list_table; list_table; list_table = list_table->next ) { 1897 if ( var_value == list_table->pointer_value ) { 1898 found = true; 1899 break; 1900 } 1901 pos++; 1902 } 1903 break; 1904 } 1852 1905 default: 1906 gb_assert(0); 1853 1907 GB_warning("Unknown AWAR type"); 1854 1908 break; … … 1873 1927 } 1874 1928 1875 } else{1876 AW_ERROR("Selection list '%s' has no default selection",selection_list->variable_name);1877 }1878 free(global_var_value);1929 } 1930 else { 1931 AW_ERROR("Selection list '%s' has no default selection", selection_list->variable_name); 1932 } 1879 1933 } 1880 1934 … … 2431 2485 char *var_name = oms->variable_name; 2432 2486 2487 #if defined(DEVEL_RALF) 2488 #warning missing implementation for AW_POINTER 2489 #endif // DEVEL_RALF 2490 2433 2491 switch ( oms->variable_type ) { 2434 2492 case AW_STRING: global_var_value = root->awar( var_name )->read_string(); break; … … 2444 2502 case AW_INT: found_choice = (global_var_int_value == active_choice->variable_int_value ); break; 2445 2503 case AW_FLOAT: found_choice = (global_var_float_value == active_choice->variable_float_value ); break; 2446 default: GB_warning("Unknown AWAR type"); break; 2504 default: 2505 gb_assert(0); 2506 GB_warning("Unknown AWAR type"); 2507 break; 2447 2508 } 2448 2509 if (found_choice) break; … … 2698 2759 float global_var_float_value = 0; 2699 2760 2761 #if defined(DEVEL_RALF) 2762 #warning missing implementation for AW_POINTER 2763 #endif // DEVEL_RALF 2764 2700 2765 switch ( toggle_field_list->variable_type ) { 2701 2766 case AW_STRING: global_var_value = root->awar( toggle_field_list->variable_name )->read_string(); break; 2702 2767 case AW_INT: global_var_int_value = root->awar( toggle_field_list->variable_name )->read_int(); break; 2703 2768 case AW_FLOAT: global_var_float_value = root->awar( toggle_field_list->variable_name )->read_float(); break; 2704 default: GB_warning("Unknown AWAR type"); break; 2769 default: 2770 gb_assert(0); 2771 GB_warning("Unknown AWAR type"); 2772 break; 2705 2773 } 2706 2774 … … 2711 2779 case AW_INT: found_toggle = (global_var_int_value == active_toggle->variable_int_value); break; 2712 2780 case AW_FLOAT: found_toggle = (global_var_float_value == active_toggle->variable_float_value); break; 2713 default: GB_warning("Unknown AWAR type"); break; 2781 default: 2782 gb_assert(0); 2783 GB_warning("Unknown AWAR type"); 2784 break; 2714 2785 } 2715 2786 if (found_toggle) break; -
branches/stable_5.0/WINDOW/AW_nawar.cxx
r6143 r6149 78 78 } 79 79 80 long AW_awar::read_int() {80 long AW_awar::read_int() { 81 81 if (!gb_var) return 0; 82 82 GB_transaction ta(gb_var); 83 83 return (long)GB_read_int( gb_var ); 84 84 } 85 double AW_awar::read_float() {85 double AW_awar::read_float() { 86 86 if (!gb_var) return 0.0; 87 87 GB_transaction ta(gb_var); 88 88 return GB_read_float(gb_var); 89 89 } 90 91 void *AW_awar::read_pointer() { 92 if (!gb_var) return NULL; 93 GB_transaction ta(gb_var); 94 return GB_read_pointer(gb_var); 95 } 96 90 97 91 98 #if defined(DUMP_AWAR_CHANGES) … … 116 123 WRITE_SKELETON(write_int, long, "%li", GB_write_int) // defines rewrite_int 117 124 WRITE_SKELETON(write_float, double, "%f", GB_write_float) // defines rewrite_float 118 WRITE_SKELETON(write_as_string, const char *, "%s", GB_write_as_string) // defines rewrite_as_string 125 WRITE_SKELETON(write_as_string, const char*, "%s", GB_write_as_string) // defines rewrite_as_string 126 WRITE_SKELETON(write_pointer, void*, "%p", GB_write_pointer) // defines rewrite_pointer 119 127 120 128 #undef WRITE_SKELETON … … 146 154 // for string 147 155 AW_awar *AW_root::awar_string( const char *var_name, const char *default_value, AW_default default_file ) { 148 AW_awar *vs; 149 vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 150 if (vs) return vs; /* already defined */ 151 default_file = aw_check_default_file(this->application_database,default_file,var_name); 152 153 vs = new AW_awar( AW_STRING, var_name, default_value, 0, default_file, this ); 154 GBS_write_hash( hash_table_for_variables, (char *)var_name, (long)vs ); 156 AW_awar *vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 157 if (!vs) { 158 default_file = aw_check_default_file(this->application_database,default_file,var_name); 159 vs = new AW_awar(AW_STRING, var_name, default_value, 0, default_file, this); 160 GBS_write_hash(hash_table_for_variables, (char *)var_name, (long)vs); 161 } 155 162 return vs; 156 163 } … … 158 165 159 166 // for int 160 AW_awar *AW_root::awar_int( const char *var_name, long default_value, AW_default default_file ) { 161 AW_awar *vs; 162 vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 163 if (vs) return vs; /* already defined */ 164 default_file = aw_check_default_file(this->application_database,default_file,var_name); 165 166 vs = new AW_awar( AW_INT, var_name, (char *)default_value, 0, default_file, this ); 167 GBS_write_hash( hash_table_for_variables, (char *)var_name, (long)vs ); 167 AW_awar *AW_root::awar_int(const char *var_name, long default_value, AW_default default_file) { 168 AW_awar *vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 169 if (!vs) { 170 default_file = aw_check_default_file(this->application_database,default_file,var_name); 171 vs = new AW_awar(AW_INT, var_name, (char *)default_value, 0, default_file, this); 172 GBS_write_hash(hash_table_for_variables, (char *)var_name, (long)vs); 173 } 168 174 return vs; 169 175 } … … 171 177 172 178 // for float 173 AW_awar *AW_root::awar_float( const char *var_name, float default_value, AW_default default_file ) { 174 AW_awar *vs; 175 vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 176 if (vs) return vs; /* already defined */ 177 default_file = aw_check_default_file(this->application_database,default_file,var_name); 178 179 vs = new AW_awar( AW_FLOAT, var_name, "", (double)default_value, default_file, this ); 180 GBS_write_hash( hash_table_for_variables, (char *)var_name, (long)vs ); 179 AW_awar *AW_root::awar_float(const char *var_name, float default_value, AW_default default_file) { 180 AW_awar *vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 181 if (!vs) { 182 default_file = aw_check_default_file(this->application_database,default_file,var_name); 183 vs = new AW_awar(AW_FLOAT, var_name, "", (double)default_value, default_file, this); 184 GBS_write_hash(hash_table_for_variables, (char *)var_name, (long)vs); 185 } 181 186 return vs; 182 187 } 183 188 184 AW_awar *AW_root::awar_no_error( const char *var_name){ 189 AW_awar *AW_root::awar_pointer(const char *var_name, void *default_value, AW_default default_file) { 190 AW_awar *vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 191 if (!vs) { 192 default_file = aw_check_default_file(this->application_database,default_file,var_name); 193 vs = new AW_awar(AW_POINTER, var_name, (const char *)default_value, NULL, default_file, this); 194 GBS_write_hash(hash_table_for_variables, (char *)var_name, (long)vs); 195 } 196 return vs; 197 } 198 199 AW_awar *AW_root::awar_no_error(const char *var_name){ 185 200 AW_awar *vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 186 201 return vs; 187 202 } 188 203 189 AW_awar *AW_root::awar( const char *var_name){204 AW_awar *AW_root::awar(const char *var_name){ 190 205 AW_awar *vs = (AW_awar *)GBS_read_hash(hash_table_for_variables, (char *)var_name); 191 206 if (vs) return vs; /* already defined */ … … 492 507 if (!pntr->pointer) return; 493 508 switch(variable_type) { 494 case AW_STRING: 495 this->get((char **)pntr->pointer);break; 496 case AW_FLOAT: 497 this->get((double *)pntr->pointer);break; 498 case AW_INT: 499 this->get((long *)pntr->pointer);break; 509 case AW_STRING: this->get((char **)pntr->pointer);break; 510 case AW_FLOAT: this->get((double *)pntr->pointer);break; 511 case AW_INT: this->get((long *)pntr->pointer);break; 500 512 default: 513 gb_assert(0); 501 514 GB_warning("Unknown awar type"); 515 break; 502 516 } 503 517 } … … 523 537 524 538 this->awar_name = strdup(var_name); 525 this->root = rooti; 526 GBDATA *gb_def = GB_search((GBDATA *)default_file, var_name,GB_FIND); 527 if ( gb_def ) { // belege Variable mit Datenbankwert 528 AW_VARIABLE_TYPE gbtype; 529 gbtype = (AW_VARIABLE_TYPE) GB_read_type( gb_def ); 530 if ( gbtype != var_type ) { 531 GB_warningf("Wrong Awar type %s\n",var_name); 532 GB_delete( gb_def ); 539 this->root = rooti; 540 GBDATA *gb_def = GB_search((GBDATA *)default_file, var_name,GB_FIND); 541 542 GB_TYPES wanted_gbtype = (GB_TYPES)var_type; 543 544 if ( gb_def ) { // belege Variable mit Datenbankwert 545 GB_TYPES gbtype = GB_read_type(gb_def); 546 547 if (gbtype != wanted_gbtype) { 548 GB_warningf("Existing awar '%s' has wrong type (%i instead of %i) - recreating\n", 549 var_name, int(gbtype), int(wanted_gbtype)); 550 GB_delete(gb_def); 533 551 gb_def = 0; 534 552 } 535 553 } 536 if (!gb_def) { // belege Variable mit Programmwert 537 gb_def = GB_search( (GBDATA *)default_file, var_name, (GB_TYPES)var_type); 538 539 switch ( var_type ) { 554 555 if (!gb_def) { // belege Variable mit Programmwert 556 gb_def = GB_search( (GBDATA *)default_file, var_name, wanted_gbtype); 557 558 switch (var_type) { 540 559 case AW_STRING: 541 560 #if defined(DUMP_AWAR_CHANGES) 542 561 fprintf(stderr, "creating awar_string '%s' with default value '%s'\n", var_name, (char*)var_value); 543 562 #endif // DUMP_AWAR_CHANGES 544 GB_write_string( gb_def, (char *)var_value ); 545 break; 563 GB_write_string(gb_def, (char *)var_value); 564 break; 565 546 566 case AW_INT: 547 567 #if defined(DUMP_AWAR_CHANGES) 548 568 fprintf(stderr, "creating awar_int '%s' with default value '%li'\n", var_name, (long)var_value); 549 569 #endif // DUMP_AWAR_CHANGES 550 GB_write_int( gb_def, (long)var_value ); 551 break; 570 GB_write_int(gb_def, (long)var_value); 571 break; 572 552 573 case AW_FLOAT: 553 574 #if defined(DUMP_AWAR_CHANGES) 554 575 fprintf(stderr, "creating awar_float '%s' with default value '%f'\n", var_name, (double)var_double_value); 555 576 #endif // DUMP_AWAR_CHANGES 556 GB_write_float( gb_def, (double)var_double_value ); 557 break; 577 GB_write_float(gb_def, (double)var_double_value); 578 break; 579 580 case AW_POINTER: 581 #if defined(DUMP_AWAR_CHANGES) 582 fprintf(stderr, "creating awar_pointer '%s' with default value '%p'\n", var_name, (void*)var_value); 583 #endif // DUMP_AWAR_CHANGES 584 GB_write_pointer(gb_def, (void*)var_value); 585 break; 586 558 587 default: 559 588 GB_warningf("AWAR '%s' cannot be created because of disallowed type",var_name); … … 593 622 if (gb_default) { 594 623 GB_no_transaction(gb_default); 624 625 GBDATA *gb_tmp = GB_search(gb_default, "tmp", GB_CREATE_CONTAINER); 626 GB_set_temporary(gb_tmp); 595 627 #if defined(DEBUG) 596 628 AWT_announce_db_to_browser(gb_default, GBS_global_string("Properties (%s)", default_name)); … … 602 634 if (!shown_name) shown_name = default_name; 603 635 604 GBK_terminatef( GBS_global_string("Error loading properties '%s': %s", shown_name, error));636 GBK_terminatef("Error loading properties '%s': %s", shown_name, error); 605 637 } 606 638 return (AW_default) gb_default; … … 626 658 AW_error *AW_root::save_default(AW_default aw_default, const char *file_name) 627 659 { 628 GBDATA *gb_tmp;629 660 GBDATA *gb_main = GB_get_root((GBDATA *)aw_default); 630 661 GB_push_transaction(gb_main); 631 gb_tmp = GB_entry(gb_main,"tmp");632 if (gb_tmp) GB_set_temporary(gb_tmp);633 662 aw_update_awar_window_geometry(this); 634 663 GB_pop_transaction(gb_main); -
branches/stable_5.0/WINDOW/AW_window.cxx
r6126 r6149 250 250 displayed = copy_string(displayedi); 251 251 float_value = valuei; 252 } 253 AW_select_table_struct::AW_select_table_struct(const char *displayedi, void *pointer) { 254 memset((char *)this, 0, sizeof(AW_select_table_struct)); 255 displayed = copy_string(displayedi); 256 pointer_value = pointer; 252 257 } 253 258 AW_select_table_struct::~AW_select_table_struct(void) { -
branches/stable_5.0/WINDOW/aw_root.hxx
r6127 r6149 63 63 64 64 typedef enum { 65 AW_NONE = 0,66 AW_BIT = 1,67 AW_BYTE = 2,68 AW_INT = 3,69 AW_FLOAT = 4,70 // 5 is unused71 AW_BITS = 6,65 AW_NONE = 0, 66 AW_BIT = 1, 67 AW_BYTE = 2, 68 AW_INT = 3, 69 AW_FLOAT = 4, 70 AW_POINTER = 5, 71 AW_BITS = 6, 72 72 // 7 is unused 73 AW_BYTES = 8,74 AW_INTS = 9,75 AW_FLOATS = 10,76 AW_STRING = 12,73 AW_BYTES = 8, 74 AW_INTS = 9, 75 AW_FLOATS = 10, 76 AW_STRING = 12, 77 77 // 13 is reserved (GB_STRING_SHRT) 78 78 // 14 is unused 79 AW_DB = 15,80 79 AW_DB = 15, 80 81 81 // keep AW_VARIABLE_TYPE consistent with GB_TYPES 82 82 // see ../ARBDB/arbdb.h@sync_GB_TYPES_AW_VARIABLE_TYPE … … 219 219 AW_awar *awar_no_error(const char *awar); 220 220 221 AW_awar *awar_string(const char *var_name, const char *default_value = "", AW_default default_file = AW_ROOT_DEFAULT); 222 AW_awar *awar_int (const char *var_name, long default_value = 0, AW_default default_file = AW_ROOT_DEFAULT); 223 AW_awar *awar_float (const char *var_name, float default_value = 0.0, AW_default default_file = AW_ROOT_DEFAULT); 221 AW_awar *awar_string (const char *var_name, const char *default_value = "", AW_default default_file = AW_ROOT_DEFAULT); 222 AW_awar *awar_int (const char *var_name, long default_value = 0, AW_default default_file = AW_ROOT_DEFAULT); 223 AW_awar *awar_float (const char *var_name, float default_value = 0.0, AW_default default_file = AW_ROOT_DEFAULT); 224 AW_awar *awar_pointer(const char *var_name, void *default_value = NULL, AW_default default_file = AW_ROOT_DEFAULT); 224 225 225 226 AW_awar *label_is_awar(const char *label); // returns awar, if label refers to one (used by buttons, etc.) … … 346 347 const char *read_char_pntr(); 347 348 char *read_as_string(); 349 long read_int(); 348 350 double read_float(); 349 long read_int();351 void *read_pointer(); 350 352 351 353 GB_ERROR write_string(const char *aw_string); … … 353 355 GB_ERROR write_int(long aw_int); 354 356 GB_ERROR write_float(double aw_double); 357 GB_ERROR write_pointer(void *aw_pointer); 358 355 359 GB_ERROR write_as(char *aw_value) { return write_as_string(aw_value);}; 356 360 … … 360 364 GB_ERROR rewrite_int(long aw_int); 361 365 GB_ERROR rewrite_float(double aw_double); 366 GB_ERROR rewrite_pointer(void *aw_pointer); 367 362 368 GB_ERROR rewrite_as(char *aw_value) { return rewrite_as_string(aw_value);}; 363 369 -
branches/stable_5.0/WINDOW/aw_window.hxx
r6011 r6149 502 502 void insert_selection( AW_selection_list * selection_list, const char *displayed, float value ); 503 503 void insert_default_selection( AW_selection_list * selection_list, const char *displayed, float value ); 504 // for pointers (only allowed if selection list uses a tmp-awars) 505 void insert_selection( AW_selection_list * selection_list, const char *displayed, void *pointer ); 506 void insert_default_selection( AW_selection_list * selection_list, const char *displayed, void *pointer ); 504 507 505 508 void delete_selection_from_list( AW_selection_list * selection_list, const char *displayed_string ); -
branches/stable_5.0/WINDOW/aw_window_Xm.hxx
r5951 r6149 158 158 159 159 AW_select_table_struct( const char *displayedi, const char *value ); 160 ~AW_select_table_struct( void );161 160 AW_select_table_struct( const char *displayedi, long value ); 162 161 AW_select_table_struct( const char *displayedi, float value ); 162 AW_select_table_struct( const char *displayedi, void *pointer ); 163 164 ~AW_select_table_struct( void ); 163 165 164 166 static char *copy_string(const char *str); 165 167 166 char *displayed; 167 char *char_value; 168 long int_value; 169 float float_value; 170 int is_selected; // internal use only 168 char *displayed; 169 170 #if defined(DEVEL_RALF) 171 #warning make the following variables a union 172 #endif // DEVEL_RALF 173 char *char_value; 174 long int_value; 175 float float_value; 176 void *pointer_value; 177 178 int is_selected; // internal use only 179 171 180 AW_select_table_struct *next; 172 181 };
