Dynamic arrays and overlays with bounds policies
First Claim
1. A method of accessing a memory array implemented in a computer-readable medium, comprising:
- providing data contained within a one-dimensional array of allocated memory;
dynamically declaring a dimensional dynamic overlay on the data contained within the one-dimensional array from within a block of statements in a subroutine to initialize attributes within an array attribute storage object, wherein the dynamic overlay is defined within the subroutine and provides a dimensional view on the one-dimensional array, the dimensional dynamic overlay being capable of providing a view of at least two dimensions on the one-dimensional array; and
accessing the data from within the block of statements as a dimensional indexed array using the array attribute storage object, and wherein the allocated memory of the one-dimensional array remains persistent and is referenced within the array attribute storage object.
8 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods are provided for writing code to access data arrays. One aspect provides a method of accessing a memory array. Data is provided within a one-dimensional array of allocated memory. A dimensional dynamic overlay is declared from within a block of statements, and the declaration initializes various attributes within an array attribute storage object. The data is accessed from within the block of statements as a dimensional indexed array using the array attribute storage object. Another aspect provides a method of creating and accessing a dimensional dynamic array. A dimensional dynamic array is declared from within a block of statements, and memory storage for the array is dynamically allocated. A dynamic overlay storage object is also provided and its attributes are initialized from the dynamic array declaration. The data is accessed as a dimensional indexed array from within the block of statements using the array attribute storage object.
-
Citations
51 Claims
-
1. A method of accessing a memory array implemented in a computer-readable medium, comprising:
-
providing data contained within a one-dimensional array of allocated memory; dynamically declaring a dimensional dynamic overlay on the data contained within the one-dimensional array from within a block of statements in a subroutine to initialize attributes within an array attribute storage object, wherein the dynamic overlay is defined within the subroutine and provides a dimensional view on the one-dimensional array, the dimensional dynamic overlay being capable of providing a view of at least two dimensions on the one-dimensional array; and accessing the data from within the block of statements as a dimensional indexed array using the array attribute storage object, and wherein the allocated memory of the one-dimensional array remains persistent and is referenced within the array attribute storage object. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method of accessing a memory array implemented in a computer-readable medium, comprising:
-
providing data contained within a one-dimensional array of allocated memory; dynamically declaring a dimensional dynamic overlay on the data contained within the one-dimensional array from within a block of statements in a subroutine, wherein the dynamic overlay is defined within the subroutine and provides a dimensional view on the one-dimensional array, the dimensional dynamic overlay being capable of providing a view of at least two dimensions on the one-dimensional array; providing a dynamic overlay storage object associated with the declared dimensional overlay; assigning attributes from the declared dimensional dynamic overlay to the storage object; and accessing the data from within the block of statements as a dimensional indexed array using the declared dimensional overlay, and wherein access is achieved by references to persistent memory associated with the one-dimensional array that are included within the storage object. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A method of creating and accessing a multi-dimensional dynamic array implemented in a computer-readable medium, comprising:
-
dynamically declaring a dimensional dynamic array from within a block of statements in a software program subroutine; dynamically allocating memory storage sufficient to store all the elements for the declared dimensional dynamic array; providing a dynamic overlay storage object with attributes initialized from the dimensional dynamic array declaration, wherein the dynamic overlay storage object provides a dimensional view on a one-dimensional array associated with contiguous memory locations, the dimensional dynamic overlay storage object being capable of providing a view of at least two dimensions on the one-dimensional array, and wherein the contiguous memory locations remain persistent and are accessed via references housed in the overlay storage object; accessing data from the dynamically allocated memory storage as a dimensional indexed array from within the block of statements using the dynamic overlay storage object; automatically freeing the dynamically allocated memory storage when leaving a subroutine in which the dynamic array is declared; and automatically freeing the dynamic overlay storage object when leaving a subroutine in which the dynamic array is declared. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21)
-
-
22. A method of processing a data array implemented in a computer-readable medium, comprising:
-
providing a software program with at least one block of statements; declaring a data array within the block of statements, including a dimensional dynamic overlay to provide a dimensional view on a one-dimensional array associated with contiguous memory locations, the dimensional dynamic overlay being capable of providing a view of at least two dimensions on the one-dimensional array, and wherein the contiguous memory locations are persistent and the dimensional dynamic overlay includes references to the contiguous memory locations to form the dimensional view; setting an array boundary policy for the data array which is defined with or referenced by some of the block of statements, wherein the array boundary policy dictates run-time actions of the software program that are executed, if during execution of the software program, the data array is accessed outside its boundaries, and wherein the array boundary policy is configurable and user-defined; accessing the array within the block of statements; compiling the software program; and executing the software program. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. A method of processing a data array implemented in a computer-readable medium, comprising:
-
providing a software program with a block of statements in at least one subroutine; declaring a dimensional dynamic overlay on data contained within a one-dimensional array from within the block of statements to initialize attributes within an array attribute storage object, wherein the dimensional dynamic overlay provides a dimensional view on the one-dimensional array, the dimensional dynamic overlay being capable of providing a view of at least two dimensions on the one-dimensional array, and wherein memory associated with the one-dimensional array is persistent and references to the memory are included in the dimensional dynamic overlay; setting an array boundary policy for the declared dimensional overlay which is defined with or referenced by some of the block of statements wherein the array boundary policy dictates run-time actions of the software program that are executed, if during execution of the software program, the data array is accessed outside its boundaries, and wherein the array boundary policy is configurable and user-defined; accessing the data from within the block of statements as a dimensional indexed array using the array attribute storage object; compiling the software program; and executing the software program. - View Dependent Claims (35, 36, 37)
-
-
38. A method of processing a data array implemented in a computer-readable medium, comprising:
-
providing a software program with a block of statements in at least one subroutine; declaring a dimensional dynamic array from within the block of statements to initialize attributes within an array attribute storage object; dynamically allocating memory storage for the declared dimensional dynamic array; providing a dynamic overlay storage object with attributes assigned from the declared dimensional dynamic array, wherein the overlay storage object maps to the memory storage of the declared dimensional dynamic array, the overlay storage object being capable of mapping at least two dimensions on a one-dimensional array associated with the memory storage, and wherein the memory storage is persistent and references to the memory storage are included in the dynamic overlay storage object; setting an array boundary policy for the declared dimensional dynamic array which is defined with or referenced by some of the block of statements wherein the array boundary policy dictates run-time actions of the subroutine that are executed, if during execution of the subroutine, the data array is accessed outside its boundaries, and wherein the array boundary policy is configurable and user-defined; accessing data from the dynamically allocated memory storage as a dimensional indexed array from within the block of statements using the dynamic overlay storage object; automatically freeing the dynamically allocated memory storage when leaving a subroutine in which the dynamic array is declared; automatically freeing the dynamic overlay storage object when leaving a subroutine in which the dynamic array is declared; compiling the software program; and executing the software program. - View Dependent Claims (39, 40, 41)
-
-
42. A system, comprising:
-
a computer readable medium; an extended programming language encoded in the computer readable medium, including; dynamic array language extensions for declaring a dimensional dynamic array and creating an array handle for accessing the dimensional dynamic array; and dynamic overlay language extensions for declaring a dimensional dynamic overlay on existing allocated data and creating an array handle for accessing the dimensional dynamic overlay, wherein the dimensional dynamic overlay provides a dimensional view on the existing allocated data, the dimensional dynamic overlay is capable of providing a view of at least two dimensions, and wherein the existing allocated data is persistent and references to the existing allocated data are included in the dimensional dynamic overlay; and a translator for converting the extended programming language implemented in programs into machine code instructions that are able to be run on a processor. - View Dependent Claims (43, 44, 45, 46, 47)
-
-
48. A system, comprising:
-
a computer readable medium; an extended programming language encoded in the computer readable medium, including; dynamic array language extensions for declaring a dimensional dynamic array and creating an array handle for accessing the dimensional dynamic array; dynamic overlay language extensions for declaring a dimensional dynamic overlay on existing allocated data and creating an array handle for accessing the dimensional dynamic overlay, wherein the dimensional dynamic overlay provides a dimensional view on the existing allocated data, the dimensional dynamic overlay is capable of providing a view of at least two dimensions, and wherein the existing allocated data is persistent and references to the existing allocated data are included in the dimensional dynamic overlay; and boundary policy language extensions for setting array boundary policies for the dimensional dynamic array and the dimensional dynamic overlay, which define run-time actions to process when run-time access of the dimensional dynamic array exceeds its boundaries, and wherein the boundary policy language extensions are configurable and user-defined; and a translator for converting the extended programming language into machine code instructions that is able to be run on a processor. - View Dependent Claims (49, 50, 51)
-
Specification