* (GNADE) Access attribute not allowed in generic body @ 2013-08-15 7:27 Dwiki 2013-08-15 7:37 ` Dwiki ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Dwiki @ 2013-08-15 7:27 UTC (permalink / raw) hello again, im trying to compile app using gnade (1.5.3a) in windows, but it show error message gnu-db-sqlcli-dispatch-a_string.adb:62:40: 'Access attribute not allowed in gene ric body gnu-db-sqlcli-dispatch-a_string.adb:62:40: because access type "Attr_Get_Func" i s declared outside generic unit (RM 3.10.2(32)) gnu-db-sqlcli-dispatch-a_string.adb:62:40: move 'Access to private part, or (Ada 2005) use anonymous access type instead of "Attr_Get_Func" gnu-db-sqlcli-dispatch-a_string.adb:63:40: 'Access attribute not allowed in gene ric body gnu-db-sqlcli-dispatch-a_string.adb:63:40: because access type "Attr_Set_Proc" i s declared outside generic unit (RM 3.10.2(32)) gnu-db-sqlcli-dispatch-a_string.adb:63:40: move 'Access to private part, or (Ada 2005) use anonymous access type instead of "Attr_Set_Proc" completed 1 out of 1 (100%)... gprbuild: *** compilation phase failed any clue? thank you.... ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: (GNADE) Access attribute not allowed in generic body 2013-08-15 7:27 (GNADE) Access attribute not allowed in generic body Dwiki @ 2013-08-15 7:37 ` Dwiki 2013-08-15 7:53 ` Dmitry A. Kazakov 2013-08-15 13:42 ` Shark8 2 siblings, 0 replies; 10+ messages in thread From: Dwiki @ 2013-08-15 7:37 UTC (permalink / raw) Pada Kamis, 15 Agustus 2013 14:27:58 UTC+7, Dwiki menulis: > hello again, > > im trying to compile app using gnade (1.5.3a) in windows, but it show error message > > > > gnu-db-sqlcli-dispatch-a_string.adb:62:40: 'Access attribute not allowed in gene > > ric body > > gnu-db-sqlcli-dispatch-a_string.adb:62:40: because access type "Attr_Get_Func" i > > s declared outside generic unit (RM 3.10.2(32)) > > gnu-db-sqlcli-dispatch-a_string.adb:62:40: move 'Access to private part, or (Ada > > 2005) use anonymous access type instead of "Attr_Get_Func" > > gnu-db-sqlcli-dispatch-a_string.adb:63:40: 'Access attribute not allowed in gene > > ric body > > gnu-db-sqlcli-dispatch-a_string.adb:63:40: because access type "Attr_Set_Proc" i > > s declared outside generic unit (RM 3.10.2(32)) > > gnu-db-sqlcli-dispatch-a_string.adb:63:40: move 'Access to private part, or (Ada > > 2005) use anonymous access type instead of "Attr_Set_Proc" > > completed 1 out of 1 (100%)... > > gprbuild: *** compilation phase failed > > > > any clue? > > > > thank you.... here is the code procedure Register (Index : in Attr.T) is begin Get_Dispatch_Array (Index) := Get'Access; Set_Dispatch_Array (Index) := Set'Access; end Register; ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: (GNADE) Access attribute not allowed in generic body 2013-08-15 7:27 (GNADE) Access attribute not allowed in generic body Dwiki 2013-08-15 7:37 ` Dwiki @ 2013-08-15 7:53 ` Dmitry A. Kazakov 2013-08-15 8:17 ` Dwiki ` (2 more replies) 2013-08-15 13:42 ` Shark8 2 siblings, 3 replies; 10+ messages in thread From: Dmitry A. Kazakov @ 2013-08-15 7:53 UTC (permalink / raw) On Thu, 15 Aug 2013 00:27:58 -0700 (PDT), Dwiki wrote: > im trying to compile app using gnade (1.5.3a) in windows, but it show error message [...] > any clue? Yes, I remember these errors caused by Ada 2005 vs. 95 incompatibilities. I stopped using GNADE long ago, but I still have the fixes I made in GNADE 2.0. I moved Get and Set to private part of the package and used 'Unrestricted_Access in Register. E.g.: ----------------------------- with GNU.DB.SQLCLI.Generic_Attr.String_Attribute; pragma Elaborate_All (GNU.DB.SQLCLI.Generic_Attr.String_Attribute); generic package GNU.DB.SQLCLI.Dispatch.A_String is package Derived is new Attr.String_Attribute; subtype Info is Derived.Attribute_Value_Pair_String; procedure Register (Index : in Attr.T); pragma Inline_Always (Register); private function Get (Handle : Ctx; Attribute : Attr.T; MaxLength : SQLSMALLINT := 0; Data : Attr.Aux; ErrorCode : access SQLRETURN) return Attr.Attribute_Value_Pair'Class; procedure Set (Handle : in Ctx; AV_Pair : in Attr.Attribute_Value_Pair'Class; Data : in Attr.Aux; ErrorCode : out SQLRETURN); end GNU.DB.SQLCLI.Dispatch.A_String; -------------------------------- package body GNU.DB.SQLCLI.Dispatch.A_String is function Get (Handle : Ctx; Attribute : Attr.T; MaxLength : SQLSMALLINT := 0; Data : Attr.Aux; ErrorCode : access SQLRETURN) return Attr.Attribute_Value_Pair'Class is begin return Info (Derived.GetAttr (Handle, Attribute, Data, MaxLength, ErrorCode)); end Get; procedure Set (Handle : in Ctx; AV_Pair : in Attr.Attribute_Value_Pair'Class; Data : in Attr.Aux; ErrorCode : out SQLRETURN) is begin if not (AV_Pair in Info'Class) then Raise_SQL_Error (ProcedureName => "SetAttr", ErrorMessage => "Attribute value is not a String", RC => SQL_ADA95_TYPE_ERROR); end if; Derived.SetAttr (Handle, Info (AV_Pair), Data, ErrorCode); end Set; procedure Register (Index : in Attr.T) is begin Get_Dispatch_Array (Index) := Get'Unrestricted_Access; Set_Dispatch_Array (Index) := Set'Unrestricted_Access; end Register; end GNU.DB.SQLCLI.Dispatch.A_String; ----------------------------------- I cannot tell if that helps, because, as I said I don't use it anymore. P.S. 1. GNADE seems to be not maintained. 2. GNADE ODBC bindings will certainly not work on any natively 64-bit platform because MS changed ODBC API. If you want ODBC bindings you can try these: http://www.dmitry-kazakov.de/ada/components.htm#ODBC_Bindings -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: (GNADE) Access attribute not allowed in generic body 2013-08-15 7:53 ` Dmitry A. Kazakov @ 2013-08-15 8:17 ` Dwiki 2013-08-16 16:46 ` Stephen Leake 2013-08-15 8:37 ` egilhh 2013-08-16 16:44 ` Stephen Leake 2 siblings, 1 reply; 10+ messages in thread From: Dwiki @ 2013-08-15 8:17 UTC (permalink / raw) Pada Kamis, 15 Agustus 2013 14:53:37 UTC+7, Dmitry A. Kazakov menulis: > On Thu, 15 Aug 2013 00:27:58 -0700 (PDT), Dwiki wrote: > > > > > im trying to compile app using gnade (1.5.3a) in windows, but it show error message > > [...] > > > any clue? > > > > Yes, I remember these errors caused by Ada 2005 vs. 95 incompatibilities. > > > > I stopped using GNADE long ago, but I still have the fixes I made in GNADE > > 2.0. I moved Get and Set to private part of the package and used > > 'Unrestricted_Access in Register. E.g.: > > ----------------------------- > > with GNU.DB.SQLCLI.Generic_Attr.String_Attribute; > > pragma Elaborate_All (GNU.DB.SQLCLI.Generic_Attr.String_Attribute); > > > > generic > > package GNU.DB.SQLCLI.Dispatch.A_String is > > > > package Derived is new Attr.String_Attribute; > > subtype Info is Derived.Attribute_Value_Pair_String; > > > > procedure Register (Index : in Attr.T); > > pragma Inline_Always (Register); > > > > private > > function Get (Handle : Ctx; > > Attribute : Attr.T; > > MaxLength : SQLSMALLINT := 0; > > Data : Attr.Aux; > > ErrorCode : access SQLRETURN) > > return Attr.Attribute_Value_Pair'Class; > > procedure Set (Handle : in Ctx; > > AV_Pair : in Attr.Attribute_Value_Pair'Class; > > Data : in Attr.Aux; > > ErrorCode : out SQLRETURN); > > > > end GNU.DB.SQLCLI.Dispatch.A_String; > > -------------------------------- > > package body GNU.DB.SQLCLI.Dispatch.A_String is > > > > function Get (Handle : Ctx; > > Attribute : Attr.T; > > MaxLength : SQLSMALLINT := 0; > > Data : Attr.Aux; > > ErrorCode : access SQLRETURN) > > return Attr.Attribute_Value_Pair'Class is > > begin > > return Info (Derived.GetAttr (Handle, > > Attribute, > > Data, > > MaxLength, > > ErrorCode)); > > end Get; > > > > procedure Set (Handle : in Ctx; > > AV_Pair : in Attr.Attribute_Value_Pair'Class; > > Data : in Attr.Aux; > > ErrorCode : out SQLRETURN) is > > begin > > if not (AV_Pair in Info'Class) then > > Raise_SQL_Error > > (ProcedureName => "SetAttr", > > ErrorMessage => "Attribute value is not a String", > > RC => SQL_ADA95_TYPE_ERROR); > > end if; > > Derived.SetAttr (Handle, Info (AV_Pair), Data, ErrorCode); > > end Set; > > > > procedure Register (Index : in Attr.T) is > > begin > > Get_Dispatch_Array (Index) := Get'Unrestricted_Access; > > Set_Dispatch_Array (Index) := Set'Unrestricted_Access; > > end Register; > > > > end GNU.DB.SQLCLI.Dispatch.A_String; > > ----------------------------------- > > I cannot tell if that helps, because, as I said I don't use it anymore. > > > > P.S. > > > > 1. GNADE seems to be not maintained. > > > > 2. GNADE ODBC bindings will certainly not work on any natively 64-bit > > platform because MS changed ODBC API. If you want ODBC bindings you can try > > these: > > > > http://www.dmitry-kazakov.de/ada/components.htm#ODBC_Bindings > > > > -- > > Regards, > > Dmitry A. Kazakov > > http://www.dmitry-kazakov.de GOD BLESS YOU Dmitry, big thanks it works now, im using gnade because there is a minor change in old application that using gnade, one more time u save me and my job :D ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: (GNADE) Access attribute not allowed in generic body 2013-08-15 8:17 ` Dwiki @ 2013-08-16 16:46 ` Stephen Leake 2013-08-18 13:40 ` Dwiki 0 siblings, 1 reply; 10+ messages in thread From: Stephen Leake @ 2013-08-16 16:46 UTC (permalink / raw) Dwiki <dwiki.jtk07@gmail.com> writes: >> >> ... >> > > > im using gnade because there is a minor change in old application that > using gnade, one more time u save me and my job :D Please strip parts of the original article that are not relevant to your reply; it is tedious to have to scroll through lots of quoted text only to discover it's not relevant. -- -- Stephe ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: (GNADE) Access attribute not allowed in generic body 2013-08-16 16:46 ` Stephen Leake @ 2013-08-18 13:40 ` Dwiki 0 siblings, 0 replies; 10+ messages in thread From: Dwiki @ 2013-08-18 13:40 UTC (permalink / raw) > Please strip parts of the original article that are not relevant to your > > reply; it is tedious to have to scroll through lots of quoted text only > > to discover it's not relevant. ok,thank you for advise, and sorry for inconvenience :) ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: (GNADE) Access attribute not allowed in generic body 2013-08-15 7:53 ` Dmitry A. Kazakov 2013-08-15 8:17 ` Dwiki @ 2013-08-15 8:37 ` egilhh 2013-08-16 16:44 ` Stephen Leake 2 siblings, 0 replies; 10+ messages in thread From: egilhh @ 2013-08-15 8:37 UTC (permalink / raw) On Thursday, August 15, 2013 9:53:37 AM UTC+2, Dmitry A. Kazakov wrote: > > 2.0. I moved Get and Set to private part of the package and used > > 'Unrestricted_Access in Register. E.g.: 'Unrestricted_Access is Gnat-specific. A more portable alternative would be constants in the private part of the spec: > with GNU.DB.SQLCLI.Generic_Attr.String_Attribute; [...] > private > > function Get (Handle : Ctx; > > Attribute : Attr.T; > > MaxLength : SQLSMALLINT := 0; > > Data : Attr.Aux; > > ErrorCode : access SQLRETURN) > > return Attr.Attribute_Value_Pair'Class; > > procedure Set (Handle : in Ctx; > > AV_Pair : in Attr.Attribute_Value_Pair'Class; > > Data : in Attr.Aux; > > ErrorCode : out SQLRETURN); Get_Access : constant Attr_Get_Func := Get'Access; Set_Access : constant Attr_Set_Proc := Set'Access; > end GNU.DB.SQLCLI.Dispatch.A_String; > > -------------------------------- > > package body GNU.DB.SQLCLI.Dispatch.A_String is [...] > procedure Register (Index : in Attr.T) is > > begin Get_Dispatch_Array (Index) := Get_Access; Set_Dispatch_Array (Index) := Set_Access; > end Register; > > > > end GNU.DB.SQLCLI.Dispatch.A_String; > > ----------------------------------- ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: (GNADE) Access attribute not allowed in generic body 2013-08-15 7:53 ` Dmitry A. Kazakov 2013-08-15 8:17 ` Dwiki 2013-08-15 8:37 ` egilhh @ 2013-08-16 16:44 ` Stephen Leake 2 siblings, 0 replies; 10+ messages in thread From: Stephen Leake @ 2013-08-16 16:44 UTC (permalink / raw) "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes: > 1. GNADE seems to be not maintained. Correct. The current recommendation is to use gnatcoll. When compiling any GNAT tools, and applications based on them, you should always use a consistent set of binaries and sources from the most recent GNAT GPL release. -- -- Stephe ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: (GNADE) Access attribute not allowed in generic body 2013-08-15 7:27 (GNADE) Access attribute not allowed in generic body Dwiki 2013-08-15 7:37 ` Dwiki 2013-08-15 7:53 ` Dmitry A. Kazakov @ 2013-08-15 13:42 ` Shark8 2013-08-15 15:10 ` Adam Beneschan 2 siblings, 1 reply; 10+ messages in thread From: Shark8 @ 2013-08-15 13:42 UTC (permalink / raw) On Thursday, August 15, 2013 1:27:58 AM UTC-6, Dwiki wrote: > hello again, > > im trying to compile app using gnade (1.5.3a) in windows, but it show error message > > > > gnu-db-sqlcli-dispatch-a_string.adb:62:40: 'Access attribute not allowed in gene > > ric body > > gnu-db-sqlcli-dispatch-a_string.adb:62:40: because access type "Attr_Get_Func" i > > s declared outside generic unit (RM 3.10.2(32)) > > gnu-db-sqlcli-dispatch-a_string.adb:62:40: move 'Access to private part, or (Ada > > 2005) use anonymous access type instead of "Attr_Get_Func" > > gnu-db-sqlcli-dispatch-a_string.adb:63:40: 'Access attribute not allowed in gene > > ric body > > gnu-db-sqlcli-dispatch-a_string.adb:63:40: because access type "Attr_Set_Proc" i > > s declared outside generic unit (RM 3.10.2(32)) > > gnu-db-sqlcli-dispatch-a_string.adb:63:40: move 'Access to private part, or (Ada > > 2005) use anonymous access type instead of "Attr_Set_Proc" > > completed 1 out of 1 (100%)... > > gprbuild: *** compilation phase failed > > > > any clue? > > > > thank you.... If it's a Ada 2005/2012 incompatibility as Dmitry suggests you can try throwing "pragma Ada_2005;" as the first-line in the body. And, if you're using GNAT, you can use different Ada versions for the spec and body... which means you can add the pre/post condition aspects [and an Ada_2012 pragma] to the spec and keep your working Ada 2005 (or 95, or possibly 83*) and add the appropriate pragma. * Ada 83 doesn't allow child-packages to be with/used, this can be alleviated by creating a library-level rename and using that. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: (GNADE) Access attribute not allowed in generic body 2013-08-15 13:42 ` Shark8 @ 2013-08-15 15:10 ` Adam Beneschan 0 siblings, 0 replies; 10+ messages in thread From: Adam Beneschan @ 2013-08-15 15:10 UTC (permalink / raw) On Thursday, August 15, 2013 6:42:12 AM UTC-7, Shark8 wrote: > If it's a Ada 2005/2012 incompatibility as Dmitry suggests you can try throwing "pragma Ada_2005;" as the first-line in the body. No, it's an Ada 95/2005 incompatibility (the rules about 'Access on a subprogram in a generic body were changed because the old rules led to problems in some cases). So I guess you'd need "pragma Ada_95;" or something like that? -- Adam ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-08-18 13:40 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2013-08-15 7:27 (GNADE) Access attribute not allowed in generic body Dwiki 2013-08-15 7:37 ` Dwiki 2013-08-15 7:53 ` Dmitry A. Kazakov 2013-08-15 8:17 ` Dwiki 2013-08-16 16:46 ` Stephen Leake 2013-08-18 13:40 ` Dwiki 2013-08-15 8:37 ` egilhh 2013-08-16 16:44 ` Stephen Leake 2013-08-15 13:42 ` Shark8 2013-08-15 15:10 ` Adam Beneschan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox