// autozero.cpp : instantiates all the specializations of auto_size<>
// defined in <rt/autozero.h>
//
// Copyright (C) 2000-2001, Rich Thomson, all rights reserved.
//
#include "stdafx.h"
#include <atlbase.h>

template <typename Structure, typename Traits>
void
validate_size(rt::auto_size<Structure, Traits> &s)
{
    if (sizeof(Structure) != Traits::size(s))
    {
        ATLASSERT(false);
    }
}

int main(int, char *[])
{
    using namespace rt;
    
#define AUTO_SIZE_TEST(T_) \
    { \
        auto_size<T_> test; \
        validate_size(test); \
    }
    AUTO_SIZE_TEST(WNDCLASSEX);
    AUTO_SIZE_TEST(TPMPARAMS);
    AUTO_SIZE_TEST(MENUITEMINFO);
    AUTO_SIZE_TEST(DRAWTEXTPARAMS);
    AUTO_SIZE_TEST(HELPINFO);
    AUTO_SIZE_TEST(MSGBOXPARAMS);
    AUTO_SIZE_TEST(SCROLLINFO);
    AUTO_SIZE_TEST(NONCLIENTMETRICS);
    AUTO_SIZE_TEST(MINIMIZEDMETRICS);
    AUTO_SIZE_TEST(ICONMETRICS);
    AUTO_SIZE_TEST(ANIMATIONINFO);
    AUTO_SIZE_TEST(SERIALKEYS);
    AUTO_SIZE_TEST(HIGHCONTRAST);
    AUTO_SIZE_TEST(FILTERKEYS);
    AUTO_SIZE_TEST(STICKYKEYS);
    AUTO_SIZE_TEST(MOUSEKEYS);
    AUTO_SIZE_TEST(ACCESSTIMEOUT);
    AUTO_SIZE_TEST(SOUNDSENTRY);
    AUTO_SIZE_TEST(TOGGLEKEYS);
#if (_WIN32_WINNT >= 0x0400) && !defined(NOTRACKMOUSEEVENT)
    AUTO_SIZE_TEST(TRACKMOUSEEVENT);
#endif
#if (_WIN32_WINNT >= 0x0500)
    AUTO_SIZE_TEST(LASTINPUTINFO);
    AUTO_SIZE_TEST(MENUINFO);
    AUTO_SIZE_TEST(MONITORINFO);
    AUTO_SIZE_TEST(GUITHREADINFO);
    AUTO_SIZE_TEST(CURSORINFO);
    AUTO_SIZE_TEST(WINDOWINFO);
    AUTO_SIZE_TEST(TITLEBARINFO);
    AUTO_SIZE_TEST(MENUBARINFO);
    AUTO_SIZE_TEST(SCROLLBARINFO);
    AUTO_SIZE_TEST(COMBOBOXINFO);
    AUTO_SIZE_TEST(ALTTABINFO);
#endif
    
    AUTO_SIZE_TEST(MONITORINFOEX);
    
    return 0;
}
