[multiple changes]
2011-08-01 Pascal Obry <obry@adacore.com> * a-stzunb-shared.adb, a-strunb-shared.adb, a-stwiun-shared.adb: Fix Replace_Slice when High is above current string size. (Replace_Slice): Fix DL computation when High is above current string length. 2011-08-01 Gary Dismukes <dismukes@adacore.com> * gnat_rm.texi: Add documentation for pragma Static_Elaboration_Desired. From-SVN: r177004
This commit is contained in:
parent
e7f567a338
commit
060a3f289f
|
@ -1,3 +1,14 @@
|
||||||
|
2011-08-01 Pascal Obry <obry@adacore.com>
|
||||||
|
|
||||||
|
* a-stzunb-shared.adb, a-strunb-shared.adb, a-stwiun-shared.adb:
|
||||||
|
Fix Replace_Slice when High is above current string size.
|
||||||
|
(Replace_Slice): Fix DL computation when High is above current
|
||||||
|
string length.
|
||||||
|
|
||||||
|
2011-08-01 Gary Dismukes <dismukes@adacore.com>
|
||||||
|
|
||||||
|
* gnat_rm.texi: Add documentation for pragma Static_Elaboration_Desired.
|
||||||
|
|
||||||
2011-08-01 Matthew Heaney <heaney@adacore.com>
|
2011-08-01 Matthew Heaney <heaney@adacore.com>
|
||||||
|
|
||||||
* a-rbtgbo.adb (Delete_Node_Sans_Free): Fixed assignment to left child
|
* a-rbtgbo.adb (Delete_Node_Sans_Free): Fixed assignment to left child
|
||||||
|
|
|
@ -1347,7 +1347,9 @@ package body Ada.Strings.Unbounded is
|
||||||
-- Do replace operation when removed slice is not empty
|
-- Do replace operation when removed slice is not empty
|
||||||
|
|
||||||
if High >= Low then
|
if High >= Low then
|
||||||
DL := By'Length + SR.Last + Low - High - 1;
|
DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
|
||||||
|
-- This is the number of characters remaining in the string after
|
||||||
|
-- replacing the slice.
|
||||||
|
|
||||||
-- Result is empty string, reuse empty shared string
|
-- Result is empty string, reuse empty shared string
|
||||||
|
|
||||||
|
@ -1394,7 +1396,9 @@ package body Ada.Strings.Unbounded is
|
||||||
-- Do replace operation only when replaced slice is not empty
|
-- Do replace operation only when replaced slice is not empty
|
||||||
|
|
||||||
if High >= Low then
|
if High >= Low then
|
||||||
DL := By'Length + SR.Last + Low - High - 1;
|
DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
|
||||||
|
-- This is the number of characters remaining in the string after
|
||||||
|
-- replacing the slice.
|
||||||
|
|
||||||
-- Result is empty string, reuse empty shared string
|
-- Result is empty string, reuse empty shared string
|
||||||
|
|
||||||
|
|
|
@ -1359,7 +1359,9 @@ package body Ada.Strings.Wide_Unbounded is
|
||||||
-- Do replace operation when removed slice is not empty
|
-- Do replace operation when removed slice is not empty
|
||||||
|
|
||||||
if High >= Low then
|
if High >= Low then
|
||||||
DL := By'Length + SR.Last + Low - High - 1;
|
DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
|
||||||
|
-- This is the number of characters remaining in the string after
|
||||||
|
-- replacing the slice.
|
||||||
|
|
||||||
-- Result is empty string, reuse empty shared string
|
-- Result is empty string, reuse empty shared string
|
||||||
|
|
||||||
|
@ -1406,7 +1408,9 @@ package body Ada.Strings.Wide_Unbounded is
|
||||||
-- Do replace operation only when replaced slice is not empty
|
-- Do replace operation only when replaced slice is not empty
|
||||||
|
|
||||||
if High >= Low then
|
if High >= Low then
|
||||||
DL := By'Length + SR.Last + Low - High - 1;
|
DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
|
||||||
|
-- This is the number of characters remaining in the string after
|
||||||
|
-- replacing the slice.
|
||||||
|
|
||||||
-- Result is empty string, reuse empty shared string
|
-- Result is empty string, reuse empty shared string
|
||||||
|
|
||||||
|
|
|
@ -1369,7 +1369,9 @@ package body Ada.Strings.Wide_Wide_Unbounded is
|
||||||
-- Do replace operation when removed slice is not empty
|
-- Do replace operation when removed slice is not empty
|
||||||
|
|
||||||
if High >= Low then
|
if High >= Low then
|
||||||
DL := By'Length + SR.Last + Low - High - 1;
|
DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
|
||||||
|
-- This is the number of characters remaining in the string after
|
||||||
|
-- replacing the slice.
|
||||||
|
|
||||||
-- Result is empty string, reuse empty shared string
|
-- Result is empty string, reuse empty shared string
|
||||||
|
|
||||||
|
@ -1416,7 +1418,9 @@ package body Ada.Strings.Wide_Wide_Unbounded is
|
||||||
-- Do replace operation only when replaced slice is not empty
|
-- Do replace operation only when replaced slice is not empty
|
||||||
|
|
||||||
if High >= Low then
|
if High >= Low then
|
||||||
DL := By'Length + SR.Last + Low - High - 1;
|
DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
|
||||||
|
-- This is the number of characters remaining in the string after
|
||||||
|
-- replacing the slice.
|
||||||
|
|
||||||
-- Result is empty string, reuse empty shared string
|
-- Result is empty string, reuse empty shared string
|
||||||
|
|
||||||
|
|
|
@ -192,6 +192,7 @@ Implementation Defined Pragmas
|
||||||
* Pragma Source_File_Name::
|
* Pragma Source_File_Name::
|
||||||
* Pragma Source_File_Name_Project::
|
* Pragma Source_File_Name_Project::
|
||||||
* Pragma Source_Reference::
|
* Pragma Source_Reference::
|
||||||
|
* Pragma Static_Elaboration_Desired::
|
||||||
* Pragma Stream_Convert::
|
* Pragma Stream_Convert::
|
||||||
* Pragma Style_Checks::
|
* Pragma Style_Checks::
|
||||||
* Pragma Subtitle::
|
* Pragma Subtitle::
|
||||||
|
@ -817,6 +818,7 @@ consideration, the use of these pragmas should be minimized.
|
||||||
* Pragma Source_File_Name::
|
* Pragma Source_File_Name::
|
||||||
* Pragma Source_File_Name_Project::
|
* Pragma Source_File_Name_Project::
|
||||||
* Pragma Source_Reference::
|
* Pragma Source_Reference::
|
||||||
|
* Pragma Static_Elaboration_Desired::
|
||||||
* Pragma Stream_Convert::
|
* Pragma Stream_Convert::
|
||||||
* Pragma Style_Checks::
|
* Pragma Style_Checks::
|
||||||
* Pragma Subtitle::
|
* Pragma Subtitle::
|
||||||
|
@ -4597,6 +4599,31 @@ The second argument must be a string literal, it cannot be a static
|
||||||
string expression other than a string literal. This is because its value
|
string expression other than a string literal. This is because its value
|
||||||
is needed for error messages issued by all phases of the compiler.
|
is needed for error messages issued by all phases of the compiler.
|
||||||
|
|
||||||
|
@node Pragma Static_Elaboration_Desired
|
||||||
|
@unnumberedsec Pragma Static_Elaboration_Desired
|
||||||
|
@findex Static_Elaboration_Desired
|
||||||
|
@noindent
|
||||||
|
Syntax:
|
||||||
|
|
||||||
|
@smallexample @c ada
|
||||||
|
pragma Static_Elaboration_Desired;
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
This pragma is used to indicate the desire for objects declared in the library
|
||||||
|
unit to which the pragma applies to be initialized statically. This means that
|
||||||
|
if an object is initialized (either explicitly or by default initialization),
|
||||||
|
then the object's value can be determined at compile time and it requires no
|
||||||
|
code to initialize it. This generally allows the object to be allocated in
|
||||||
|
read-only data space. A warning is issued if an object or aggregate declared
|
||||||
|
at the top level of the package cannot be initialized statically. Additionally,
|
||||||
|
use of this pragma will suppress the generation of loops to initialize named
|
||||||
|
aggregates whose only choice is an others choice that specifies a component
|
||||||
|
value known at compile time, so that it can be allocated as static data. This
|
||||||
|
is limited to aggregates with a maximum of 100 components. (See also the
|
||||||
|
restriction No_Implicit_Loops, which supports static allocation for larger
|
||||||
|
aggregates.)
|
||||||
|
|
||||||
@node Pragma Stream_Convert
|
@node Pragma Stream_Convert
|
||||||
@unnumberedsec Pragma Stream_Convert
|
@unnumberedsec Pragma Stream_Convert
|
||||||
@findex Stream_Convert
|
@findex Stream_Convert
|
||||||
|
|
Loading…
Reference in New Issue