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: 109fba,2f84446733b06aca,start X-Google-Attributes: gid109fba,public X-Google-Thread: 103376,2f84446733b06aca,start X-Google-Attributes: gid103376,public From: Ken Garlington Subject: Converting C++ class to Ada Date: 1996/12/10 Message-ID: <32ADF183.7195@lmtas.lmco.com>#1/1 X-Deja-AN: 203402335 content-type: text/plain; charset=us-ascii organization: Lockheed Martin Tactical Aircraft Systems mime-version: 1.0 newsgroups: comp.lang.ada,comp.lang.c++ x-mailer: Mozilla 3.01 (Win95; U) Date: 1996-12-10T00:00:00+00:00 List-Id: In an attempt to better understand both C++ and Ada, I've been converting some C++ code into Ada. I'm struggling with this particular class: class CTableXY { public: CMotor& XMotor; CMotor& YMotor; CSwitch& XLimit; CSwitch& YLimit; CTableXY( CMotor& xmotor, CMotor& ymotor, CSwitch& xlim, CSwitch& ylim ) : XMotor(xmotor), YMotor(ymotor), XLimit(xlim), YLimit(ylim) {} void SetVelocityX( float vel ) { XMotor.SetSpeed( vel ); } void SetVelocityY( float vel ) { YMotor.SetSpeed( vel ); } int GetSwitchX( void ) { return XLimit.isOpen(); } int GetSwitchY( void ) { return YLimit.isOpen(); } }; It seems to me that the straightforward Ada translation is something like: with Motor, Switch; package Table_XY is type Motor_Access_Type is access all Motor.Object_Type'Class; type Switch_Access_Type is access all Switch.Object_Type'Class; type Object_Type is record X_Motor : Motor_Access_Type; Y_Motor : Motor_Access_Type; X_Limit : Switch_Access_Type; Y_Limit : Switch_Access_Type; end record; procedure Set_Velocity_X ( Object : in out Object_Type; Velocity : in Motor.Velocity_Type ); -- and so forth end Table_XY; My main issues: (1) What do I do about the constructor? As I understand C++, I need to force the user to supply values for the components of Object_Type when something of that type is declared. How do I do this? (2) If I'm reading it correctly, the C++ interface exposes the details of the table, although it provides procedures to manipulate it. However, I'm thinking of making Object_Type limited private anyway, since otherwise it seems silly to have the procedures/functions that are declared here. (More of a style issue than anything...) Any comments? -- LMTAS - The Fighter Enterprise - "Our Brand Means Quality" For job listings, other info: http://www.lmtas.com or http://www.lmco.com