comp.lang.ada
 help / color / mirror / Atom feed
* Converting C++ class to Ada
@ 1996-12-10  0:00 Ken Garlington
  1996-12-11  0:00 ` Stephen Leake
                   ` (4 more replies)
  0 siblings, 5 replies; 22+ messages in thread
From: Ken Garlington @ 1996-12-10  0:00 UTC (permalink / raw)



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




^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~1996-12-21  0:00 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1996-12-10  0:00 Converting C++ class to Ada Ken Garlington
1996-12-11  0:00 ` Stephen Leake
1996-12-13  0:00   ` Stephen Leake
1996-12-11  0:00 ` Larry Kilgallen
1996-12-11  0:00 ` Norman H. Cohen
1996-12-12  0:00   ` Jon S Anthony
1996-12-11  0:00 ` Jon S Anthony
1996-12-12  0:00   ` Ken Garlington
1996-12-18  0:00   ` Jon S Anthony
1996-12-18  0:00     ` Matthew Heaney
1996-12-19  0:00     ` Robert A Duff
1996-12-20  0:00       ` Stephen Leake
1996-12-20  0:00         ` Robert A Duff
1996-12-20  0:00   ` Jon S Anthony
1996-12-20  0:00     ` Mitch Gart
1996-12-20  0:00   ` Norman H. Cohen
1996-12-21  0:00   ` Jon S Anthony
1996-12-12  0:00 ` Dale Stanbrough
1996-12-12  0:00   ` Constructors for Ada (was: Converting C++ class to Ada) Matthew Heaney
1996-12-13  0:00     ` Norman H. Cohen
1996-12-13  0:00       ` Matthew Heaney
1996-12-17  0:00   ` Robert I. Eachus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox