ARSperl
view release on metacpan or search on metacpan
StructDef.pl view on Meta::CPAN
# fieldName => {
# _type => 'ARNameType',
# _data => 'p->fieldName',
# },
# fieldId => {
# _type => 'ARInternalId',
# _data => 'p->fieldId',
# },
# dataType => {
# _type => 'int',
# _data => 'p->dataType',
# },
#},
);
# perl C:\usr\perl_install\5.8.8\ARSperl\TS\printStructTemplate.pl AR...
#
# x => {
# _type => '',
# _data => '',
# },
# s/.*/$& => {\n\t_type => '',\n\t_data => 'p->u.',\n},/
%TEMPLATES = (
_copy => [
'ARValueStruct' => 'rev_%T( ctrl, h, k, "dataType", &(%L) )',
'ARValueStruct\*' => '%L = MALLOCNN(sizeof(%B)); rev_%B( ctrl, h, k, "dataType", %L )',
'AR\w+' => 'rev_%T( ctrl, h, k, &(%L) )',
'AR\w+\*' => '%L = MALLOCNN(sizeof(%B)); rev_%B( ctrl, h, k, %L )',
'(int|long|unsigned\s+int|unsigned\s+long)' => '%L = SvIV(%R)',
'(float|double)' => '%L = SvNV(%R)',
'unsigned\s+char' => '%L = (char) SvIV(%R)',
'char\s*\*' => '%L = strdup( SvPV_nolen(%R) )',
'char\[.+]' => 'strncpy( %L, SvPV_nolen(%R), sizeof(%L) )',
'ARInternalId\[(\w+)\]' => 'copyUIntArray( %1, %L, %R )',
'int\[(\w+)\]' => 'copyIntArray( %1, %L, %R )',
],
_perl => [
'ARInternalId\[\]' => '*** unknown ***', # ???
'ARInternalId\[\w+\]' => '*** unknown ***', # ???
'int\[\w+\]' => '*** unknown ***', # ???
'unsigned\s+char' => '%L = newSVnv( %R )', # ???
'AR\w+' => '%L = perl_%T( ctrl, &(%R) )',
'AR\w+\*' => '%L = perl_%B( ctrl, %R )',
'(int|long|unsigned\s+int|unsigned\s+long)' => '%L = newSViv( %R )',
'(float|double)' => '%L = newSVnv( %R )',
'char\s*\*' => '%L = newSVpv( %R, 0 )',
'char\[.+]' => '%L = newSVpv( %R, 0 )',
],
);
#print evalTemplate( 'COPY', 'char[10]', 'p->charVal', 'buffer' ), "\n";
#print evalTemplate( 'COPY', 'unsigned char', 'p->unique', 'buffer' ), "\n";
#ARIntegerLimitsStruct intLimits;
#ARRealLimitsStruct realLimits;
#ARCharLimitsStruct charLimits;
#ARDiaryLimitsStruct diaryLimits;
#AREnumLimitsStruct enumLimits;
#AREnumLimitsStruct maskLimits;
#ARAttachLimitsStruct attachLimits;
#ARTableLimitsStruct tableLimits;
#ARColumnLimitsStruct columnLimits;
#ARDecimalLimitsStruct decimalLimits;
#ARViewLimits viewLimits;
#ARDisplayLimits displayLimits;
#ARDateLimitsStruct dateLimits;
#ARCurrencyLimitsStruct currencyLimits;
( run in 0.782 second using v1.01-cache-2.11-cpan-98e64b0badf )