Program Listing for File compathapi-tokens.h

Return to documentation for file (include\serialization\compathapi\compathapi-tokens.h)

/******************************************************************************
© Intel Corporation.
This software and the related documents are Intel copyrighted materials,
and your use of them is governed by the express license under which they
were provided to you ("License"). Unless the License provides otherwise,
you may not use, modify, copy, publish, distribute, disclose or transmit
this software or the related documents without Intel's prior written
permission.
 This software and the related documents are provided as is, with no express
or implied warranties, other than those that are expressly stated in the
License.
******************************************************************************/
#pragma once
#include "igpa-config.h"
#include <stdint.h>
#include <unordered_set>
#include "serialization/token.h"
namespace gpa {
namespace serialization {
namespace compathapi {
enum ClassToken : uint16_t {
    kIUnknown = 0x4538,
    kICOMResource = 0xea12,
    kICOMResource1 = 0x55b8,
    kINoParameter = 0xbde,
    kIPrimitiveParameter = 0xd765,
    kIStructParameter = 0x7600,
    kIInterfaceParameter = 0x7935,
    kIDataParameter = 0x860c,
    kIVariousParameter = 0x51f4,
    kIReturnValues = 0x18b9,
};
enum FunctionToken : uint32_t {
    kCreatePrimitiveParameter = 0x822d0f81,
    kCreateStructParameter = 0xfe11ddfb,
    kCreateInterfaceParameter = 0xeea8f5eb,
    kCreateDataParameter = 0x842019ba,
    kCreateVariousParameter = 0xca21a619,
    kCreateReturnValues = 0xd34af1e9,
    kQueryInterface = 0x9e0c150,
    kAddRef = 0x6360f841,
    kRelease = 0xe8691d1c,
    kGetSize = 0x97cbb78,
    kMap = 0x3e2ff325,
    kUnmap = 0xcfcd4902,
    kPrintContent = 0x118d9b3d,
    kPrintContentEx = 0x2e8a1a9e,
    kNoParameter = 0x39556429,
    kPrimitiveParameter = 0xd9519419,
    kPointerParameter = 0xaab62b21,
    kConstPointerParameter = 0xf948edd6,
    kFixedSizeArrayParameter = 0xcff03e96,
    kFixedSizeConstArrayParameter = 0x708c249f,
    kFixedSizePointerParameter = 0xa0e16976,
    kFixedSizeConstPointerParameter = 0x19eee3a3,
    kFixedSizePointerParameterNoAnnotation = 0x8b2ac484,
    kPointerParamterWithLengthToCalculate = 0x636134f5,
    kConstPointerParameterWithLengthToCalculate = 0xfbbadc57,
    kOutputPointerParameter = 0x218fdb3e,
    kInputOutputPointerParameter = 0x430fb610,
    kInputOutputPointerParameter1 = 0xa1bb9b01,
    kOutputPointerParameterWithEnum = 0x760bad6d,
    kPrimitiveStructParameter = 0x4c2d77f0,
    kPointerToPrimitiveStructParameter = 0xfb164c2e,
    kConstPointerToPrimitiveStructParameter = 0x79d171a7,
    kOutputPointerToPrimitiveStructParameter = 0x807bdeaf,
    kPointerToPrimitiveStructWithSizeParameter = 0xc6fd3ef,
    kNullTerminatedPointerToPrimitiveStructParameter = 0xc7a3e4fa,
    kEndElementTerminatedPointerToPrimitiveStructParameter = 0x87b87b88,
    kEndElementTerminatedPointerToPrimitiveStructParameterNoAnnotation = 0xdecbb98a,
    kOutputInterfaceParameter = 0x7c528104,
    kOutputInterfaceParameter1 = 0xb9e1197d,
    kOutputInterfaceParameter2 = 0xb9e1197e,
    kOutputInterfaceParameterWithGUID = 0x5e498393,
    kOutputInterfaceParameterWithEnum = 0x6da2d4bb,
    kInterfaceParameter = 0x95bbaa43,
    kInterfaceParameterArrayWithSize = 0xc4596d5,
    kOutputArrayInterfaceParameter = 0x73055537,
    kBlobParameter = 0xabab334d,
    kConstBlobParameter = 0xf003cc8c,
    kNullTerminatedStringParameter = 0x33f7c40b,
    kOutputPointerWithSizeParameter = 0x593fdff,
    kDataPointerParameter_DependentOnResource = 0x6609e2fe,
    kArrayParameterWithLengthToCalculate = 0x330c89d2,
    kPointerToStructWithArrayParameter = 0xa8334160,
    kPointerToStructWithInterfaceParameter = 0xeb889f06,
    kPointerToStructWithUnionWithSizeParameter = 0x13aa1b13,
    kDataPointerInStructArrayCountInStructPointerParameter = 0x672f76f4,
    kNullTerminatedStringInStructArrayInStructInPointerStructParameter = 0x5813d315,
    kPrimitiveReturnValue = 0x713a0721,
    kPritiveStructReturnValue = 0x39e6c202,
    kInterfaceReturnValue = 0xbbffc253,
};
inline char const* FunctionTokenToString(FunctionToken functionToken)
{
    switch (functionToken)
    {
        case kCreatePrimitiveParameter: return "kCreatePrimitiveParameter"; break;
        case kCreateStructParameter: return "kCreateStructParameter"; break;
        case kCreateInterfaceParameter: return "kCreateInterfaceParameter"; break;
        case kCreateDataParameter: return "kCreateDataParameter"; break;
        case kCreateVariousParameter: return "kCreateVariousParameter"; break;
        case kCreateReturnValues: return "kCreateReturnValues"; break;
        case kQueryInterface: return "kQueryInterface"; break;
        case kAddRef: return "kAddRef"; break;
        case kRelease: return "kRelease"; break;
        case kGetSize: return "kGetSize"; break;
        case kMap: return "kMap"; break;
        case kUnmap: return "kUnmap"; break;
        case kPrintContent: return "kPrintContent"; break;
        case kPrintContentEx: return "kPrintContentEx"; break;
        case kNoParameter: return "kNoParameter"; break;
        case kPrimitiveParameter: return "kPrimitiveParameter"; break;
        case kPointerParameter: return "kPointerParameter"; break;
        case kConstPointerParameter: return "kConstPointerParameter"; break;
        case kFixedSizeArrayParameter: return "kFixedSizeArrayParameter"; break;
        case kFixedSizeConstArrayParameter: return "kFixedSizeConstArrayParameter"; break;
        case kFixedSizePointerParameter: return "kFixedSizePointerParameter"; break;
        case kFixedSizeConstPointerParameter: return "kFixedSizeConstPointerParameter"; break;
        case kFixedSizePointerParameterNoAnnotation: return "kFixedSizePointerParameterNoAnnotation"; break;
        case kPointerParamterWithLengthToCalculate: return "kPointerParamterWithLengthToCalculate"; break;
        case kConstPointerParameterWithLengthToCalculate: return "kConstPointerParameterWithLengthToCalculate"; break;
        case kOutputPointerParameter: return "kOutputPointerParameter"; break;
        case kInputOutputPointerParameter: return "kInputOutputPointerParameter"; break;
        case kInputOutputPointerParameter1: return "kInputOutputPointerParameter1"; break;
        case kOutputPointerParameterWithEnum: return "kOutputPointerParameterWithEnum"; break;
        case kPrimitiveStructParameter: return "kPrimitiveStructParameter"; break;
        case kPointerToPrimitiveStructParameter: return "kPointerToPrimitiveStructParameter"; break;
        case kConstPointerToPrimitiveStructParameter: return "kConstPointerToPrimitiveStructParameter"; break;
        case kOutputPointerToPrimitiveStructParameter: return "kOutputPointerToPrimitiveStructParameter"; break;
        case kPointerToPrimitiveStructWithSizeParameter: return "kPointerToPrimitiveStructWithSizeParameter"; break;
        case kNullTerminatedPointerToPrimitiveStructParameter: return "kNullTerminatedPointerToPrimitiveStructParameter"; break;
        case kEndElementTerminatedPointerToPrimitiveStructParameter: return "kEndElementTerminatedPointerToPrimitiveStructParameter"; break;
        case kEndElementTerminatedPointerToPrimitiveStructParameterNoAnnotation: return "kEndElementTerminatedPointerToPrimitiveStructParameterNoAnnotation"; break;
        case kOutputInterfaceParameter: return "kOutputInterfaceParameter"; break;
        case kOutputInterfaceParameter1: return "kOutputInterfaceParameter1"; break;
        case kOutputInterfaceParameter2: return "kOutputInterfaceParameter2"; break;
        case kOutputInterfaceParameterWithGUID: return "kOutputInterfaceParameterWithGUID"; break;
        case kOutputInterfaceParameterWithEnum: return "kOutputInterfaceParameterWithEnum"; break;
        case kInterfaceParameter: return "kInterfaceParameter"; break;
        case kInterfaceParameterArrayWithSize: return "kInterfaceParameterArrayWithSize"; break;
        case kOutputArrayInterfaceParameter: return "kOutputArrayInterfaceParameter"; break;
        case kBlobParameter: return "kBlobParameter"; break;
        case kConstBlobParameter: return "kConstBlobParameter"; break;
        case kNullTerminatedStringParameter: return "kNullTerminatedStringParameter"; break;
        case kOutputPointerWithSizeParameter: return "kOutputPointerWithSizeParameter"; break;
        case kDataPointerParameter_DependentOnResource: return "kDataPointerParameter_DependentOnResource"; break;
        case kArrayParameterWithLengthToCalculate: return "kArrayParameterWithLengthToCalculate"; break;
        case kPointerToStructWithArrayParameter: return "kPointerToStructWithArrayParameter"; break;
        case kPointerToStructWithInterfaceParameter: return "kPointerToStructWithInterfaceParameter"; break;
        case kPointerToStructWithUnionWithSizeParameter: return "kPointerToStructWithUnionWithSizeParameter"; break;
        case kDataPointerInStructArrayCountInStructPointerParameter: return "kDataPointerInStructArrayCountInStructPointerParameter"; break;
        case kNullTerminatedStringInStructArrayInStructInPointerStructParameter: return "kNullTerminatedStringInStructArrayInStructInPointerStructParameter"; break;
        case kPrimitiveReturnValue: return "kPrimitiveReturnValue"; break;
        case kPritiveStructReturnValue: return "kPritiveStructReturnValue"; break;
        case kInterfaceReturnValue: return "kInterfaceReturnValue"; break;
        default: return "Unknown compathapi::FunctionToken";
    }

}

inline bool IsValidClassToken(ClassToken token)
{
    (void)token;
    switch (token)
    {
        case kIUnknown: return true;
        case kICOMResource: return true;
        case kICOMResource1: return true;
        case kINoParameter: return true;
        case kIPrimitiveParameter: return true;
        case kIStructParameter: return true;
        case kIInterfaceParameter: return true;
        case kIDataParameter: return true;
        case kIVariousParameter: return true;
        case kIReturnValues: return true;
    }

    return false;
}

inline bool IsValidFunctionToken(FunctionToken token)
{
    switch (token)
    {
        case kCreatePrimitiveParameter: return true;
        case kCreateStructParameter: return true;
        case kCreateInterfaceParameter: return true;
        case kCreateDataParameter: return true;
        case kCreateVariousParameter: return true;
        case kCreateReturnValues: return true;
        case kQueryInterface: return true;
        case kAddRef: return true;
        case kRelease: return true;
        case kGetSize: return true;
        case kMap: return true;
        case kUnmap: return true;
        case kPrintContent: return true;
        case kPrintContentEx: return true;
        case kNoParameter: return true;
        case kPrimitiveParameter: return true;
        case kPointerParameter: return true;
        case kConstPointerParameter: return true;
        case kFixedSizeArrayParameter: return true;
        case kFixedSizeConstArrayParameter: return true;
        case kFixedSizePointerParameter: return true;
        case kFixedSizeConstPointerParameter: return true;
        case kFixedSizePointerParameterNoAnnotation: return true;
        case kPointerParamterWithLengthToCalculate: return true;
        case kConstPointerParameterWithLengthToCalculate: return true;
        case kOutputPointerParameter: return true;
        case kInputOutputPointerParameter: return true;
        case kInputOutputPointerParameter1: return true;
        case kOutputPointerParameterWithEnum: return true;
        case kPrimitiveStructParameter: return true;
        case kPointerToPrimitiveStructParameter: return true;
        case kConstPointerToPrimitiveStructParameter: return true;
        case kOutputPointerToPrimitiveStructParameter: return true;
        case kPointerToPrimitiveStructWithSizeParameter: return true;
        case kNullTerminatedPointerToPrimitiveStructParameter: return true;
        case kEndElementTerminatedPointerToPrimitiveStructParameter: return true;
        case kEndElementTerminatedPointerToPrimitiveStructParameterNoAnnotation: return true;
        case kOutputInterfaceParameter: return true;
        case kOutputInterfaceParameter1: return true;
        case kOutputInterfaceParameter2: return true;
        case kOutputInterfaceParameterWithGUID: return true;
        case kOutputInterfaceParameterWithEnum: return true;
        case kInterfaceParameter: return true;
        case kInterfaceParameterArrayWithSize: return true;
        case kOutputArrayInterfaceParameter: return true;
        case kBlobParameter: return true;
        case kConstBlobParameter: return true;
        case kNullTerminatedStringParameter: return true;
        case kOutputPointerWithSizeParameter: return true;
        case kDataPointerParameter_DependentOnResource: return true;
        case kArrayParameterWithLengthToCalculate: return true;
        case kPointerToStructWithArrayParameter: return true;
        case kPointerToStructWithInterfaceParameter: return true;
        case kPointerToStructWithUnionWithSizeParameter: return true;
        case kDataPointerInStructArrayCountInStructPointerParameter: return true;
        case kNullTerminatedStringInStructArrayInStructInPointerStructParameter: return true;
        case kPrimitiveReturnValue: return true;
        case kPritiveStructReturnValue: return true;
        case kInterfaceReturnValue: return true;
    }

    return false;
}

inline bool IsValidToken(GPAToken token)
{
    bool const apiValid = token._api == kCOMPathApi;
    bool const interfaceValid = IsValidClassToken((ClassToken)token._class);
    bool const functionValid = IsValidFunctionToken((FunctionToken)token._function);
    return (apiValid && interfaceValid && functionValid);
}

} // namespace compathapi
} // namespace serialization
} // namespace gpa