home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / source / term43-source.lha / Extras / Source / gtlayout-Source.lha / LTP_Storage.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-21  |  3.3 KB  |  210 lines

  1. /*  GadTools layout toolkit
  2. **
  3. **  Copyright © 1993-1994 by Olaf `Olsen' Barthel
  4. **  Freely distributable.
  5. */
  6.  
  7. #include "gtlayout_global.h"
  8.  
  9. VOID __regargs
  10. LTP_GetStorage(ObjectNode *Node)
  11. {
  12.     if(Node -> Storage)
  13.     {
  14.         LONG    Number = 0;
  15.         STRPTR    String = NULL;
  16.  
  17.         switch(Node -> StorageType)
  18.         {
  19.             case STORAGE_BYTE:
  20.  
  21.                 Number = *(BYTE *)Node -> Storage;
  22.                 break;
  23.  
  24.             case STORAGE_UBYTE:
  25.  
  26.                 Number = *(UBYTE *)Node -> Storage;
  27.                 break;
  28.  
  29.             case STORAGE_WORD:
  30.  
  31.                 Number = *(WORD *)Node -> Storage;
  32.                 break;
  33.  
  34.             case STORAGE_UWORD:
  35.  
  36.                 Number = *(UWORD *)Node -> Storage;
  37.                 break;
  38.  
  39.             case STORAGE_LONG:
  40.  
  41.                 Number = *(LONG *)Node -> Storage;
  42.                 break;
  43.  
  44.             case STORAGE_ULONG:
  45.  
  46.                 Number = *(ULONG *)Node -> Storage;
  47.                 break;
  48.  
  49.             case STORAGE_STRPTR:
  50.  
  51.                 String = Node -> Storage;
  52.                 break;
  53.         }
  54.  
  55.         switch(Node -> Type)
  56.         {
  57.             case CHECKBOX_KIND:
  58.             case LISTVIEW_KIND:
  59.             case MX_KIND:
  60.             case CYCLE_KIND:
  61.             case PALETTE_KIND:
  62.             case SLIDER_KIND:
  63.             case SCROLLER_KIND:
  64. #ifdef DO_GAUGE_KIND
  65.             case GAUGE_KIND:
  66. #endif
  67.  
  68. #ifdef DO_TAPEDECK_KIND
  69.             case TAPEDECK_KIND:
  70. #endif    /* DO_TAPEDECK_KIND */
  71.  
  72. #ifdef DO_FRACTION_KIND
  73.             case FRACTION_KIND:
  74. #endif
  75.                 Node -> Current = Number;
  76.                 break;
  77.  
  78.             case STRING_KIND:
  79. #ifdef DO_PASSWORD_KIND
  80.             case PASSWORD_KIND:
  81. #endif
  82.                 Node -> Special . String . String = String;
  83.                 break;
  84.  
  85.             case INTEGER_KIND:
  86.  
  87.                 Node -> Special . Integer . Number = Number;
  88.                 break;
  89. #ifdef DO_LEVEL_KIND
  90.             case LEVEL_KIND:
  91.  
  92.                 Node -> Special . Level . Level = Number;
  93.                 break;
  94. #endif    /* DO_LEVEL_KIND */
  95.         }
  96.     }
  97. }
  98.  
  99. VOID __regargs
  100. LTP_PutStorage(ObjectNode *Node)
  101. {
  102.     if(Node -> Storage)
  103.     {
  104.         LONG    Number = 0;
  105.         STRPTR    String = NULL;
  106.  
  107.         switch(Node -> Type)
  108.         {
  109.             case CHECKBOX_KIND:
  110.             case LISTVIEW_KIND:
  111.             case MX_KIND:
  112.             case CYCLE_KIND:
  113.             case PALETTE_KIND:
  114.             case SLIDER_KIND:
  115.             case SCROLLER_KIND:
  116. #ifdef DO_GAUGE_KIND
  117.             case GAUGE_KIND:
  118. #endif
  119.  
  120. #ifdef DO_TAPEDECK_KIND
  121.             case TAPEDECK_KIND:
  122. #endif    /* DO_TAPEDECK_KIND */
  123.                 Number = Node -> Current;
  124.                 break;
  125.  
  126. #ifdef DO_FRACTION_KIND
  127.             case FRACTION_KIND:
  128.  
  129.                 Number = (LONG)LT_String2Fixed(((struct StringInfo *)Node -> Host -> SpecialInfo) -> Buffer);
  130.                 break;
  131. #endif
  132.  
  133. #ifdef DO_PASSWORD_KIND
  134.             case PASSWORD_KIND:
  135.  
  136.                 String = Node -> Special . String . Original;
  137.                 break;
  138. #endif
  139.  
  140.             case STRING_KIND:
  141.  
  142.                 String = ((struct StringInfo *)Node -> Host -> SpecialInfo) -> Buffer;
  143.                 break;
  144.  
  145.             case INTEGER_KIND:
  146.  
  147.                 Number = ((struct StringInfo *)Node -> Host -> SpecialInfo) -> LongInt;
  148.                 break;
  149. #ifdef DO_LEVEL_KIND
  150.             case LEVEL_KIND:
  151.  
  152.                 Number = Node -> Special . Level . Level;
  153.                 break;
  154. #endif    /* DO_LEVEL_KIND */
  155.         }
  156.  
  157.         switch(Node -> StorageType)
  158.         {
  159.             case STORAGE_BYTE:
  160.  
  161.                 if(!String)
  162.                     *(BYTE *)Node -> Storage = (BYTE)Number;
  163.  
  164.                 break;
  165.  
  166.             case STORAGE_UBYTE:
  167.  
  168.                 if(!String)
  169.                     *(UBYTE *)Node -> Storage = (UBYTE)Number;
  170.  
  171.                 break;
  172.  
  173.             case STORAGE_WORD:
  174.  
  175.                 if(!String)
  176.                     *(WORD *)Node -> Storage = (WORD)Number;
  177.  
  178.                 break;
  179.  
  180.             case STORAGE_UWORD:
  181.  
  182.                 if(!String)
  183.                     *(UWORD *)Node -> Storage = (UWORD)Number;
  184.  
  185.                 break;
  186.  
  187.             case STORAGE_LONG:
  188.  
  189.                 if(!String)
  190.                     *(LONG *)Node -> Storage = (LONG)Number;
  191.  
  192.                 break;
  193.  
  194.             case STORAGE_ULONG:
  195.  
  196.                 if(!String)
  197.                     *(ULONG *)Node -> Storage = (ULONG)Number;
  198.  
  199.                 break;
  200.  
  201.             case STORAGE_STRPTR:
  202.  
  203.                 if(String)
  204.                     strcpy(Node -> Storage,String);
  205.  
  206.                 break;
  207.         }
  208.     }
  209. }
  210.