IP Library Granted Patent US 7,451,436
Granted Patent B2
US 7,451,436 · App. 10/995,441 · Granted Nov 11, 2008

Aggregate handling of operator overloading

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,451,436
App. No.
10/995,441
Granted
Nov 11, 2008
Kind
B2
Abstract

System and method for aggregate handling of operator overloading. A program is created, including an aggregate comprising multiple data elements of one or more data types, and an operator applied to the aggregate. At least one of the data types is user-defined, and specifies a user-defined operator function for the operator. The aggregate is analyzed to determine one or more operator functions implementing the operator for the data elements, and executable code invoking the one or more operator functions for the plurality of data elements generated, e.g., for each data element in the aggregate: if the data type of the data element specifies an operator function for the operator, executable code invoking the function may be generated, and if not, then if the data element is another aggregate, the analyzing/generating is performed for the other aggregate, and if the data element is not an aggregate, an error may be indicated.

Claims (65)

1. A computer-accessible memory medium comprising program instructions implementing a program development environment, wherein the program instructions are executable by a processor to implement:

creating a graphical program in response to user input, wherein the graphical program comprises a first plurality of interconnected nodes that visually indicate functionality of the program, wherein the graphical program includes an aggregate comprising a plurality of data elements of one or more data types, wherein the graphical program further includes an operator applied to the aggregate, wherein the operator comprises a node configured to invoke an intrinsic operator function, wherein at least one of the one or more data types comprises a user-defined data type, and wherein the user-defined data type specifies a user-defined operator function for the operator;

automatically analyzing the aggregate to determine one or more operator functions implementing the operator for the plurality of data elements, including the user- defined operator function; and

in response to said automatically analyzing, automatically generating executable code invoking the one or more operator functions for the plurality of data elements, including the user-defined operator function, wherein the executable code comprises a second plurality of interconnected nodes.

2. The memory medium of claim 1 , wherein said automatically analyzing and said automatically generating comprises:

for each data element in the aggregate:

if said automatically analyzing determines that the data type of the data element specifies an operator function for the operator for the data type, automatically generating executable code invoking the operator function; and

if said automatically analyzing determines that the data type of the data element does not specify an operator function for the operator,

automatically determining if the data element is another aggregate;

if the data element is another aggregate, performing said automatically analyzing and said automatically generating on the other aggregate;

if the data element is not an aggregate, indicating an error.

3. The memory medium of claim 1 , wherein the operator comprises an intrinsic operator, and wherein the user-defined operator function for the operator comprises an overloaded operator function for the operator.

4. The memory medium of claim 3 , wherein the operator comprises a user-defined operator, and wherein the user-defined operator function for the operator comprises an overloaded operator function for the user-defined operator.

5. The memory medium of claim 1 , wherein the aggregate comprises an array.

6. The memory medium of claim 1 , wherein the aggregate comprises a cluster.

7. The memory medium of claim 1 , wherein the operator comprises:

a unary operator; or

a binary operator.

8. The memory medium of claim 1 , wherein the binary operator operates on the aggregate and one of:

a different aggregate;

a data element of an intrinsic data type; or

a data element of a user-defined data type.

9. The memory medium of claim 1 , wherein said automatically analyzing and said automatically generating are performed at compile-time.

10. The memory medium of claim 9 , wherein said automatically analyzing and said automatically generating are performed as part of compiling the graphical program.

11. The memory medium of claim 1 , wherein the program instructions are further executable to implement:

executing the graphical program, wherein said executing the graphical program comprises executing the executable code invoking respective operator functions to apply the operator to each data element whose data type specifies an operator function for the operator.

12. The memory medium of claim 1 , wherein said automatically analyzing and said automatically generating are performed for each aggregate in a recursive manner.

13. The memory medium of claim 1 , wherein said automatically analyzing and said automatically generating are performed for each aggregate in an iterative manner.

14. The memory medium of claim 1 , wherein the graphical program comprises a graphical data flow program.

15. The memory medium of claim 1 , wherein the graphical program is operable to perform one or more of:

an industrial automation function;

a process control function; and

a test and measurement function.

16. A computer-implemented method for aggregate handling of operator overloading, the method comprising:

creating a graphical program in response to user input, wherein the graphical program comprises a first plurality of interconnected nodes that visually indicate functionality of the program, wherein the graphical program includes an aggregate comprising a plurality of data elements of one or more data types, wherein the graphical program further includes an operator applied to the aggregate, wherein the operator comprises a node configured to invoke an intrinsic operator function, wherein at least one of the one or more data types comprises a user-defined data type, and wherein the user-defined data type specifies a user-defined operator function for the operator;

automatically analyzing the aggregate to determine one or more operator functions implementing the operator for the plurality of data elements, including the user-defined operator function, and

in response to said automatically analyzing, automatically generating executable code invoking the one or more operator functions for the plurality of data elements, including the user-defined operator function, wherein the executable code comprises a second plurality of interconnected nodes.

17. A system for aggregate handling of operator overloading, the system comprising:

a processor; and

a memory medium coupled to the processor, wherein the memory medium comprises program instructions which are executable by the processor to:

create a graphical program in response to user input, wherein the graphical program comprises a first plurality of interconnected nodes that visually indicate functionality of the program, wherein the graphical program includes an aggregate comprising a plurality of data elements of one or more data types, wherein the graphical program further includes an operator applied to the aggregate, wherein the operator comprises a node configured to invoke an intrinsic operator function, wherein at least one of the one or more data types comprises a user-defined data type, and wherein the user- defined data type specifies a user-defined operator function for the operator;

automatically analyze the aggregate to determine one or more operator functions implementing the operator for the plurality of data elements, including the user- defined operator function, and

automatically generate executable code invoking the one or more operator functions for the plurality of data elements, including the user-defined operator function, in response to said automatically analyzing, wherein the executable code comprises a second plurality of interconnected nodes.

18. A system for aggregate handling of operator overloading, the system comprising:

means for creating a graphical program in response to user input, wherein the graphical program comprises a first plurality of interconnected nodes that visually indicate functionality of the program, wherein the graphical program includes an aggregate comprising a plurality of data elements of one or more data types, wherein the graphical program further includes an operator applied to the aggregate, wherein the operator comprises a node configured to invoke an intrinsic operator function, wherein at least one of the one or more data types comprises a user-defined data type, and wherein the user-defined data type specifies a user-defined operator function for the operator;

means for automatically analyzing the aggregate to determine one or more operator functions implementing the operator for the plurality of data elements, including the user-defined operator function, and

means for automatically generating executable code invoking the one or more operator functions for the plurality of data elements, including the user-defined operator function, in response to said automatically analyzing, wherein the executable code comprises a second plurality of interconnected nodes.

19. A computer-accessible memory medium comprising program instructions implementing a graphical program development environment, wherein the program instructions are executable by a processor to implement:

creating a graphical program in response to user input, wherein the graphical program comprises a first plurality of interconnected nodes that visually indicate functionality of the program, wherein the graphical program includes an aggregate comprising a plurality of data elements of one or more data types, wherein the graphical program farther includes an operator applied to the aggregate, and wherein the operator comprises a node configured to invoke an intrinsic operator function;

a) automatically analyzing the aggregate,

b) in response to said automatically analyzing, for each data element in the aggregate:

b1) if said automatically analyzing determines that the data type of the data element specifies an operator function for the operator for the data type, automatically generating executable code invoking the operator function, wherein the executable code comprises a second plurality of interconnected nodes; and

b2) if said automatically analyzing determines that the data type of the data element does not specify an operator function for the operator,

automatically determining if the data element is another aggregate;

if the data element is another aggregate, performing a) and b) on the other aggregate;

if the data element is not an aggregate, indicating an error.

20. A computer-implemented method for aggregate handling of operator overloading, the method comprising:

creating a graphical program in response to user input, wherein the graphical program comprises a first plurality of interconnected nodes that visually indicate functionality of the program, wherein the graphical program includes an aggregate comprising a plurality of data elements of one or more data types, wherein the graphical program further includes an operator applied to the aggregate, and wherein the operator comprises a node configured to invoke an intrinsic operator function;

a) automatically analyzing the aggregate,

b) in response to said automatically analyzing, for each data element in the aggregate:

b1) if said automatically analyzing determines that the data type of the data element specifies an operator function for the operator for the data type, automatically generating executable code invoking the operator function, wherein the executable code comprises a second plurality of interconnected nodes; and

b2) if said automatically analyzing determines that the data type of the data element does not specify an operator function for the operator,

automatically determining if the data element is another aggregate;

if the data element is another aggregate, performing a) and b) on the other aggregate;

if the data element is not an aggregate, indicating an error.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 057280/0028) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION
Reel/Frame 065231/0466 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 052935/0001) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
Reel/Frame 065653/0463 →
SECURITY INTEREST Recorded Jun 18, 2021
From: NATIONAL INSTRUMENTS CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 057280/0028 →
SECURITY INTEREST Recorded Jun 14, 2020
From: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 052935/0001 →