comp.lang.ada
 help / color / mirror / Atom feed
From: Ken Garlington <GarlingtonKE@lmtas.lmco.com>
Subject: Converting C++ class to Ada
Date: 1996/12/10
Date: 1996-12-10T00:00:00+00:00	[thread overview]
Message-ID: <32ADF183.7195@lmtas.lmco.com> (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




             reply	other threads:[~1996-12-10  0:00 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-12-10  0:00 Ken Garlington [this message]
1996-12-11  0:00 ` Converting C++ class to Ada 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   ` Norman H. Cohen
1996-12-20  0:00   ` Jon S Anthony
1996-12-20  0:00     ` Mitch Gart
1996-12-21  0:00   ` Jon S Anthony
1996-12-11  0:00 ` Larry Kilgallen
1996-12-11  0:00 ` Stephen Leake
1996-12-13  0:00   ` Stephen Leake
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
replies disabled

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