From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,ab36006a122bb868 X-Google-Attributes: gid103376,public From: tmoran@bix.com Subject: Re: Overlay allowability Date: 2000/05/11 Message-ID: #1/1 X-Deja-AN: 621815267 References: <39198FC4.62382ECE@lmco.com> X-Complaints-To: abuse@pacbell.net X-Trace: news.pacbell.net 958005529 206.170.2.2 (Wed, 10 May 2000 17:38:49 PDT) Organization: SBC Internet Services NNTP-Posting-Date: Wed, 10 May 2000 17:38:49 PDT Newsgroups: comp.lang.ada Date: 2000-05-11T00:00:00+00:00 List-Id: > My goal has been to serialize an arbitrary object (the type of which is > provided as a generic formal parameter) into a Stream_Element_Array for > use with the AdaSockets package. Declare a child, Sender_Type, say, of Ada.Streams.Root_Stream_Type, and overide the inherited (abstract) Read and Write routines. Write will be called with a Stream_Element_Array, which you will presumably send out through the socket. Then you can type Ptr_Sender_Type is access Sender_Type; Sender : Ptr_Sender_Type := new Sender_Type; generic type Some_Type is private; procedure Send_Some_Type(X:in Some_Type); procedure Send_Some_Type(X:in Some_Type) is begin Some_Type'Write(Sender, X); end Send_Some_Type; procedure Send_Integer is new Send_Some_Type(Integer); begin Send_Integer(27); -- make call(s) on Sender_Type Write routine If Some_Type is a record or array the system will automagically make calls on Sender_Type's Write routine with the individual components. If that is too slow, you can declare your own special writer routine and do "for My_Record_Type'Write use My_Special_Writer;"