Files
Mementos/Unity/Alternate Genre Jam/Assets/Ink/InkLibs/InkRuntime/DebugMetadata.cs
2021-06-30 21:39:19 +10:00

77 lines
2.5 KiB
C#

using System;
namespace Ink.Runtime
{
public class DebugMetadata
{
public int startLineNumber = 0;
public int endLineNumber = 0;
public int startCharacterNumber = 0;
public int endCharacterNumber = 0;
public string fileName = null;
public string sourceName = null;
public DebugMetadata ()
{
}
// Currently only used in VariableReference in order to
// merge the debug metadata of a Path.Of.Indentifiers into
// one single range.
public DebugMetadata Merge(DebugMetadata dm)
{
var newDebugMetadata = new DebugMetadata();
// These are not supposed to be differ between 'this' and 'dm'.
newDebugMetadata.fileName = fileName;
newDebugMetadata.sourceName = sourceName;
if (startLineNumber < dm.startLineNumber)
{
newDebugMetadata.startLineNumber = startLineNumber;
newDebugMetadata.startCharacterNumber = startCharacterNumber;
}
else if (startLineNumber > dm.startLineNumber)
{
newDebugMetadata.startLineNumber = dm.startLineNumber;
newDebugMetadata.startCharacterNumber = dm.startCharacterNumber;
}
else
{
newDebugMetadata.startLineNumber = startLineNumber;
newDebugMetadata.startCharacterNumber = Math.Min(startCharacterNumber, dm.startCharacterNumber);
}
if (endLineNumber > dm.endLineNumber)
{
newDebugMetadata.endLineNumber = endLineNumber;
newDebugMetadata.endCharacterNumber = endCharacterNumber;
}
else if (endLineNumber < dm.endLineNumber)
{
newDebugMetadata.endLineNumber = dm.endLineNumber;
newDebugMetadata.endCharacterNumber = dm.endCharacterNumber;
}
else
{
newDebugMetadata.endLineNumber = endLineNumber;
newDebugMetadata.endCharacterNumber = Math.Max(endCharacterNumber, dm.endCharacterNumber);
}
return newDebugMetadata;
}
public override string ToString ()
{
if (fileName != null) {
return string.Format ("line {0} of {1}", startLineNumber, fileName);
} else {
return "line " + startLineNumber;
}
}
}
}