Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Comment: | {2093} fixed DocVariant trouble with FPC 3.1.1 as reported by [1364a0e3e1] |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
3420df26a0b2146057d09facc24402fd |
User & Date: | ab 2015-11-27 14:47:53 |
2015-11-27
| ||
14:57 | {2094} fixed FPC/Linux compilation check-in: 676fa1a0dd user: ab tags: trunk | |
14:47 | {2093} fixed DocVariant trouble with FPC 3.1.1 as reported by [1364a0e3e1] check-in: 3420df26a0 user: ab tags: trunk | |
10:43 | {2092} fixed FireDAC and UniDAC support after Informix RDBMS support check-in: 38420e284a user: ab tags: trunk | |
Changes to SynCommons.pas.
17210 17211 17212 17213 17214 17215 17216 17217 17218 17219 17220 17221 17222 17223 ..... 34377 34378 34379 34380 34381 34382 34383 34384 34385 34386 34387 34388 34389 34390 34391 34392 ..... 34406 34407 34408 34409 34410 34411 34412 34413 34414 34415 34416 34417 34418 34419 34420 34421 34422 34423 34424 34425 34426 34427 34428 ..... 35403 35404 35405 35406 35407 35408 35409 35410 35411 35412 35413 35414 35415 35416 35417 ..... 35448 35449 35450 35451 35452 35453 35454 35455 35456 35457 35458 35459 35460 35461 35462 ..... 35485 35486 35487 35488 35489 35490 35491 35492 35493 35494 35495 35496 35497 35498 35499 |
RawUnicodeToUtf8(VAny,length(WideString(VAny)),result); end; else if SetVariantUnRefSimpleValue(V,tmp) then VariantToUTF8(Variant(tmp),result,wasString) else if VType=varVariant or varByRef then // complex varByRef VariantToUTF8(PVariant(VPointer)^,result,wasString) else if VType=varByRef or varOleStr then begin wasString := true; RawUnicodeToUtf8(pointer(PWideString(VAny)^),length(PWideString(VAny)^),result); end else {$ifdef HASVARUSTRING} if VType=varByRef or varUString then begin wasString := true; ................................................................................ var ndx: integer; begin if dvoCheckForDuplicatedNames in VOptions then begin ndx := GetValueIndex(aName); if ndx>=0 then raise EDocVariant.CreateUTF8('Duplicated "%" name',[aName]); end; SetVariantByValue(aValue,VValue[InternalAdd(aName)]); result := VCount-1; end; function TDocVariantData.AddValue(aName: PUTF8Char; aNameLen: integer; const aValue: variant): integer; var tmp: RawUTF8; begin SetString(tmp,PAnsiChar(aName),aNameLen); result := AddValue(tmp,aValue); ................................................................................ VarClear(VValue[result]); if not GetNumericVariantFromJSON(pointer(aValue),TVarData(VValue[result])) then RawUTF8ToVariant(aValue,VValue[result]); end; function TDocVariantData.AddItem(const aValue: variant): integer; begin SetVariantByValue(aValue,VValue[InternalAdd('')]); result := VCount-1; end; procedure TDocVariantData.AddItems(const aValue: array of const); var ndx: integer; begin for ndx := 0 to high(aValue) do VarRecToVariant(aValue[ndx],VValue[InternalAdd('')]); end; function TDocVariantData.SearchItemByProp(const aPropName,aPropValue: RawUTF8; aCaseSensitive: boolean): integer; var ndx: integer; tmp: RawUTF8; wasString: boolean; ................................................................................ procedure TDocVariant.IntSet(const V, Value: TVarData; Name: PAnsiChar); var ndx: Integer; aName: RawUTF8; Data: TDocVariantData absolute V; begin if (Data.Kind=dvArray) and (PWord(Name)^=ord('_')) then begin SetVariantByValue(variant(Value),Data.VValue[Data.InternalAdd('')]); exit; end; SetString(aName,Name,StrLen(PUTF8Char(Name))); ndx := Data.GetValueIndex(aName); if ndx<0 then ndx := Data.InternalAdd(aName); SetVariantByValue(variant(Value),Data.VValue[ndx]); ................................................................................ case length(Arguments) of 0:if SameText(Name,'Clear') then begin PDocVariantData(@V)^.VCount := 0; PDocVariantData(@V)^.VKind := dvUndefined; exit; end; 1:if SameText(Name,'Add') then begin SetVariantByValue(variant(Arguments[0]),Data.VValue[Data.InternalAdd('')]); exit; end else if SameText(Name,'Delete') then begin SetTempFromFirstArgument; Data.Delete(Data.GetValueIndex(temp)); exit; end else ................................................................................ SetTempFromFirstArgument; Data.RetrieveValueOrRaiseException(pointer(temp),length(temp), dvoNameCaseSensitive in Data.VOptions,variant(Dest),true); exit; end; 2:if SameText(Name,'Add') then begin SetTempFromFirstArgument; SetVariantByValue(variant(Arguments[1]),Data.VValue[Data.InternalAdd(temp)]); exit; end; end; result := false; end; procedure TDocVariant.ToJSON(W: TTextWriter; const Value: variant; |
> > > > > > > > | | | | | | > | > > | > | > | |
17210 17211 17212 17213 17214 17215 17216 17217 17218 17219 17220 17221 17222 17223 17224 17225 17226 17227 17228 17229 17230 17231 ..... 34385 34386 34387 34388 34389 34390 34391 34392 34393 34394 34395 34396 34397 34398 34399 34400 ..... 34414 34415 34416 34417 34418 34419 34420 34421 34422 34423 34424 34425 34426 34427 34428 34429 34430 34431 34432 34433 34434 34435 34436 34437 34438 ..... 35413 35414 35415 35416 35417 35418 35419 35420 35421 35422 35423 35424 35425 35426 35427 35428 ..... 35459 35460 35461 35462 35463 35464 35465 35466 35467 35468 35469 35470 35471 35472 35473 35474 ..... 35497 35498 35499 35500 35501 35502 35503 35504 35505 35506 35507 35508 35509 35510 35511 35512 |
RawUnicodeToUtf8(VAny,length(WideString(VAny)),result); end; else if SetVariantUnRefSimpleValue(V,tmp) then VariantToUTF8(Variant(tmp),result,wasString) else if VType=varVariant or varByRef then // complex varByRef VariantToUTF8(PVariant(VPointer)^,result,wasString) else if VType=varByRef or varString then begin wasString := true; {$ifdef UNICODE} AnyAnsiToUTF8(PRawByteString(VString)^,result); {$else} result := PRawUTF8(VString)^; {$endif} end else if VType=varByRef or varOleStr then begin wasString := true; RawUnicodeToUtf8(pointer(PWideString(VAny)^),length(PWideString(VAny)^),result); end else {$ifdef HASVARUSTRING} if VType=varByRef or varUString then begin wasString := true; ................................................................................ var ndx: integer; begin if dvoCheckForDuplicatedNames in VOptions then begin ndx := GetValueIndex(aName); if ndx>=0 then raise EDocVariant.CreateUTF8('Duplicated "%" name',[aName]); end; result := InternalAdd(aName); // FPC does not allow VValue[InternalAdd(aName)] SetVariantByValue(aValue,VValue[result]); end; function TDocVariantData.AddValue(aName: PUTF8Char; aNameLen: integer; const aValue: variant): integer; var tmp: RawUTF8; begin SetString(tmp,PAnsiChar(aName),aNameLen); result := AddValue(tmp,aValue); ................................................................................ VarClear(VValue[result]); if not GetNumericVariantFromJSON(pointer(aValue),TVarData(VValue[result])) then RawUTF8ToVariant(aValue,VValue[result]); end; function TDocVariantData.AddItem(const aValue: variant): integer; begin result := InternalAdd(''); // FPC does not allow VValue[InternalAdd(aName)] SetVariantByValue(aValue,VValue[result]); end; procedure TDocVariantData.AddItems(const aValue: array of const); var ndx,added: integer; begin for ndx := 0 to high(aValue) do begin added := InternalAdd(''); // FPC does not allow VValue[InternalAdd(aName)] VarRecToVariant(aValue[ndx],VValue[added]); end; end; function TDocVariantData.SearchItemByProp(const aPropName,aPropValue: RawUTF8; aCaseSensitive: boolean): integer; var ndx: integer; tmp: RawUTF8; wasString: boolean; ................................................................................ procedure TDocVariant.IntSet(const V, Value: TVarData; Name: PAnsiChar); var ndx: Integer; aName: RawUTF8; Data: TDocVariantData absolute V; begin if (Data.Kind=dvArray) and (PWord(Name)^=ord('_')) then begin ndx := Data.InternalAdd(''); // FPC does not allow VValue[InternalAdd(aName)] SetVariantByValue(variant(Value),Data.VValue[ndx]); exit; end; SetString(aName,Name,StrLen(PUTF8Char(Name))); ndx := Data.GetValueIndex(aName); if ndx<0 then ndx := Data.InternalAdd(aName); SetVariantByValue(variant(Value),Data.VValue[ndx]); ................................................................................ case length(Arguments) of 0:if SameText(Name,'Clear') then begin PDocVariantData(@V)^.VCount := 0; PDocVariantData(@V)^.VKind := dvUndefined; exit; end; 1:if SameText(Name,'Add') then begin ndx := Data.InternalAdd(''); // FPC does not allow VValue[InternalAdd(aName)] SetVariantByValue(variant(Arguments[0]),Data.VValue[ndx]); exit; end else if SameText(Name,'Delete') then begin SetTempFromFirstArgument; Data.Delete(Data.GetValueIndex(temp)); exit; end else ................................................................................ SetTempFromFirstArgument; Data.RetrieveValueOrRaiseException(pointer(temp),length(temp), dvoNameCaseSensitive in Data.VOptions,variant(Dest),true); exit; end; 2:if SameText(Name,'Add') then begin SetTempFromFirstArgument; ndx := Data.InternalAdd(temp); // FPC does not allow VValue[InternalAdd(aName)] SetVariantByValue(variant(Arguments[1]),Data.VValue[ndx]); exit; end; end; result := false; end; procedure TDocVariant.ToJSON(W: TTextWriter; const Value: variant; |
Changes to SynopseCommit.inc.
1 |
'1.18.2092'
|
| |
1 |
'1.18.2093'
|