mirror of
https://github.com/github/codeql.git
synced 2025-12-17 17:23:36 +01:00
54 lines
1.8 KiB
C#
54 lines
1.8 KiB
C#
using System.IO;
|
|
using Microsoft.CodeAnalysis;
|
|
|
|
namespace Semmle.Extraction.CSharp
|
|
{
|
|
/// <summary>
|
|
/// Any program entity which has a corresponding label in the trap file.
|
|
///
|
|
/// Entities are divided into two types: normal entities and cached
|
|
/// entities.
|
|
///
|
|
/// Normal entities implement <see cref="Entities.FreshEntity"/> directly, and they
|
|
/// (may) emit contents to the trap file during object construction.
|
|
///
|
|
/// Cached entities implement <see cref="Entities.CachedEntity"/>, and they
|
|
/// emit contents to the trap file when <see cref="Entities.CachedEntity.Populate"/>
|
|
/// is called. Caching prevents <see cref="Entities.CachedEntity.Populate"/>
|
|
/// from being called on entities that have already been emitted.
|
|
/// </summary>
|
|
public interface IEntity
|
|
{
|
|
/// <summary>
|
|
/// The label of the entity, as it is in the trap file.
|
|
/// For example, "#123".
|
|
/// </summary>
|
|
Label Label { get; set; }
|
|
|
|
/// <summary>
|
|
/// Writes the unique identifier of this entity to a trap file.
|
|
/// </summary>
|
|
/// <param name="trapFile">The trapfile to write to.</param>
|
|
void WriteId(EscapingTextWriter trapFile);
|
|
|
|
/// <summary>
|
|
/// Writes the quoted identifier of this entity,
|
|
/// which could be @"..." or *
|
|
/// </summary>
|
|
/// <param name="trapFile">The trapfile to write to.</param>
|
|
void WriteQuotedId(EscapingTextWriter trapFile);
|
|
|
|
/// <summary>
|
|
/// The location for reporting purposes.
|
|
/// </summary>
|
|
Location? ReportingLocation { get; }
|
|
|
|
/// <summary>
|
|
/// How the entity handles .push and .pop.
|
|
/// </summary>
|
|
TrapStackBehaviour TrapStackBehaviour { get; }
|
|
|
|
void DefineLabel(TextWriter trapFile);
|
|
}
|
|
}
|