Embedding an interpreter within an application written in a different programming language
First Claim
1. A computer-implemented method of invoking, from a host application written in a first programming language, a subroutine written in a second programming language different from the first programming language, said method comprising:
- serializing input data expressed as a first XTable formatted in the first programming language and comprising a plurality of different data types native to the first programming language into a string representation of the input data stored in memory;
de-serializing the string representation of the input data as a second XTable stored in memory and formatted in the second programming language, wherein the second XTable comprises a plurality of data types native to the second programming language, and wherein the second programming language is scripted;
executing the subroutine, wherein the second XTable formatted in the second programming language is processed as input;
serializing output data returned from the subroutine, expressed as a third XTable formatted in the second programming language and comprising a plurality of different data types native to the second programming language, into a string representation of the output data stored in memory; and
de-serializing the string representation of the output data into a fourth XTable stored in memory and formatted in the first programming language, wherein the fourth XTable comprises data types native to the first programming language,wherein serializing input data, de-serializing the string representation, executing the subroutine, serializing output data, and de-serializing the string representation are performed and are executable by a computer, and wherein the steps of de-serializing the string representation, executing the subroutine, and serializing output data are performed by a utility program that is dynamically generated.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of accessing, from a host application written in a first programming language, a subroutine written in a second programming language can include serializing input data expressed as an XTable formatted in a first programming language into a string representation of the input data. The method further can include de-serializing the string representation of the input data as an XTable formatted in the second programming language and executing the subroutine, wherein the XTable formatted in the second programming language is processed as input. Output data returned from the subroutine that is expressed as an XTable formatted in the second programming language can be serialized into a string representation of the output data. The string representation of the output data can be de-serialized into an XTable formatted in the first programming language.
23 Citations
18 Claims
-
1. A computer-implemented method of invoking, from a host application written in a first programming language, a subroutine written in a second programming language different from the first programming language, said method comprising:
-
serializing input data expressed as a first XTable formatted in the first programming language and comprising a plurality of different data types native to the first programming language into a string representation of the input data stored in memory; de-serializing the string representation of the input data as a second XTable stored in memory and formatted in the second programming language, wherein the second XTable comprises a plurality of data types native to the second programming language, and wherein the second programming language is scripted; executing the subroutine, wherein the second XTable formatted in the second programming language is processed as input; serializing output data returned from the subroutine, expressed as a third XTable formatted in the second programming language and comprising a plurality of different data types native to the second programming language, into a string representation of the output data stored in memory; and de-serializing the string representation of the output data into a fourth XTable stored in memory and formatted in the first programming language, wherein the fourth XTable comprises data types native to the first programming language, wherein serializing input data, de-serializing the string representation, executing the subroutine, serializing output data, and de-serializing the string representation are performed and are executable by a computer, and wherein the steps of de-serializing the string representation, executing the subroutine, and serializing output data are performed by a utility program that is dynamically generated. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A system for accessing a subroutine from within a host application written in a host programming language, wherein the subroutine is written in a subroutine programming language that is different from the host programming language, said system comprising:
-
a computer executing program code that implements a plurality of components comprising; a gasket executing in the computer configured to translate data between a string representation of the data stored in memory and a first XTable representation of the data stored in memory and formatted using the host programming language, wherein the first XTable comprises a plurality of data types native to the host programming language; a utility program that is dynamically generated by said gasket and coded in the subroutine programming language, wherein said utility program is executed by the computer to translate between the string representation of the data and a second XTable representation of the data stored in memory and formatted using the subroutine programming language, wherein the second XTable comprises a plurality of data types native to the subroutine programming language; and an interpreter embedded within the host application, wherein said interpreter is operative within the computer to execute the utility program; wherein said gasket provides said interpreter with said utility program and the string representation of the data, and wherein said interpreter executes said utility program within the computer, thereby de-serializing the string representation of the data and calling the subroutine. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A computer readable storage, having stored thereon a computer program that, when executed by a computer, causes the computer to perform a method, comprising:
-
serializing input data expressed as a first XTable, formatted in a first programming language corresponding to a host application and comprising a plurality of different data types native to the first programming language, into a string representation of the input data stored in memory; de-serializing the string representation of the input data as a second XTable stored in memory and formatted in a second programming language corresponding to a subroutine, the second programming language being different from the first programming language, wherein the second XTable comprises a plurality of data types native to the second programming language, and wherein the second programming language is scripted; executing the subroutine, wherein the second XTable formatted in the second programming language is processed as input; serializing output data returned from the subroutine, expressed as a third XTable, formatted in the second programming language and comprising a plurality of different data types native to the second programming language, into a string representation of the output data stored in memory; and de-serializing the string representation of the output data into a fourth XTable stored in memory and formatted in the first programming language, wherein the fourth XTable comprises data types native to the first programming language, wherein the steps of de-serializing the string representation of the input data, executing the subroutine, and serializing output data returned from the subroutine are performed by a utility program that is dynamically generated. - View Dependent Claims (14, 15, 16, 17, 18)
-
Specification