ARSperl
view release on metacpan or search on metacpan
StructDef.pl view on Meta::CPAN
'4.5.2' => '7',
'5.0.0' => '8',
'5.0.1' => '8',
'5.1.0' => '9',
'5.1.1' => '9',
'5.1.2' => '9',
'6.0.0' => '10',
'6.0.1' => '10',
'6.3.0' => '11',
'7.0.0' => '12',
'7.0.1' => '12',
'7.1.0' => '13',
'7.5.0' => '14',
'7.6.3' => '17',
'7.6.4' => '18',
);
$CTRL_PREFIX = '_';
$INVD_PREFIX = '#';
%CONVERT = (
ARFieldLimitList => {
_num => 'p->numItems',
_list => 'p->fieldLimitList',
_type => 'ARFieldLimitStruct',
},
ARFieldLimitStruct => {
# _typeparam => 1,
_switch => 'p->dataType',
# _map => 'DataTypeMap',
# _switch => 'p->dataType',
_map => 'dataType',
_case => {
AR_DATA_TYPE_INTEGER => {
_type => 'ARIntegerLimitsStruct',
_data => 'p->u.intLimits',
},
AR_DATA_TYPE_REAL => {
_type => 'ARRealLimitsStruct',
_data => 'p->u.realLimits',
},
AR_DATA_TYPE_CHAR => {
_type => 'ARCharLimitsStruct',
_data => 'p->u.charLimits',
},
AR_DATA_TYPE_DIARY => {
_type => 'ARDiaryLimitsStruct',
_data => 'p->u.diaryLimits',
},
AR_DATA_TYPE_ENUM => {
_min_version => '5.0.0',
_type => 'AREnumLimitsStruct',
_data => 'p->u.enumLimits',
},
AR_DATA_TYPE_DECIMAL => {
_type => 'ARDecimalLimitsStruct',
_data => 'p->u.decimalLimits',
},
AR_DATA_TYPE_ATTACH => {
_type => 'ARAttachLimitsStruct',
_data => 'p->u.attachLimits',
},
AR_DATA_TYPE_CURRENCY => {
_min_version => '5.1.0',
_type => 'ARCurrencyLimitsStruct',
_data => 'p->u.currencyLimits',
},
AR_DATA_TYPE_DATE => {
_min_version => '5.1.0',
_type => 'ARDateLimitsStruct',
_data => 'p->u.dateLimits',
},
AR_DATA_TYPE_TABLE => {
_type => 'ARTableLimitsStruct',
_data => 'p->u.tableLimits',
},
AR_DATA_TYPE_COLUMN => {
_type => 'ARColumnLimitsStruct',
_data => 'p->u.columnLimits',
},
AR_DATA_TYPE_VIEW => {
_min_version => '5.0.0',
_type => 'ARViewLimits',
_data => 'p->u.viewLimits',
},
AR_DATA_TYPE_DISPLAY => {
_min_version => '5.0.0',
_type => 'ARDisplayLimits',
_data => 'p->u.displayLimits',
},
},
},
ARIntegerLimitsStruct => {
min => {
_type => 'long',
_data => 'p->rangeLow',
},
max => {
_type => 'long',
_data => 'p->rangeHigh',
},
},
ARRealLimitsStruct => {
min => {
_type => 'double',
_data => 'p->rangeLow',
},
max => {
_type => 'double',
_data => 'p->rangeHigh',
},
precision => {
_type => 'int',
_data => 'p->precision',
},
},
ARCharLimitsStruct => {
maxLength => {
_type => 'unsigned int',
_data => 'p->maxLength',
},
StructDef.pl view on Meta::CPAN
_min_version => '7.5.0',
_type => 'unsigned int',
_data => 'p->lengthUnits',
_map => {
AR_LENGTH_UNIT_BYTE => 'byte',
AR_LENGTH_UNIT_CHAR => 'char',
},
},
storageOptionForCLOB => {
_min_version => '7.5.0',
_type => 'unsigned int',
_data => 'p->storageOptionForCLOB',
_map => {
AR_STORE_OPT_DEF => 'default',
AR_STORE_OPT_INROW => 'inrow',
AR_STORE_OPT_OUTROW => 'outrow',
},
},
},
ARDiaryLimitsStruct => {
fullTextOptions => {
_type => 'unsigned int',
_data => 'p->fullTextOptions',
_map => {
AR_FULLTEXT_OPTIONS_NONE => 'none',
AR_FULLTEXT_OPTIONS_INDEXED => 'indexed',
},
},
},
AREnumLimitsStruct => {
_min_version => '5.0.0',
enumLimits => {
_switch => 'p->listStyle',
_case => {
AR_ENUM_STYLE_REGULAR => {
regularList => {
_type => 'ARNameList',
_data => 'p->u.regularList',
},
},
AR_ENUM_STYLE_CUSTOM => {
customList => {
_type => 'AREnumItemList',
_data => 'p->u.customList',
},
},
AR_ENUM_STYLE_QUERY => {
queryList => {
_type => 'AREnumQueryStruct',
_data => 'p->u.queryList',
},
},
},
},
},
ARAttachLimitsStruct => {
maxSize => {
_type => 'unsigned long',
_data => 'p->maxSize',
},
attachType => {
_type => 'unsigned int',
_data => 'p->attachType',
},
},
ARTableLimitsStruct => {
numColumns => {
_type => 'unsigned int',
_data => 'p->numColumns',
},
qualifier => {
_type => 'ARQualifierStruct',
_data => 'p->qualifier',
},
maxRetrieve => {
_type => 'unsigned int',
_data => 'p->maxRetrieve',
},
schema => {
_type => 'ARNameType',
_data => 'p->schema',
},
server => {
_type => 'ARServerNameType',
_data => 'p->server',
},
sampleSchema => {
_min_version => '6.0.0',
_type => 'ARNameType',
_data => 'p->sampleSchema',
},
sampleServer => {
_min_version => '6.0.0',
_type => 'ARServerNameType',
_data => 'p->sampleServer',
},
},
ARColumnLimitsStruct => {
parent => {
_type => 'ARInternalId',
_data => 'p->parent',
},
dataField => {
_type => 'ARInternalId',
_data => 'p->dataField',
},
dataSource => {
_type => 'unsigned int',
_data => 'p->dataSource',
},
colLength => {
_type => 'unsigned int',
_data => 'p->colLength',
},
},
ARDecimalLimitsStruct => {
rangeLow => {
_type => 'char*',
_data => 'p->rangeLow',
},
rangeHigh => {
_type => 'char*',
_data => 'p->rangeHigh',
StructDef.pl view on Meta::CPAN
# _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.457 second using v1.01-cache-2.11-cpan-39bf76dae61 )