Program Listing for File cpathapi-argsprinter-structs.inl

Return to documentation for file (include\argsprinter\cpathapi-argsprinter-structs.inl)

/******************************************************************************
© 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
template <> void Print<StructWithPrimitiveMember>(StructWithPrimitiveMember const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<StructWithArray>(StructWithArray const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<StructWithInterface>(StructWithInterface const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<StructWithCOMInterface>(StructWithCOMInterface const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<StructTwoInterfaces>(StructTwoInterfaces const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<StructTwoCOMInterfaces>(StructTwoCOMInterfaces const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<StructWithUnion>(StructWithUnion const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<StructWithUnionCOMInterfaces>(StructWithUnionCOMInterfaces const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<SizeStruct>(SizeStruct const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<DataStruct>(DataStruct const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<NameStruct>(NameStruct const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<NamesSet>(NamesSet const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<StructWithNames>(StructWithNames const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<StructWithEmbeddedStrings>(StructWithEmbeddedStrings const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<StructWithEmbeddedGuitarNotes>(StructWithEmbeddedGuitarNotes const& src, std::string srcName, std::ostream & os, size_t indent );
template <> void Print<StructWithGuitarNotesPointer>(StructWithGuitarNotesPointer const& src, std::string srcName, std::ostream & os, size_t indent );
template <>
inline void Print<StructWithPrimitiveMember>(StructWithPrimitiveMember const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
    Print(src.x, "int x", os, indent +1);
}

template <>
inline void Print<StructWithArray>(StructWithArray const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
    Print(src.count, "int count", os, indent +1);
            if( src.count == 0) {
                std::string largerIndent((indent + 1 ) * 4, ' ');
                os << largerIndent << srcName << "is empty, refer to count" << std::endl;
            } else {
        PrintPointer(src.array, "void * array", os, indent +1);
            }

}

template <>
inline void Print<StructWithInterface>(StructWithInterface const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
        PrintInterfacePointer(src.barPtr, "struct IResource * barPtr", os, indent +1);
}

template <>
inline void Print<StructWithCOMInterface>(StructWithCOMInterface const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
        PrintInterfacePointer(src.barPtr, "struct ICOMResource * barPtr", os, indent +1);
}

template <>
inline void Print<StructTwoInterfaces>(StructTwoInterfaces const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
        PrintInterfacePointer(src.barPtr, "struct IResource * barPtr", os, indent +1);
        PrintInterfacePointer(src.otherBarPtr, "struct IResource * otherBarPtr", os, indent +1);
}

template <>
inline void Print<StructTwoCOMInterfaces>(StructTwoCOMInterfaces const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
        PrintInterfacePointer(src.barPtr, "struct ICOMResource * barPtr", os, indent +1);
        PrintInterfacePointer(src.otherBarPtr, "struct ICOMResource * otherBarPtr", os, indent +1);
}

template <>
inline void Print<StructWithUnion>(StructWithUnion const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
    Print(src.type, "int type", os, indent +1);
        // handle union AnonymousUnion0
}

template <>
inline void Print<StructWithUnionCOMInterfaces>(StructWithUnionCOMInterfaces const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
    Print(src.type, "int type", os, indent +1);
        // handle union AnonymousUnion1
}

template <>
inline void Print<SizeStruct>(SizeStruct const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
    Print(src.count, "int count", os, indent +1);
    Print(src.multiplier, "int multiplier", os, indent +1);
}

template <>
inline void Print<DataStruct>(DataStruct const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
        PrintPointer(src.data, "void * data", os, indent +1);
    Print(src.pitch, "int pitch", os, indent +1);
}

template <>
inline void Print<NameStruct>(NameStruct const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
        PrintPointer(src.Name, "const char * Name", os, indent +1);
}

template <>
inline void Print<NamesSet>(NamesSet const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
            if( src.count == 0) {
                std::string largerIndent((indent + 1 ) * 4, ' ');
                os << largerIndent << srcName << "is empty, refer to count" << std::endl;
            } else {
        PrintPointer(src.Names, "const NameStruct * Names", os, indent +1);
            }

    Print(src.count, "int count", os, indent +1);
}

template <>
inline void Print<StructWithNames>(StructWithNames const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
    Print(src.TheSet, "NamesSet TheSet", os, indent +1);
}

template <>
inline void Print<StructWithEmbeddedStrings>(StructWithEmbeddedStrings const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
    PrintArray(src.someBuf, 256, "char[256] someBuf", os, indent + 1);
    Print(src.someValue, "int someValue", os, indent +1);
    Print(src.someOtherValue, "int someOtherValue", os, indent +1);
    PrintArray(src.someOtherBuf, 256, "char[256] someOtherBuf", os, indent + 1);
}

template <>
inline void Print<StructWithEmbeddedGuitarNotes>(StructWithEmbeddedGuitarNotes const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
    Print(src.size, "int size", os, indent +1);
    Print(src.note, "GuitarNotes note", os, indent +1);
}

template <>
inline void Print<StructWithGuitarNotesPointer>(StructWithGuitarNotesPointer const& src, std::string srcName, std::ostream & os, size_t indent ){
    (void) src;
    std::string indentString(indent * 4, ' ');
    os << indentString << srcName << std::endl;
    Print(src.count, "int count", os, indent +1);
            if( src.count == 0) {
                std::string largerIndent((indent + 1 ) * 4, ' ');
                os << largerIndent << srcName << "is empty, refer to count" << std::endl;
            } else {
        PrintPointer(src.notes, "const GuitarNotes * notes", os, indent +1);
            }

}