home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / E / GENCEV21.LHA / GenCodeE / sources / GenCodeE_v16 / Variable.e < prev   
Encoding:
Text File  |  1994-11-15  |  1.5 KB  |  71 lines

  1. OPT MODULE
  2. OPT EXPORT
  3. OPT LARGE
  4.  
  5.  
  6. ->*****
  7. ->** External modules
  8. ->*****
  9. MODULE 'muibuilder' , 'libraries/muibuilder'
  10. MODULE 'utility/tagitem'
  11.  
  12.  
  13. ->*****
  14. ->** Exception handling
  15. ->*****
  16. RAISE    "MEM"    IF    String()    =    NIL
  17.  
  18.  
  19. ->*****
  20. ->** Object definitions
  21. ->*****
  22. OBJECT variable
  23.     ident    :    PTR TO CHAR
  24.     type    :    LONG
  25.     size    :    LONG
  26.     init    :    LONG
  27. ENDOBJECT
  28.  
  29.  
  30. /******************************************
  31. ** Returns an array of all the variables **
  32. ******************************************/
  33. PROC init_variables( number_vars )
  34.  
  35.     DEF vars : PTR TO variable , ident_length_max = 0
  36.     DEF ident : PTR TO CHAR , type , size , init
  37.     DEF i , tmp_ident : PTR TO CHAR
  38.  
  39.     NEW vars[ number_vars ]
  40.  
  41.     FOR i := 0 TO ( number_vars - 1 )
  42.  
  43.         Mb_GetVarInfoA( i ,
  44.                         [    MUIB_VARTYPE    , {type}    ,
  45.                             MUIB_VARNAME    , {ident}    ,
  46.                             MUIB_VARSIZE    , {size}    ,
  47.                             MUIB_VARINITPTR    , {init}    ,
  48.                             TAG_END ] )
  49.  
  50.         tmp_ident := String( StrLen( ident ) )
  51.         StrCopy( tmp_ident , ident )
  52.  
  53.         IF ( type <> TYPEVAR_HOOK ) AND ( type <> TYPEVAR_IDENT ) AND ( type <> TYPEVAR_EXTERNAL )
  54.  
  55.             IF ( tmp_ident[] >= "A" ) AND ( tmp_ident[] <= "Z" ) THEN tmp_ident[] :=  tmp_ident[] + 32
  56.             IF EstrLen( tmp_ident ) >= 2 THEN
  57.                 IF ( tmp_ident[ 1 ] >= "A" ) AND ( tmp_ident[ 1 ] <= "Z" ) THEN tmp_ident[ 1 ] :=  tmp_ident[ 1 ] + 32
  58.  
  59.         ENDIF
  60.  
  61.         vars[ i ].ident := tmp_ident
  62.         vars[ i ].type := type
  63.         vars[ i ].size := size
  64.         vars[ i ].init := init
  65.  
  66.         IF EstrLen( tmp_ident ) > ident_length_max THEN ident_length_max := EstrLen( tmp_ident )
  67.  
  68.     ENDFOR
  69.  
  70. ENDPROC vars , ident_length_max
  71.