comp.lang.ada
 help / color / mirror / Atom feed
* String Allocation when Interfacing C with Ada
@ 1996-12-05  0:00 Paul Chardon
  1996-12-06  0:00 ` Stephen Leake
  0 siblings, 1 reply; 2+ messages in thread
From: Paul Chardon @ 1996-12-05  0:00 UTC (permalink / raw)



Hello,
	I'm writing a C program using a string, this string is passed as
parameter to an Ada subprogram in order to modify its value. Is there
any problem of allocation or deallocation in this case.

For instance:

-- The main C program
void Handle_String(char * s);
main ()
{
   char *a_string

   strcpy(a_string,"high");
   printf("String Value : %s \n", A_String);
   adainit();
   Handle_String(A_String);
   printf("String Value : %s \n",A_String);
   /* Print only value token in account when using strcpy in the Ada
      subprogram, not when using "Ada allocation" */
   adafinal();
}
-- The imported Ada subprogram
with Interfaces.C.Strings;
with Text_Io;
procedure Handle_String(S : in out Interfaces.C.Strings.Chars_ptr) is

	procedure C_Strcpy
	(Target :    out Interfaces.C.Strings.Chars_Ptr;
         Source : in     Interfaces.C.Strings.Chars_Ptr);
	pragma import(C, C_Strcpy,"strcpy");

begin
	-- THAT CALL 
	S := Interfaces.C.Strings.New_String
	     ("Value not token in account");
	-- when I put only this call, no value is printed in the C 			--
program
	-- OR THIS OTHER CALL
	C_Strcpy(S,
		 Interfaces.C.Strings.New_String
		 ("Value token in account"));
	-- When I do that copy instead of the first allocation call, the 		--
good value is printed in C main function
end Handle_String;
pragma Export(C, Handle_String, "Handle_String");

	If anyone can explain why it doesnt works in the first call case.
Thanks in advance, Paul.




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

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

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1996-12-05  0:00 String Allocation when Interfacing C with Ada Paul Chardon
1996-12-06  0:00 ` Stephen Leake

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