/* Copyright (c) by respective owners including Yahoo!, Microsoft, and individual contributors. All rights reserved. Released under a BSD (revised) license as described in the file LICENSE. */ #pragma once #include "vw_example.h" namespace VW { ref class VowpalWabbitExample; /// /// Interface for label comparators. /// public interface class IVowpalWabbitLabelComparator { public: /// /// Compares labels of and . /// /// Returns null if labels are equivalent, otherwise returns the difference description. String^ Diff(VowpalWabbitExample^ ex1, VowpalWabbitExample^ ex2); }; /// /// A label comparer for simple labels. /// public ref class VowpalWabbitSimpleLabelComparator sealed : IVowpalWabbitLabelComparator { public: /// /// Compares labels of and . /// /// Returns null if labels are equivalent, otherwise returns the difference description. virtual String^ Diff(VowpalWabbitExample^ ex1, VowpalWabbitExample^ ex2) sealed; }; /// /// A label comparer for contextual bandit label. /// public ref class VowpalWabbitContextualBanditLabelComparator sealed : IVowpalWabbitLabelComparator { public: /// /// Compares labels of and . /// /// Returns null if labels are equivalent, otherwise returns the difference description. virtual String^ Diff(VowpalWabbitExample^ ex1, VowpalWabbitExample^ ex2) sealed; }; /// /// Label comparator factory. /// public ref class VowpalWabbitLabelComparator sealed abstract { public: /// /// Simple label comparator. /// static initonly IVowpalWabbitLabelComparator^ Simple = gcnew VowpalWabbitSimpleLabelComparator; /// /// Contextual bandit label comparator. /// static initonly IVowpalWabbitLabelComparator^ ContextualBandit = gcnew VowpalWabbitContextualBanditLabelComparator; }; }