comp.lang.ada
 help / color / mirror / Atom feed
From: dromy@isdn.net.il (Uri)
Subject: constraint error with tagged type
Date: 23 Feb 2003 04:31:50 -0800
Date: 2003-02-23T12:31:50+00:00	[thread overview]
Message-ID: <5e59165b.0302230431.2a482db7@posting.google.com> (raw)

Hello,

I am trying to write a program that create polygons

I created a package called 'shapes':

	-- shapes.ads

	package shapes is
	   type point is record
	      X, Y : float;
	   end record;

	   type shape     is abstract tagged null record;
		... some function dealing with shape ...
	   type shape_ptr is access all shape'CLASS; 
   
	   type Polygon_Points is array (integer range <>) of point;
	   type polygon(Edges : integer) is new shape with record
	      vertex : Polygon_Points (1..Edges);
	   end record;
	   type polygon_ptr              is access all polygon'CLASS;
		... some function dealing with polygon ...
	   function  make_polygon(Point_Array : Polygon_Points) 
                                     return polygon_ptr;
	   procedure put_values  (poly : out polygon; 
                                  Pt_Array : Polygon_Points);
	private
	   	... some private function ...
	end shapes;

	--------------------------------------------------------------------------------

	-- shapes.adb 

	package body shapes is

		... some finctions ...

	   function  make_polygon(Point_Array : Polygon_Points) 
                                    return                            
                               polygon_ptr is
           -- create a polygon
	      This_Shape : polygon_ptr := new polygon(Point_Array'LENGTH);
	   begin
	      put_values(This_Shape.all, Point_Array);
	      return This_Shape;   
	   end make_polygon;
   
   	procedure put_values  (poly : out polygon; 
                               Pt_Array : Polygon_Points) is
	   -- put values in a polygon
	   begin
	      for I in Pt_Array'RANGE loop
	         poly.vertex(I) := Pt_Array(I);
	      end loop;
	   end put_values;

	end shapes;

I tried to create a polygon in my main program:

	-- main.adb

	with shapes;
	use  shapes;

	procedure main is
	   shape_array : array (1..4) of shape_ptr;
	begin
	    -- create a polygon
              ... blah, blah, blah ...                          
	   shape_array(3) := shape_ptr(make_polygon (((0.0, 0.0),
        	                                      (0.0, 3.0),
	                                              (4.0, 0.0),
	                                              (4.0, 3.0))));
              ... blah, blah, blah ...
	end main;

but when I ran it I got a CONTRAINT_ERROR, while using the debuger I
got something that looks like ____gant_malloc, but I don't understad
why the program can't create an array of points with only 4 members.

Please tell me what I did wrong.



             reply	other threads:[~2003-02-23 12:31 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-23 12:31 Uri [this message]
2003-02-23 13:39 ` constraint error with tagged type David C. Hoos, Sr.
2003-02-24  8:58   ` Uri
replies disabled

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