terminal/src/types/IUiaTraceable.h

55 lines
1.2 KiB
C
Raw Normal View History

/*++
Copyright (c) Microsoft Corporation
Licensed under the MIT license.
Module Name:
- IUiaTraceable.hpp
Abstract:
- This module is used for assigning and retrieving IDs to UIA objects
Author(s):
- Carlos Zamora (cazamor) Apr 2020
--*/
#pragma once
namespace Microsoft::Console::Types
{
typedef unsigned long long IdType;
constexpr IdType InvalidId = 0;
class IUiaTraceable
{
public:
const IdType GetId() const noexcept
{
return _id;
}
// Routine Description:
// - assigns an ID to the IUiaTraceable object if it doesn't have one
// Arguments:
// - id - the id value that we are trying to assign
// Return Value:
// - true if the assignment was successful, false otherwise (it already has an id).
bool AssignId(IdType id) noexcept
{
if (_id == InvalidId)
{
_id = id;
return true;
}
else
{
return false;
}
}
private:
// used to debug objects passed back and forth
// between the provider and the client
IdType _id{};
};
}