From: stt@houdini.camb.inmet.com (Tucker Taft)
Subject: Re: ??? Help!: how to do unconstraned arrays/records???
Date: 1998/11/05
Date: 1998-11-05T00:00:00+00:00 [thread overview]
Message-ID: <F1xI6L.8Dy.0.-s@inmet.camb.inmet.com> (raw)
In-Reply-To: 36407C96.731EEB90@avionics2.robins.af.mil
al johnston (johnstona@avionics2.robins.af.mil) wrote:
: HELP!!!!
: I a trying to convert the following "static" ada data
: structure to a structure that can be created dynamically,
: ie via the "new" ada function, and setting the two
: constrants at that time.
: I can not seem to find anything that will work (as
: far as type declarations) short of
: moving the second level array (Host_array) into
: the top level structure (system_config_type) and
: making it 2d. That is TOO ugly!!!!
: Can one of you ada guru's help me out?
: the current type definitions (ie the "static"
: version) are below....
: thanks!!!!
: -al
: -------------------------------------------------------------
: NUMBER_OF_HOST_WIDGETS : Integer := some bound;
: NUMBER_OF_NODE_WIDGETS : Integer := some other bound;
: type Host_Config_Typ is
: record
: ID : Integer;
: Label : String;
: end record;
: type Host_Array is array (natural range <>) of Host_Config_Typ;
: type Node_Config_Typ is
: record
: ID : integer;
: Label : String;
: Number_of_hosts : Natural := 0;
: Hosts : Host_Array(1..NUMBER_OF_HOSTS_WIDGETS);
: end record;
: type Node_Array is array (natural rangee <>) of Node_Config_Typ;
: type System_Config_Typ is
: record
: Number_of_nodes : Natural := 0;
: Nodes : Node_Array(NUMBER_OF_NODE_WIDGETS);
: end record;
: Config : System_Config_Typ;
How about:
type Host_Config_Typ is
record
ID : Integer;
Label : String;
end record;
type Host_Array is array (Positive range <>) of Host_Config_Typ;
type Host_Array_Ptr is access Host_Array;
type Node_Config_Typ(Number_Of_Hosts_Widgets : Natural := 0) is
record
ID : integer;
Label : String;
Number_of_hosts : Natural := 0;
Hosts : Host_Array_Ptr :=
new Host_Array(1..Number_Of_Hosts_Widgets);
end record;
type Node_Array is array (Positive range <>) of Node_Config_Typ;
type System_Config_Typ(Number_Of_Node_Widgets : Natural;
Number_Of_Hosts_Widgets : Natural) is
record
Number_of_nodes : Natural := 0;
Nodes : Node_Array(1..Number_Of_Node_Widgets) :=
(others => Node_Config_Typ(Number_Of_Hosts_Widgets));
end record;
type System_Config_Typ_Ptr is access System_Config_Typ;
Now you can create a heap-resident structure as follows:
X : System_Config_Typ_Ptr := new System_Config_Typ(Num_Nodes, Num_Hosts);
Admittedly, there is an extra level of indirection to get to
each Host_Array, but that's the canonical solution to any
software engineering problem!
--
-Tucker Taft stt@inmet.com http://www.inmet.com/~stt/
Intermetrics, Inc. Burlington, MA USA
An AverStar Company
next prev parent reply other threads:[~1998-11-05 0:00 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
1998-11-04 0:00 ??? Help!: how to do unconstraned arrays/records??? al johnston
1998-11-04 0:00 ` Albert S. Johnston
1998-11-05 0:00 ` dewarr
1998-11-05 0:00 ` al johnston
1998-11-05 0:00 ` dewar
1998-11-05 0:00 ` Stephen Leake
1998-11-05 0:00 ` Tucker Taft [this message]
1998-11-05 0:00 ` Tucker Taft
1998-11-05 0:00 ` al johnston
1998-11-05 0:00 ` Tucker Taft
1998-11-05 0:00 ` Mats Weber
1998-11-05 0:00 ` Tucker Taft
1998-11-05 0:00 ` al johnston
1998-11-05 0:00 ` Tucker Taft
1998-11-06 0:00 ` Mats Weber
1998-11-06 0:00 ` Tucker Taft
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox