|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ B T ┃
Length: 13877 (0x3635) Types: TextFile Names: »B«
└─⟦85b835f43⟧ Bits:30000549 8mm tape, Rational 1000, Xlib rev 6.00 └─ ⟦0c20f784e⟧ »DATA« └─⟦1abbe589f⟧ └─⟦591c5b094⟧ └─⟦this⟧
separate (Symbol_Table) ------------------------------------------------------------------------------ -- Copyright 1989 - 1990 by Rational, Santa Clara, California. -- -- All Rights Reserved. -- -- Permission to use, copy, modify, and distribute this software and its -- documentation for any purpose and without fee is hereby granted, -- provided that the above copyright notice(s) appear in all copies and that -- both that copyright notice(s) and this permission notice appear in -- supporting documentation, and that the name of Rational not be used in -- advertising or publicity pertaining to distribution of the software -- without specific, written prior permission. -- -- Rational disclaims all warranties with regard to this software, including -- all implied warranties of merchantability and fitness, in no event shall -- Rational be liable for any special, indirect or consequential damages or -- any damages whatsoever resulting from loss of use, data or profits, whether -- in an action of contract, negligence or other tortious action, arising out -- of or in connection with the use or performance of this software. ------------------------------------------------------------------------------ procedure Define_Predefineds is ------------------------------------------------------------------------------ -- Called to enter all of our existing parameter names with default values. ------------------------------------------------------------------------------ procedure Flag (Name : E_String) is begin Define (Sym_Map, Name, (Sk_Boolean, Permanent => False, Bool => False)); end Flag; begin ------------------------------------------------------------------------------ -- General/Random Issues ------------------------------------------------------------------------------ Flag ("DEBUG"); -- Do we want Debug code? There is some -- small amount of sanity-checking code -- embedded in the library. This will -- un/comment that code. Flag ("OLD_CONTEXT_MANAGER");-- Do we want the old "Context Manager" -- included in the library? The context -- manager was created by MIT/DEC as a tool -- to aid the Xt Intrinsics. However, they -- don't use the interface as it is declared. -- All of the interfaces take an X_Window -- and less than have of the users of the -- interface in the Xt layer pass an X_Window -- value. They mainly pass something that -- *isn't* a window. They pass in all sorts -- of things that happen to be the same bit -- size as an X_Window. -- Therefore the context manager is of no use -- to the Ada Xt Intrinsics and the concept -- has been reimplemented there. However, -- if someone "out there" wants the CM for -- some other reason then set this parameter -- to TRUE. ------------------------------------------------------------------------------ -- Host Machine/Operating-System Issues ------------------------------------------------------------------------------ Flag ("Cdf_Hpux"); -- Target is Rational CDF for 68k HP Unix Flag ("R1000"); -- Target is an R1000. Flag ("TeleGen2"); -- Target is TeleSoft TeleGen2 Ada compiler. Flag ("Unix"); -- Target is any form of Unix. Flag ("SysV"); -- Target is System V in particular. Flag ("R1000_Xlib_Only"); -- True only on R1000's without Xt, Xaw, etc. -- Eliminates the extra tasking interfaces -- required on R1000's otherwise. ------------------------------------------------------------------------------ -- Bugicide - Sometimes we have to work around what we cannot get fixed -- right away. ------------------------------------------------------------------------------ Flag ("R1000_Size_Bug"); -- type a is something; -- for a'size use nnn; -- type b is new a; -- for b'size use nnn; <-- gets an error Flag ("TeleGen2_Derive_Bug"); -- package xxx is -- type aaa is range nnn..mmm; -- function "and"(a,b:aaa) return aaa; -- package yyy is -- type bbb is new aaa; -- function "and" is not inherited by the -- derived bbb type and it should be. Flag ("TeleGen2_Length_Bug"); -- type foo is (a,b,c,d,e,f,g,h); -- type bar is array (foo) of boolean; -- for foo'size use 8; -- But foo'size isn't 8, you have to -- pragma pack(foo) as well to get it. -- And, this only happens "sometimes". -- -- TeleGen2 68K Unix - before v1.4A Flag ("TeleGen2_Pack_Bug"); -- type foo is record .... end record; -- for foo'size use nnn; -- type bar is array (...) of record; -- pragma pack (bar); -- Error: Rep clause after forcing occurance -- for foo (the error caused by the pragma) Flag ("TeleGen2_2d_Bug"); -- type u_char is new range 0..255; -- for u_char'size use 8; -- type array_2d is array (u_char range <>, -- u_char range <> -- ) of integer; -- foo : array_2d; -- -- Foo'last, foo'first, and foo'length -- all return incorrect values. -- Changing the type of the 1st dimension -- to any 16-bit (or 32-bit) type fixes -- the problem but messes up our interface. ------------------------------------------------------------------------------ -- Library Features ------------------------------------------------------------------------------ Flag ("Multitask_Locking"); -- Are we providing for/allowing multi-task -- interlocking on X_Display's and on the -- basic X_Lib data structure? If the user -- program will never use X_Library in a -- multitasking Ada environment then we -- don't have to and this would mean that -- we have lower overhead (no internal -- tasks) in the library. ------------------------------------------------------------------------------ -- Ada Compiler Issues ------------------------------------------------------------------------------ ----Does the Ada language feature called Xxxx exist/work? Flag ("Enable_Deallocation"); -- pragma ENABLE_DEALLOCATION( access-type ); -- Unchecked_Deallocation is a no-op unless -- this is used. R1000-specific. Flag ("Inline"); -- pragma INLINE( procedure-name ); -- Inlining across compilaton units. Flag ("Length_Clauses"); -- Are we using the Length Clauses? -- (LRM 13.2) This is true if we are using -- them. They might not be implemented in -- which case we will be forced to -- explicitly code all conversion routines -- instead of relying on facilities such -- as Unchecked_Conversion. Flag ("Pack"); -- pragma PACK( type-simple-name ); -- Pragma PACK is wanted, desired, supported. -- Pragma PACK should not be necessary if -- the For Foo'Size use Number; length -- clauses work. Flag ("Positive_Is_Large"); -- If Positive'Size = 32, or is "large" then -- some of the code that is in the library -- just-in-case Positive'Size = 16, or is -- "small" may generate compiler warnings. -- In particular we do things like: -- if size > Positive'Last then -- array:=new string(1..Positive'Last); -- and so on. This can generate compiler -- warnings about "This will raise exception -- Storage_Error or Constraint_Error" or some -- such. If Positive_Is_Large, meaning that -- Positive'Last >= S_Long'Last, then we -- don't include this code in the library. Flag ("Record_Rep_Clauses"); -- Are we using the Record Representation -- Clauses? (LRM 13.4) This is true if -- we are using them. They might not be -- implemented in which case we will be -- relying upon the FOR X'SIZE USE NNN; -- caluses and the kindness of the compiler. ------------------------------------------------------------------------------ -- Machine/Ada-RunTime-Implementation Issues ------------------------------------------------------------------------------ ----Bit0_Sign_Bit - TRUE if (as on the R1000) bit 0 of an array of booleans is -- the high order (sign) bit of the correspondingly sized numeric type. -- FALSE if (as on many machines) bit 0 of an array of booleans is the low -- order (even/odd) bit of the correspondingly sized numeric type. -- -- This flag must be correct or none of the bit flags sent/received in the X -- protocol messages will be correct. This is a pervasive problem. -- It is unfortunately easy to write non-portable code if care is not taken -- iterations. The Bit0_Sign_Bit flag exists so that code may be -- parameterized in order to work with any machine. Flag ("Bit0_Sign_Bit"); ----Byte0_Sign_Byte - TRUE if (as on the R1000) byte 0 of an array of bytes -- is the high order (most significant) byte of the correspondingly sized -- numeric type. FALSE if (as on some machines) byte 0 of an array of bytes -- is the low order (least significant) byte of the correspondingly sized -- numeric type. Flag ("Byte0_Sign_Byte"); ----Record_Rep_Storage_Unit_8/16/32 - Set one of these to true, or, invent -- a new parameter name of your own. Their sole purpose is to chose a -- particular set of constants within the Xlbmt_Parameters module. They -- chose the set of constants that allow us, for this target, to lay out -- bytes, half-words, and words where we need them to be. -- -- '8' will be true if System.Storage_Unit = 8. It may also be true if -- Storage_Unit is 16 or 32; it depends upon the machine/compiler byte order. -- '16' will only be true if System.Storage_Unit = 16 and/or the bit offsets -- required by the target match those given in Xlbmt_Parameters. -- '32' will only be true if System.Storage_Unit = 32 and/or the bit offsets -- required by the target match those given in Xlbmt_Parameters. Flag ("Record_Rep_Storage_Unit_8"); Flag ("Record_Rep_Storage_Unit_16"); Flag ("Record_Rep_Storage_Unit_32"); ----Row_Major_Order - TRUE if (as on the R1000) arrays are stored in memory in -- Row_Major order. This means that the successive elements of each row of a -- 2-D array are stored in successive locations. (In a (1..3,1..3) array, -- element (1,1) is followed by (1,2), (1,3), (2,1), (2,2), ... etc.) -- FALSE if (as with some compilers) arrays are stored in memory in -- Column_Major order. This means that successive elements of each row of a -- 2-D array will not be adjacent in memory. -- -- The X Protocol assumes Row-Major and this flag provides a way to make -- allowances if necessary. Note: Only Row_Major_Order=>True is fully -- implemented and tested. Row_Major_Order=>False is implemented but -- untested. Flag ("Row_Major_Order"); ----Raw_Is_Unsigned - TRUE if X_Raw_Data is range 0..255 and FALSE if it is -- range -128..127. X_Raw_Data *must* be an 8-bit numeric type so it will -- have to be one or the other. Use the 0..255 range if you have a choice. -- The code will be very slightly faster. Flag ("Raw_Is_Unsigned"); end Define_Predefineds;