JP4223745B2 - コンピュータ、プログラムソースコード生成方法 - Google Patents
コンピュータ、プログラムソースコード生成方法 Download PDFInfo
- Publication number
- JP4223745B2 JP4223745B2 JP2002191199A JP2002191199A JP4223745B2 JP 4223745 B2 JP4223745 B2 JP 4223745B2 JP 2002191199 A JP2002191199 A JP 2002191199A JP 2002191199 A JP2002191199 A JP 2002191199A JP 4223745 B2 JP4223745 B2 JP 4223745B2
- Authority
- JP
- Japan
- Prior art keywords
- source code
- data
- program source
- definition file
- aggregate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 41
- 238000012545 processing Methods 0.000 claims description 14
- 230000008859 change Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 3
- 230000001172 regenerating effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 4
- 239000000470 constituent Substances 0.000 description 4
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000000547 structure data Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、プログラムソースコードを生成するコンピュータ、プログラムソースコード生成方法、プログラムソースコード生成プログラムに関する。
【0002】
【従来の技術】
一般に、コンピュータ等の情報処理装置では、所定のデータ構造をもって管理されて記録媒体に記録されているデータを、通信経路を通じて伝送して他の記録媒体に記録させる場合には、所定のデータ構造のデータを直列化(シリアライズ)した上で通信経路を伝送し、直列化されたデータを非直列化(ストラクチャ)して元のデータ構造となるように構造化する処理が実行されている。
【0003】
例えば、パーソナルコンピュータにおいて、処理対象としていたデータをハードディスク装置に書き戻す場合には、プログラムが管理していたデータ構造(例えば、階層構造など)に従ってデータをシリアライズし、またシリアライズされたデータをストラクチャすることで構造化する。
【0004】
従来、こうした所定のデータ構造をもったデータをシリアライズ及びストラクチャするプログラムを作成する場合、データ構造の定義が記載された仕様書などを参照しながら、プログラマがプログラムソースコードを作成している。データ構造の定義では、例えば作成対象とするプログラムソースコードファイルのそれぞれに応じた集合体の定義や、集合体におけるデータに関する情報(サイズやデータ型(文字列、数値など))が定義されている。
【0005】
プログラマは、データ構造の定義に従って、データを所定の手法によってシリアライズ及びストラクチャするプログラムソースコードを、目的とするプログラミング言語を用いて記述することになる。
【0006】
ところで、特開平5−216683には、プログラム記述言語に依存せずにファイル化手順を自動生成するための非言語依存のファイル化手順自動生成方法が記載されている。この生成方法は、ソースプログラムから目的とするマシンの目的ファイルを作成するものであって、データベースにおいて定義された目的ファイルに関与するファイルを定義する構成定義データなどを参照し、ファイル化手順を自動生成する手段を備えている。
【0007】
【発明が解決しようとする課題】
このように従来では、データをシリアライズ及びストラクチャする機能を実現するためのプログラムソースコードを生成する場合には、プログラマがデータ構造の定義が記載された仕様書などを参照しながら、定義されたデータ構造、すなわち集合体や各集合体における要素を定義する記述に応じたプログラムソースコードを入力する作業が必要となっていた。
【0008】
このため、データ構造の定義において集合体及び要素の数が多かったり、さらにデータ構造が多段階の階層構造あるいは要素の定義が他の集合体の定義を引用するといった複雑なものであったりした場合には、プログラマは多大な労力を要してプログラムソースコードを入力していかなければならなかった。
【0009】
また、データ構造の定義が一部変更となった場合には、プログラムソースコードの再生成をしたり、変更が必要なソースコードを抽出して変更したりする必要があった。さらに、シリアライズ及びストラクチャする手法を変更したり、対象とするプログラミング言語を変更する場合などにおいても、プログラムソースコードの再生成が必要な場合があり、多大な労力が必要となっていた。
【0010】
また、特開平5−216683に開示されたファイル化手順自動生成方法は、ファイル化手順作成を自動化することで人間による誤り防止と時間短縮を可能とするものであるが、ソースプログラムから目的とするマシンの目的ファイルを作成するものであって、プログラムソースコードを作成するものではなかった。
【0011】
本発明は前記のような事情を考慮してなされたもので、データを直列化及び非直列化する機能を実現するためのプログラムソースコードの生成に要する労力を軽減することが可能なコンピュータ、プログラムソースコード生成方法、プログラムソースコード生成プログラムを提供することを目的とする。
【0012】
【課題を解決するための手段】
本発明は、所定のデータ構造のデータをシリアライズし、シリアライズされたデータをストラクチャして元のデータ構造となるように構造化するプログラムソースコードを生成するコンピュータであって、データをシリアライズ及びストラクチャする単位を示す集合体とこの集合体の中のシリアライズ及びストラクチャするデータのデータサイズ及びデータ型が定義された複数の要素を含むデータ構造の定義ファイルであって、異なるデータ構造に対するプログラムソースコードを再生成する場合には前記データ構造の定義が変更される定義ファイルを記憶する定義ファイル記憶部と、前記定義ファイル記憶部に記憶された前記定義ファイルを読み込み、前記定義ファイルに定義された前記集合体に含まれる前記複数の要素のそれぞれをもとに、所定のデータ構造のデータを、前記要素に定義されたデータサイズ及びデータ型のデータ分を確保してスタックの位置を順次更新しながら、各要素により定義されたデータを前記スタックに順次格納していく手続きが記述された、データをシリアライズするプログラムソースコードを生成し、前記スタックに格納されたデータを前記シリアライズするプログラムソースコードとは逆の手順で前記スタックの位置を順次更新しながら読み出して、前記各要素により定義されたデータサイズ及びデータ型のデータを構築する手続きが記述された、データをストラクチャするプログラムソースコードを生成する、プログラミング言語の違いに応じたプログラムソースコードを生成する機能をそれぞれ有する複数のプログラムソースコード自動生成手段を有したソースコード生成処理部と、生成対象とするプログラムソースコードのプログラム言語に応じて前記プログラムソースコード自動生成手段の何れかを選択して実行させる変更手段と、前記プログラムソースコード自動生成手段によって生成された、前記集合体に対するシリアライズ及びストラクチャするためのプログラムソースコードを記憶するソースコードファイル記憶部とを具備したことを特徴とする。
【0013】
また、前記情報に複数の集合体が定義されている場合に、それぞれの集合体についてプログラムソースコードを生成することを特徴とする。
【0014】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。図1は本実施形態に係わるプログラムソースコード生成方法を実現するための機能構成を示すブロック図である。本実施形態におけるプログラムソースコード生成方法は、プログラムソースコード生成プログラムをコンピュータ上で実行することで実現される。コンピュータは、例えば半導体メモリ、CD−ROM、DVD、磁気ディスク等の記録媒体に記録されたプログラムソースコード生成プログラムを読み込み、このプログラムによって動作が制御される。
【0015】
図1に示すように、プログラムソースコード生成方法は、ソースコード生成処理部10、定義ファイル記憶部12、ソースコードファイル記憶部14、定義ファイル変更部16、及び変更部18の機能が設けられる。
【0016】
ソースコード生成処理部10は、データ構造を定義する情報をもとにプログラムソースコードを生成する処理を実行するもので、プログラムソースコード自動生成部20(20a,20b…)の機能が設けられる。プログラムソースコード自動生成部20は、定義ファイル記憶部12に記憶されたデータ構造の定義ファイル22を参照し、定義ファイル22において定義されたデータ構造に応じた、データをシリアライズ及びストラクチャする機能を実現するためのプログラムソースコードを生成する。
【0017】
なお、ソースコード生成処理部10には、複数のプログラムソースコード自動生成部20a,20b…を設けることができる。各プログラムソースコード自動生成部20a,20b…は、生成の対象とするプログラムソースコードのプログラミング言語の違い、あるいはシリアライズ及びストラクチャの手法の違いに応じたプログラムソースコードを生成する機能が設けられており、何れかが選択されて実行される。
【0018】
定義ファイル記憶部12は、ソースコード生成処理部10(プログラムソースコード自動生成部20)によって生成されるプログラムソースコードのもとになるデータ構造の定義ファイル22が記憶される。データ構造の定義ファイル22では、データをシリアライズ(直列化)及びストラクチャ(非直列化)する単位を示す集合体とこの集合体の中のシリアライズ及びストラクチャする要素が定義された情報が含まれている。
【0019】
ソースコードファイル記憶部14は、ソースコード生成処理部10(プログラムソースコード自動生成部20)によって生成されたプログラムソースコードファイル24を記憶する。
【0020】
定義ファイル変更部16は、定義ファイル記憶部12に記憶されたデータ構造の定義ファイル22に対して変更を加えるもので、異なるデータ構造に対するプログラムソースコードを再生成する場合などにおいて定義ファイル中のデータ構造の定義を変更する。
【0021】
変更部18は、プログラムソースコードのプログラミング言語の違い、あるいはシリアライズ及びストラクチャの手法の違いに応じたプログラムソースコードを生成するために、必要に応じてデータ構造の定義ファイル22をもとにプログラムソースコードファイル24を生成するプログラムソースコード自動生成部20を変更、すなわち複数のプログラムソースコード自動生成部20a,20b…の何れかを選択して実行させる。なお、ソースコード生成処理部10に複数のプログラムソースコード自動生成部20a,20b…を設けておいて何れかを選択して使用するのではなく、必要に応じて変更部18によってプログラムソースコード自動生成部20を変更する、あるいは別のプログラムソースコード自動生成部20に置き換えるものとしても良い。
【0022】
次に、本実施形態におけるプログラムソースコード作成の動作について、図2に示すフローチャートを参照しながら説明する。
【0023】
図3には、プログラムソースコードファイル24の生成のもとになるデータ構造の定義ファイル22に定義される情報の一例を示している。データ構造の定義ファイル22には、データをシリアライズ及びストラクチャする単位を示す集合体と、この集合体の中のシリアライズ及びストラクチャする要素が定義された情報が含まれている。図3に示す例では、1つの集合体「集合体1」が定義され、この「集合体1」には2つの要素「要素A」「要素B」が定義されている。要素には、例えばデータサイズやデータ型(文字列、数値など)の情報が定義されている。
【0024】
まず、プログラムソースコード自動生成部20は、データ構造の定義ファイル22を参照し、このファイル中に定義された集合体について、定義された要素の有無を判別する(ステップA1)。ここで、集合体に要素が定義されている場合にはその要素を読み込む(ステップA2)。図3に示す例では、「集合体1」に「要素A」「要素B」が定義されているので、まず「要素A」の定義を読み込む。
【0025】
プログラムソースコード自動生成部20は、要素の情報(すなわちデータサイズやデータ型)をもとに、所定の手法によりデータをシリアライズ及びストラクチャするためのプログラムソースコード生成する(ステップA3)。
【0026】
例えば、データをシリアライズするプログラムソースコードは、スタックの位置を順次更新しながら、各要素に定義されたデータをスタックに順次格納していく手続きが記述される。また、データをストラクチャするプログラムソースコードは、シリアライズの手続きと逆となるように、スタックに格納されたデータを、スタックの位置を順次更新しながら読み出して、各要素で定義されたデータを構築する手続きが記述される(なお、具体例について、図5及び図6に示す)。
【0027】
次に、プログラムソースコード自動生成部20は、前述と同様にして定義ファイル22を参照し、このファイル中に定義された集合体について、定義された要素の有無を判別し(ステップA1)、集合体に要素が定義されている場合にはその要素を読み込む(ステップA2)。図3に示す例では、次に「要素B」の定義を読み込む。
【0028】
プログラムソースコード自動生成部20は、要素の情報をもとに、所定の手法によりデータをシリアライズ及びストラクチャするためのプログラムソースコード生成する(ステップA3)。
【0029】
以下、同様にして、集合体に定義された要素の数だけ前述した処理を繰り返して実行し、それぞれの要素のデータをシリアライズ及びストラクチャするためのプログラムソースコード生成する(ステップA1〜A3)。
【0030】
こうして、データ構造の定義ファイル22に定義された集合体に含まれる各要素のデータをシリアライズ及びストラクチャするためのプログラムソースコードを生成すると、これらをまとめて集合体をシリアライズ及びストラクチャするためのプログラムソースコードを生成し、プログラムソースコードファイル24としてソースコードファイル記憶部14に記憶させる(ステップA4)。
【0031】
このようにして、プログラムソースコード自動生成部20は、例えば図3に示すデータ構造の定義ファイル22を参照することで、図4に示すような、定義ファイル22に記述された要素A及び要素Bのデータを扱うことができる、集合体1をシリアライズ及びストラクチャするためのプログラムソースコードからなるプログラムソースコードファイル24を自動生成することができる。
【0032】
次に、データをシリアライズ及びストラクチャをするためのプログラムソースコードの具体例について説明する。
図5は、図3に示すデータ構造の定義ファイル22に該当する定義内容の具体例を示す図、図6は、図5に示すデータ構造の定義ファイル22の定義に応じてプログラムソースコード自動生成部20によって生成されるプログラムソースコードファイル24の具体例を示す図である。
【0033】
図5に示すように、データ構造の定義ファイル22には、「要素A」については「<type>long</type>」の記述にあるように、「long」サイズ(例えば、4byte)のデータであることが定義され、「要素B」については「<type>String</type>」の記述にあるように、文字列のデータであることが定義されている。
【0034】
プログラムソースコード自動生成部20は、図5に示す定義ファイル22の記述に対して、図6に示すようなプログラムソースコードファイル24を生成する。図6に示すプログラムソースコードファイル24では、(1)に示すシリアライズのプログラムソースコードと、(2)に示すストラクチャのプログラムソースコードが含まれている。
【0035】
シリアライズのプログラムソースコード(1)には、要素Aのデータに対するソースコード(1A)と要素Bのデータに対するソースコード(1B)が含まれている。
【0036】
ソースコード(1A)には、「stack[count]」によって示すスタック位置に、要素Aのデータを、要素Aのデータ分のデータサイズを確保して格納し(「memcpy…」の行の記述)、スタックの次にデータを格納する位置を要素Aのデータ分更新する(「count=…」の行の記述)ことを表すソースコードが含まれている。
【0037】
また、ソースコード(1B)には、要素Bのデータ(文字列)の長さを定義し(「size=…」の行の記述)、「stack[count]」によって示すスタック位置に、定義した要素Bのデータの長さを示すデータ(「size」)を、このデータ分を確保して格納し(「memcpy(&stack…sizeof(size)」の行の記述)、スタックの次にデータを格納する位置を要素Bのデータの長さを示すデータ分更新する(「count=…」の行の記述)ことを表すソースコードが含まれている。すなわち、要素Bのデータをスタックに格納する前に、要素Bのデータ(文字列)の長さを示すデータを格納するためのソースコードを生成している。次に、「stack[count]」によって示すスタック位置に、要素Bのデータを、要素Bのデータ分のデータサイズを確保して格納し(「memcpy(&stack…size)」の行の記述)、スタックの次にデータを格納する位置を要素Bのデータ分更新する(「count=…」の行の記述)ことを表すソースコードが含まれている。
【0038】
一方、ストラクチャのプログラムソースコード(2)には、要素Aのデータに対するソースコード(2A)と要素Bのデータに対するソースコード(2B)が含まれている。
【0039】
ソースコード(2A)には、要素Aに対するシリアライズのプログラムソースコード(1A)の記述とは逆の手順で、スタックからデータを読み出して要素Aのデータとし、同様にしてソースコード(2B)には、要素Bに対するシリアライズのプログラムソースコード(1B)の記述とは逆の手順でスタックからデータを読み出して要素Bのデータとするプログラムソースコードが含まれている。要素Bのデータについては、先に要素Bのデータ(文字列)の長さを示すデータを読み出し、このデータに従う長さのデータを読み出している。
【0040】
このようにして、図5に示すような内容を持つデータ構造の定義ファイル22を用意することで、この定義ファイル22で定義された内容に従って、図6に示すようなデータをシリアライズ及びストラクチャするためのプログラムソースコードファイルを自動生成することができる。
【0041】
なお、図5に示す定義ファイル22における要素の記述は一例であって、様々な形式による記述が可能である。プログラムソースコード自動生成部20は、それらの様々な記述による定義に応じた、シリアライズ及びストラクチャするためのプログラムソースコードを生成する機能が設けられている。
【0042】
次に、定義ファイル22に複数の集合体を含むデータ構造が定義される場合について説明する。
前述した説明では、集合体が1つの単純なパターンのデータ構造を対象としているが、本実施形態におけるプログラムソースコード自動生成部20は、集合体が複数有り、また集合体中の要素の定義が他の集合体の定義を引用するような複雑なパターンのデータ構造を対象とすることもできる。
【0043】
図7は、本実施形態における複雑なパターンのデータ構造が定義されたデータ構造の定義ファイル22を対象とした場合のプログラムソースコード作成の動作について説明するフローチャートである。
【0044】
図8には、集合体が複数有り、また集合体中の要素の定義が他の集合体の定義を引用するような複雑なパターンのデータ構造の定義ファイル22の一例を示している。データ構造の定義ファイル22には、複数の集合体1,2と、この集合体1,2の中のシリアライズ及びストラクチャする要素が定義された情報が含まれている。図8に示す例では、「集合体1」には2つの要素「要素A」「要素B」が定義され、「集合体2」には3つの要素「要素A」「要素B」「要素C」が定義されている。なお、集合体2の要素Cは、集合体1全体を引用する定義がされているものとする(具体例については図10(23)に示す)。
【0045】
まず、プログラムソースコード自動生成部20は、データ構造の定義ファイル22を参照し、このファイル中に定義された集合体にの有無を判別する(ステップB1)。ここで、集合体が定義されている場合にはその集合体を読み込む(ステップB2)。図8に示す例では、2つの「集合体1」「集合体2」が定義されているので、まず「集合体1」を読み込む。
【0046】
次に、プログラムソースコード自動生成部20は、この読み込んだ集合体について、定義された要素の有無を判別する(ステップB3)。なお、以下の図7に示すステップB3〜B6の処理は、図2に示すフローチャートのステップA1〜A4の処理と同様にして実行されるものとして詳細な説明は省略する。
【0047】
プログラムソースコード自動生成部20は、1つの集合体についてのプログラムソースコードファイル24を生成すると、前述と同様にして定義ファイル22を参照し、このファイル中に他に定義された集合体の有無を判別し(ステップB1)、集合体が定義されている場合にはその集合体を読み込み(ステップB2)。以下同様にして、この集合体に対するプログラムソースコードファイル24を生成する(ステップB3〜B5)。図8に示す例では、次に集合体2を読み込み、この集合体2についてのプログラムソースコードファイル24を生成する。
【0048】
以下、同様にして、集合体の数だけ前述した処理を繰り返して実行し、それぞれの集合体に対するプログラムソースコードファイル24を生成する。
【0049】
このようにして、プログラムソースコード自動生成部20は、例えば図8に示すデータ構造の定義ファイル22を参照することで、図9に示すような、データ構造の定義ファイル22に記述された集合体1,2をそれぞれシリアライズ及びストラクチャするためのプログラムソースコードからなるプログラムソースコードファイル24を自動生成することができる。すなわち、集合体1については要素A,Bのデータを扱うことができ、集合体2については要素A,B,Cのデータを扱うことができる、プログラムソースコードファイル24をそれぞれ生成することができる。
【0050】
次に、図8及び図9に対応する、データをシリアライズ及びストラクチャをするためのプログラムソースコードの具体例について説明する。
図10は、図8に示すデータ構造の定義ファイル22に該当する定義内容の具体例を示す図、図11は、図10に示すデータ構造の定義ファイル22の集合体1についての定義に応じてプログラムソースコード自動生成部20によって生成されるプログラムソースコードファイル24の具体例を示す図、図12は、図10に示すデータ構造の定義ファイル22の集合体2についての定義に応じて生成されるプログラムソースコードファイル24の具体例を示す図である。
【0051】
図10に示すように、データ構造の定義ファイル22には、集合体1についての定義(1)と集合体(2)についての定義(2)が記述されている。
集合体1の定義(1)には、要素Aについての定義(11)と要素Bについての定義(12)が含まれている。なお、要素A,Bの定義(11)(12)の定義の記述は、図5に示すプログラムソースコードファイル24の具体例と同一であるので詳細な説明を省略する。
【0052】
一方、集合体2の定義(2)には、要素Aについての定義(21)と要素Bについての定義(22)、及び要素Cについての定義(23)が含まれている。なお、要素A,Bの定義(21)(22)の定義の記述は、図5に示すプログラムソースコードファイル24の具体例と同一であるので詳細な説明を省略する。要素Cについての定義(23)には、「<className>Class1</className>」の記述にあるように、「Class1」に記述された定義、すなわち集合体1の定義(1)を引用することが定義されている。
【0053】
プログラムソースコード自動生成部20は、図10に示す定義ファイル22の記述に対して、集合体1に対しては図11に示すようなプログラムソースコードファイル24を生成し、集合体2については図12に示すようなプログラムソースコードファイル24を生成する。なお、図11に示すプログラムソースコードファイル24の例は、図6に示す具体例と同一であるので説明を省略する。図12に示すプログラムソースコードファイル24の例では、シリアライズのプログラムソースコード(1)には、要素Aのデータに対するソースコード(1A)と要素Bのデータに対するソースコード(1B)と要素Cのデータに対するソースコード(1C)が含まれている。ソースコード(1C)では、定義ファイル22における定義に従って、集合体1に関係するシリアライズのプログラムソースコード「count=count+elementC.Serialize(&stack[count])」が生成されている。
【0054】
また、ストラクチャのプログラムソースコード(2)には、シリアライズのソースコード(1C)に対応したソースコード(2C)「count=count+elementC.Structure(&stack[count])」が生成されている。
【0055】
図10に示すデータ構造の定義ファイル22は、2つの集合体が定義され、集合体2の要素Cのみが他の記述を引用している例を示しているが、膨大な数の集合体が定義され、引用関係が複雑に定義されていたとしても、プログラムソースコード自動生成部20がそれらの定義を参照して、正確に対応するプログラムソースコードを生成する。
【0056】
このようにして、プログラムソースコード自動生成部20によってデータ構造の定義ファイル22において定義された集合体、及び各集合体における要素の定義をもとに、シリアライズ及びストラクチャするためのプログラムソースコードファイル24を生成することができる。従って、データ構造の定義内容が、集合体及び要素の数が多かったり、さらに図10(23)に示すように、要素の定義が他の集合体の定義を引用するような複雑な定義がされていたりしても、誤り無くプログラムソースコードを生成することができる。プログラムソースコード自動生成部20を用いることで、人手によるソースコードを作成するプログラミング作業を排除することができるので、人為的修正誤りを無くし、作業に要していた手間を大幅に削減することが可能となる。
【0057】
なお、データ構造の定義ファイル22に記述された定義の内容が変更が必要な場合には、定義ファイル変更部16によって変更することができる。定義ファイル22による定義を変更してしまえば、前述したようにプログラムソースコード自動生成部20を実行させることで、変更されたデータ構造の定義ファイル22に応じたプログラムソースコードファイル24を簡単に自動生成することができる。
【0058】
また、データのシリアライズ及びストラクチャの手法を変更する必要がある場合、ソースコード生成処理部10に用意されている複数のプログラムソースコード自動生成部20a,20b…のうち、この変更後の手法に対応しているプログラムソースコード自動生成部20が実行されるように、変更部18によって変更する。これにより、データのシリアライズ及びストラクチャの手法を変更する場合であっても簡単に対応することができる。同様にして、プログラム言語を変更する場合であっても、変更後のプログラム言語に対応するプログラムソースコード自動生成部20が実行されるように変更することで対応することができる。
【0059】
なお、前述した説明では、データ構造の定義ファイル22をもとにプログラムソースコードファイル24を生成するものとして説明しているが、データ構造を定義するために作成された専用のファイルではなく、データ構造を表していれはば他のデータを参照して、プログラムソースコードファイル24を生成するように構成することもできる。
【0060】
また、上述した実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレキシブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリなどの記録媒体に書き込んで各種装置に提供することができる。また、通信媒体により伝送して各種装置に提供することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、または通信媒体を介してプログラムを受信し、このプログラムによって動作が制御されることにより、上述した処理を実行する。
【0061】
また、本願発明は、前述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、前記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0062】
【発明の効果】
以上詳述したように本発明によれば、データを直列化及び非直列化する単位を示す集合体とこの集合体の中の直列化及び非直列化する要素が定義された情報を参照し、集合体に含まれる要素をもとに、データを直列化及び非直列化するためのプログラムソースコードを生成し、要素をもとに生成されたプログラムソースコードをまとめて、集合体に対する直列化及び非直列化するためのプログラムソースコードを生成することにより、データを直列化及び非直列化する機能を実現するためのプログラムソースコードの生成に要する労力を軽減することが可能となる。
【図面の簡単な説明】
【図1】本実施形態に係わるプログラムソースコード生成方法を実現するための機能構成を示すブロック図。
【図2】本実施形態におけるプログラムソースコード作成の動作について説明するためのフローチャート。
【図3】プログラムソースコードファイル24の生成のもとになるデータ構造の定義ファイル22に定義される情報の一例を示す図。
【図4】図3に示す定義ファイル22に対応する集合体1をシリアライズ及びストラクチャするためのプログラムソースコードからなるプログラムソースコードファイル24の一例を示す図。
【図5】図3に示すデータ構造の定義ファイル22に該当する定義内容の具体例を示す図。
【図6】図5に示すデータ構造の定義ファイル22の定義に応じて生成されるプログラムソースコードファイル24の具体例を示す図。
【図7】本実施形態における複雑なパターンのデータ構造が定義されたデータ構造の定義ファイル22を対象とした場合のプログラムソースコード作成の動作について説明するフローチャート。
【図8】本実施形態における複雑なパターンのデータ構造の定義ファイル22の一例を示す図。
【図9】図8に示すデータ構造の定義ファイル22に記述された集合体1,2をそれぞれシリアライズ及びストラクチャするためのプログラムソースコードからなるプログラムソースコードファイル24の具体例を示す図。
【図10】図8に示すデータ構造の定義ファイル22に該当する定義内容の具体例を示す図。
【図11】図10に示すデータ構造の定義ファイル22の集合体1についての定義に応じて生成されるプログラムソースコードファイル24の具体例を示す図。
【図12】図10に示すデータ構造の定義ファイル22の集合体2についての定義に応じて生成されるプログラムソースコードファイル24の具体例を示す図。
【符号の説明】
10…ソースコード生成処理部
12…定義ファイル記憶部
14…ソースコードファイル記憶部
16…定義ファイル変更部
18…変更部
20…プログラムソースコード自動生成部
22…データ構造の定義ファイル
24…プログラムソースコードファイル
Claims (5)
- 所定のデータ構造のデータをシリアライズし、シリアライズされたデータをストラクチャして元のデータ構造となるように構造化するプログラムソースコードを生成するコンピュータであって、
データをシリアライズ及びストラクチャする単位を示す集合体とこの集合体の中のシリアライズ及びストラクチャするデータのデータサイズ及びデータ型が定義された複数の要素を含むデータ構造の定義ファイルであって、異なるデータ構造に対するプログラムソースコードを再生成する場合には前記データ構造の定義が変更される定義ファイルを記憶する定義ファイル記憶部と、
前記定義ファイル記憶部に記憶された前記定義ファイルを読み込み、前記定義ファイルに定義された前記集合体に含まれる前記複数の要素のそれぞれをもとに、所定のデータ構造のデータを、前記要素に定義されたデータサイズ及びデータ型のデータ分を確保してスタックの位置を順次更新しながら、各要素により定義されたデータを前記スタックに順次格納していく手続きが記述された、データをシリアライズするプログラムソースコードを生成し、前記スタックに格納されたデータを前記シリアライズするプログラムソースコードとは逆の手順で前記スタックの位置を順次更新しながら読み出して、前記各要素により定義されたデータサイズ及びデータ型のデータを構築する手続きが記述された、データをストラクチャするプログラムソースコードを生成する、プログラミング言語の違いに応じたプログラムソースコードを生成する機能をそれぞれ有する複数のプログラムソースコード自動生成手段を有したソースコード生成処理部と、
生成対象とするプログラムソースコードのプログラム言語に応じて前記プログラムソースコード自動生成手段の何れかを選択して実行させる変更手段と、
前記プログラムソースコード自動生成手段によって生成された、前記集合体に対するシリアライズ及びストラクチャするためのプログラムソースコードを記憶するソースコードファイル記憶部とを具備したことを特徴とするコンピュータ。 - 前記ソースコード生成処理部は、前記定義ファイルに複数の集合体が定義されている場合に、それぞれの集合体についてプログラムソースコードを生成することを特徴とする請求項1記載のコンピュータ。
- 所定のデータ構造のデータをシリアライズし、シリアライズされたデータをストラクチャして元のデータ構造となるように構造化するプログラムソースコードをコンピュータにより生成するプログラムソースコード生成方法であって、
コンピュータは、
データをシリアライズ及びストラクチャする単位を示す集合体とこの集合体の中のシリアライズ及びストラクチャするデータのデータサイズ及びデータ型が定義された複数の要素を含むデータ構造の定義ファイルであって、異なるデータ構造に対するプログラムソースコードを再生成する場合には前記データ構造の定義が変更される定義ファイルを定義ファイル記憶部に読み込み、
前記定義ファイル記憶部に読み込まれた前記定義ファイルに定義された前記集合体に含まれる前記複数の要素のそれぞれをもとに、所定のデータ構造のデータを、前記要素に定義されたデータサイズ及びデータ型のデータ分を確保してスタックの位置を順次更新しながら、各要素により定義されたデータを前記スタックに順次格納していく手続きが記述された、データをシリアライズするプログラムソースコードを生成し、前記スタックに格納されたデータを前記シリアライズするプログラムソースコードとは逆の手順で前記スタックの位置を順次更新しながら読み出して、前記各要素により定義されたデータサイズ及びデータ型のデータを構築する手続きが記述された、データをストラクチャするためのプログラムソースコードを生成し、
前記複数の要素のそれぞれをもとに生成された前記集合体に対するシリアライズ及びストラクチャするためのプログラムソースコードをまとめてソースコードファイル記憶部に記憶することを特徴とするプログラムソースコード生成方法。 - 前記定義ファイルに複数の集合体が定義されている場合に、それぞれの集合体についてプログラムソースコードを生成することを特徴とする請求項3記載のプログラムソースコード生成方法。
- 前記定義ファイルに含まれる要素によって定義されたデータサイズ及びデータ型に基づいて、プログラミング言語の違いに応じたプログラムソースコードを生成する機能をそれぞれ有する複数のプログラムソースコード自動生成手段を有し、
生成対象とするプログラムソースコードのプログラミング言語に応じて前記プログラムソースコード自動生成手段の何れかを選択して実行させることで、前記プログラムソースコードを生成させることを特徴とする請求項3記載のプログラムソースコード生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002191199A JP4223745B2 (ja) | 2002-06-28 | 2002-06-28 | コンピュータ、プログラムソースコード生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002191199A JP4223745B2 (ja) | 2002-06-28 | 2002-06-28 | コンピュータ、プログラムソースコード生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004038319A JP2004038319A (ja) | 2004-02-05 |
JP4223745B2 true JP4223745B2 (ja) | 2009-02-12 |
Family
ID=31700890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002191199A Expired - Fee Related JP4223745B2 (ja) | 2002-06-28 | 2002-06-28 | コンピュータ、プログラムソースコード生成方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4223745B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112007001519B4 (de) | 2006-06-22 | 2022-03-10 | Mitsubishi Paper Mills Limited | Verfahren zum Herstellen eines leitfähigen Materials |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7498915B1 (ja) | 2022-12-02 | 2024-06-13 | グリー株式会社 | 情報処理システム、及び情報処理方法 |
-
2002
- 2002-06-28 JP JP2002191199A patent/JP4223745B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112007001519B4 (de) | 2006-06-22 | 2022-03-10 | Mitsubishi Paper Mills Limited | Verfahren zum Herstellen eines leitfähigen Materials |
Also Published As
Publication number | Publication date |
---|---|
JP2004038319A (ja) | 2004-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2011323773B2 (en) | Managing data set objects in a dataflow graph that represents a computer program | |
US8799299B2 (en) | Schema contracts for data integration | |
JPWO2006011474A1 (ja) | プログラマブルコントローラ用プログラム生成装置、プログラマブルコントローラ用プログラム生成方法およびその方法のプログラムを記録した記録媒体 | |
US11392765B2 (en) | Interpreting HL7 segment hierarchy dynamically | |
US20120185682A1 (en) | Method and system for post-build modification of firmware binaries to support different hardware configurations | |
KR102472345B1 (ko) | 계층화 문서를 관리하는 방법 및 이를 이용한 장치 | |
JP3640580B2 (ja) | ソート・マージ処理装置 | |
JP4223745B2 (ja) | コンピュータ、プログラムソースコード生成方法 | |
TWI272532B (en) | Method and device for programming electronic devices using a uniform parameter format | |
US7716653B2 (en) | Configurable importers and resource writers for converting data into another format | |
US20080189095A1 (en) | Method and tool for generating simulation case for ic device | |
JP4223746B2 (ja) | コンピュータ、プログラムソースコード生成方法 | |
CN113961238A (zh) | 对象转换方法、装置及电子设备和存储介质 | |
CN111340175B (zh) | 图重写的处理方法及装置、计算设备及可读介质 | |
JP4311327B2 (ja) | ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体 | |
JP5248762B2 (ja) | 設計データ依存関係管理装置、設計データ依存関係管理方法及びプログラム | |
JP4524750B2 (ja) | モデル駆動開発装置、モデル駆動開発方法及びモデル駆動開発プログラム | |
JP6888336B2 (ja) | スタブ生成装置、方法、及びプログラム | |
JPH0496178A (ja) | Cad動作特性の変更方式 | |
WO2003081427A1 (fr) | Systeme de reutilisation des connaissances | |
JPH01286053A (ja) | 複数の機種にまたがるデータ管理方式 | |
JP2003030017A (ja) | データ格納方法およびその方法によったプログラムを記憶した記憶媒体 | |
JPH03102429A (ja) | ロードモジュール生成処理方式 | |
JP2004013822A (ja) | Cadデータ変換システム、プログラムおよび記録媒体 | |
JP2002099412A (ja) | データベース自動設計方法および装置並びに記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040901 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080115 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080317 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080507 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080707 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080805 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081006 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20081014 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20081118 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081120 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111128 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121128 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131128 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |