You've already forked lazarus-ccr
Code generation : Array item external name setting in the interface file.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@812 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -203,6 +203,7 @@ const sLOCAL_TYPE_REGISTER_REFERENCE = 'typeRegistryIntance';
|
|||||||
sUNIT_NAME = 'sUNIT_NAME';
|
sUNIT_NAME = 'sUNIT_NAME';
|
||||||
sRECORD_RTTI_DEFINE = 'WST_RECORD_RTTI';
|
sRECORD_RTTI_DEFINE = 'WST_RECORD_RTTI';
|
||||||
sEASY_ACCESS_INTERFACE_PREFIX = 'Easy';
|
sEASY_ACCESS_INTERFACE_PREFIX = 'Easy';
|
||||||
|
sARRAY_ITEM_DEFAULT_EXTERNAL_NAME = 'item';
|
||||||
|
|
||||||
sPRM_NAME = 'locStrPrmName';
|
sPRM_NAME = 'locStrPrmName';
|
||||||
sLOC_SERIALIZER = 'locSerializer';
|
sLOC_SERIALIZER = 'locSerializer';
|
||||||
@ -739,8 +740,6 @@ Var
|
|||||||
origineIsFunc : Boolean;
|
origineIsFunc : Boolean;
|
||||||
origineArgIN : TPasArgument;
|
origineArgIN : TPasArgument;
|
||||||
prmCnt,k : Integer;
|
prmCnt,k : Integer;
|
||||||
prm : TPasArgument;
|
|
||||||
resPrm : TPasResultElement;
|
|
||||||
elt : TPasElement;
|
elt : TPasElement;
|
||||||
objArgs : Boolean;
|
objArgs : Boolean;
|
||||||
localIsFunc : boolean;
|
localIsFunc : boolean;
|
||||||
@ -2564,19 +2563,20 @@ begin
|
|||||||
'%s.Register(%s,TypeInfo(%s),%s);',
|
'%s.Register(%s,TypeInfo(%s),%s);',
|
||||||
[sLOCAL_TYPE_REGISTER_REFERENCE,sNAME_SPACE,ASymbol.Name,QuotedStr(SymbolTable.GetExternalName(ASymbol))]
|
[sLOCAL_TYPE_REGISTER_REFERENCE,sNAME_SPACE,ASymbol.Name,QuotedStr(SymbolTable.GetExternalName(ASymbol))]
|
||||||
);
|
);
|
||||||
if ( SymbolTable.GetArrayItemName(ASymbol) <> SymbolTable.GetArrayItemExternalName(ASymbol) ) then begin
|
|
||||||
FImpTempStream.Indent();
|
|
||||||
FImpTempStream.WriteLn(
|
|
||||||
'%s.ItemByTypeInfo[TypeInfo(%s)].RegisterExternalPropertyName(sARRAY_ITEM,%s);',
|
|
||||||
[sLOCAL_TYPE_REGISTER_REFERENCE,ASymbol.Name,QuotedStr(SymbolTable.GetArrayItemExternalName(ASymbol))]
|
|
||||||
);
|
|
||||||
end;
|
|
||||||
if ( SymbolTable.GetArrayStyle(ASymbol) = asEmbeded ) then begin
|
if ( SymbolTable.GetArrayStyle(ASymbol) = asEmbeded ) then begin
|
||||||
FImpTempStream.Indent();
|
FImpTempStream.Indent();
|
||||||
FImpTempStream.WriteLn(
|
FImpTempStream.WriteLn(
|
||||||
'%s.ItemByTypeInfo[TypeInfo(%s)].RegisterExternalPropertyName(sARRAY_STYLE,sEmbedded);',
|
'%s.ItemByTypeInfo[TypeInfo(%s)].RegisterExternalPropertyName(sARRAY_STYLE,sEmbedded);',
|
||||||
[sLOCAL_TYPE_REGISTER_REFERENCE,ASymbol.Name,QuotedStr(SymbolTable.GetArrayItemExternalName(ASymbol))]
|
[sLOCAL_TYPE_REGISTER_REFERENCE,ASymbol.Name,QuotedStr(SymbolTable.GetArrayItemExternalName(ASymbol))]
|
||||||
);
|
);
|
||||||
|
end else begin
|
||||||
|
if ( SymbolTable.GetArrayItemExternalName(ASymbol) <> sARRAY_ITEM_DEFAULT_EXTERNAL_NAME ) then begin
|
||||||
|
FImpTempStream.Indent();
|
||||||
|
FImpTempStream.WriteLn(
|
||||||
|
'%s.ItemByTypeInfo[TypeInfo(%s)].RegisterExternalPropertyName(sARRAY_ITEM,%s);',
|
||||||
|
[sLOCAL_TYPE_REGISTER_REFERENCE,ASymbol.Name,QuotedStr(SymbolTable.GetArrayItemExternalName(ASymbol))]
|
||||||
|
);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -1042,6 +1042,7 @@ var
|
|||||||
tmpRecVar : TPasVariable;
|
tmpRecVar : TPasVariable;
|
||||||
locStrBuffer : string;
|
locStrBuffer : string;
|
||||||
locAnyNode, locAnyAttNode : TDOMNode;
|
locAnyNode, locAnyAttNode : TDOMNode;
|
||||||
|
locDefaultAncestorUsed : Boolean;
|
||||||
begin
|
begin
|
||||||
ExtractBaseType();
|
ExtractBaseType();
|
||||||
eltCrs := ExtractElementCursor(eltAttCrs,locAnyNode,locAnyAttNode);
|
eltCrs := ExtractElementCursor(eltAttCrs,locAnyNode,locAnyAttNode);
|
||||||
@ -1071,20 +1072,25 @@ begin
|
|||||||
if ( FDerivationMode in [dmExtension, dmRestriction] ) then begin
|
if ( FDerivationMode in [dmExtension, dmRestriction] ) then begin
|
||||||
classDef.AncestorType := FBaseType;
|
classDef.AncestorType := FBaseType;
|
||||||
end;
|
end;
|
||||||
|
locDefaultAncestorUsed := False;
|
||||||
if ( classDef.AncestorType = nil ) then begin
|
if ( classDef.AncestorType = nil ) then begin
|
||||||
if IsHeaderBlock() then
|
if IsHeaderBlock() then begin
|
||||||
classDef.AncestorType := FSymbols.FindElementInModule('THeaderBlock',FSymbols.FindModule('base_service_intf') as TPasModule) as TPasType
|
classDef.AncestorType := FSymbols.FindElementInModule('THeaderBlock',FSymbols.FindModule('base_service_intf') as TPasModule) as TPasType
|
||||||
else if IsSimpleContentHeaderBlock() then
|
end else if IsSimpleContentHeaderBlock() then begin
|
||||||
classDef.AncestorType := FSymbols.FindElementInModule('TSimpleContentHeaderBlock',FSymbols.FindModule('base_service_intf') as TPasModule) as TPasType
|
classDef.AncestorType := FSymbols.FindElementInModule('TSimpleContentHeaderBlock',FSymbols.FindModule('base_service_intf') as TPasModule) as TPasType
|
||||||
else
|
end else begin
|
||||||
|
locDefaultAncestorUsed := True;
|
||||||
classDef.AncestorType := FSymbols.FindElementInModule('TBaseComplexRemotable',FSymbols.FindModule('base_service_intf') as TPasModule) as TPasType;
|
classDef.AncestorType := FSymbols.FindElementInModule('TBaseComplexRemotable',FSymbols.FindModule('base_service_intf') as TPasModule) as TPasType;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
classDef.AncestorType.AddRef();
|
classDef.AncestorType.AddRef();
|
||||||
if Assigned(eltCrs) or Assigned(eltAttCrs) then begin
|
if Assigned(eltCrs) or Assigned(eltAttCrs) then begin
|
||||||
isArrayDef := False;
|
isArrayDef := False;
|
||||||
ParseElementsAndAttributes(eltCrs,eltAttCrs);
|
ParseElementsAndAttributes(eltCrs,eltAttCrs);
|
||||||
if ( arrayItems.GetCount() > 0 ) then begin
|
if ( arrayItems.GetCount() > 0 ) then begin
|
||||||
if ( arrayItems.GetCount() = 1 ) and ( GetElementCount(classDef.Members,TPasProperty) = 1 ) then begin
|
if ( arrayItems.GetCount() = 1 ) and locDefaultAncestorUsed and
|
||||||
|
( GetElementCount(classDef.Members,TPasProperty) = 1 )
|
||||||
|
then begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
propTyp := arrayItems.GetItem(0).Prop;
|
propTyp := arrayItems.GetItem(0).Prop;
|
||||||
arrayDef := FSymbols.CreateArray(internalName,propTyp.VarType,propTyp.Name,FSymbols.GetExternalName(propTyp),asScoped);
|
arrayDef := FSymbols.CreateArray(internalName,propTyp.VarType,propTyp.Name,FSymbols.GetExternalName(propTyp),asScoped);
|
||||||
|
Reference in New Issue
Block a user