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';
|
||||
sRECORD_RTTI_DEFINE = 'WST_RECORD_RTTI';
|
||||
sEASY_ACCESS_INTERFACE_PREFIX = 'Easy';
|
||||
sARRAY_ITEM_DEFAULT_EXTERNAL_NAME = 'item';
|
||||
|
||||
sPRM_NAME = 'locStrPrmName';
|
||||
sLOC_SERIALIZER = 'locSerializer';
|
||||
@ -739,8 +740,6 @@ Var
|
||||
origineIsFunc : Boolean;
|
||||
origineArgIN : TPasArgument;
|
||||
prmCnt,k : Integer;
|
||||
prm : TPasArgument;
|
||||
resPrm : TPasResultElement;
|
||||
elt : TPasElement;
|
||||
objArgs : Boolean;
|
||||
localIsFunc : boolean;
|
||||
@ -2564,19 +2563,20 @@ begin
|
||||
'%s.Register(%s,TypeInfo(%s),%s);',
|
||||
[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
|
||||
FImpTempStream.Indent();
|
||||
FImpTempStream.WriteLn(
|
||||
'%s.ItemByTypeInfo[TypeInfo(%s)].RegisterExternalPropertyName(sARRAY_STYLE,sEmbedded);',
|
||||
[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;
|
||||
|
||||
|
@ -1042,6 +1042,7 @@ var
|
||||
tmpRecVar : TPasVariable;
|
||||
locStrBuffer : string;
|
||||
locAnyNode, locAnyAttNode : TDOMNode;
|
||||
locDefaultAncestorUsed : Boolean;
|
||||
begin
|
||||
ExtractBaseType();
|
||||
eltCrs := ExtractElementCursor(eltAttCrs,locAnyNode,locAnyAttNode);
|
||||
@ -1071,20 +1072,25 @@ begin
|
||||
if ( FDerivationMode in [dmExtension, dmRestriction] ) then begin
|
||||
classDef.AncestorType := FBaseType;
|
||||
end;
|
||||
locDefaultAncestorUsed := False;
|
||||
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
|
||||
else if IsSimpleContentHeaderBlock() then
|
||||
end else if IsSimpleContentHeaderBlock() then begin
|
||||
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;
|
||||
end;
|
||||
end;
|
||||
classDef.AncestorType.AddRef();
|
||||
if Assigned(eltCrs) or Assigned(eltAttCrs) then begin
|
||||
isArrayDef := False;
|
||||
ParseElementsAndAttributes(eltCrs,eltAttCrs);
|
||||
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;
|
||||
propTyp := arrayItems.GetItem(0).Prop;
|
||||
arrayDef := FSymbols.CreateArray(internalName,propTyp.VarType,propTyp.Name,FSymbols.GetExternalName(propTyp),asScoped);
|
||||
|
Reference in New Issue
Block a user