Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ FindPosForResource()

int System.Resources.ResourceReader.FindPosForResource ( string name)
inlinepackage

Definition at line 414 of file ResourceReader.cs.

415 {
416 int num = FastResourceComparer.HashFunction(name);
417 int num2 = 0;
418 int i = _numResources - 1;
419 int num3 = -1;
420 bool flag = false;
421 while (num2 <= i)
422 {
423 num3 = num2 + i >> 1;
425 int num4 = ((nameHash != num) ? ((nameHash >= num) ? 1 : (-1)) : 0);
426 if (num4 == 0)
427 {
428 flag = true;
429 break;
430 }
431 if (num4 < 0)
432 {
433 num2 = num3 + 1;
434 }
435 else
436 {
437 i = num3 - 1;
438 }
439 }
440 if (!flag)
441 {
442 return -1;
443 }
444 if (num2 != num3)
445 {
446 num2 = num3;
447 while (num2 > 0 && GetNameHash(num2 - 1) == num)
448 {
449 num2--;
450 }
451 }
452 if (i != num3)
453 {
454 for (i = num3; i < _numResources - 1 && GetNameHash(i + 1) == num; i++)
455 {
456 }
457 }
458 lock (this)
459 {
460 for (int j = num2; j <= i; j++)
461 {
463 if (CompareStringEqualsName(name))
464 {
465 int num5 = _store.ReadInt32();
467 {
468 throw new FormatException(SR.Format(SR.BadImageFormat_ResourcesDataInvalidOffset, num5));
469 }
470 return num5;
471 }
472 }
473 }
474 return -1;
475 }
virtual int ReadInt32()
virtual Stream BaseStream
unsafe int GetNamePosition(int index)
unsafe bool CompareStringEqualsName(string name)
unsafe int GetNameHash(int index)

References System.Resources.ResourceReader._dataSectionOffset, System.Resources.ResourceReader._nameSectionOffset, System.Resources.ResourceReader._numResources, System.Resources.ResourceReader._store, System.SR.BadImageFormat_ResourcesDataInvalidOffset, System.IO.BinaryReader.BaseStream, System.Resources.ResourceReader.CompareStringEqualsName(), System.SR.Format(), System.Resources.ResourceReader.GetNameHash(), System.Resources.ResourceReader.GetNamePosition(), System.Resources.FastResourceComparer.HashFunction(), and System.IO.BinaryReader.ReadInt32().

Referenced by System.Resources.ResourceReader.GetResourceData().