You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by gr...@apache.org on 2001/06/07 22:49:28 UTC

cvs commit: apr-site/apr2_0intro/SampleDLL ReadMe.txt SampleDLL.cpp SampleDLL.dsp SampleDLL.h SampleDLL.plg StdAfx.cpp StdAfx.h

gregames    01/06/07 13:49:27

  Added:       apr2_0intro TstApr.dsw TstApr.ncb TstApr.opt apr2_0intro.htm
                        apr2_0intro.ppt
               apr2_0intro/SampleDLL ReadMe.txt SampleDLL.cpp SampleDLL.dsp
                        SampleDLL.h SampleDLL.plg StdAfx.cpp StdAfx.h
  Log:
  adding a new directory for Christian Gross's "Introduction to APR 2.0" pitch.
  
  more files to come...please holler if I screw up the cvs add/commits.  The
  commit seems to be recursing, but not completely (?!?).
  
  I'll link this into the main APR page once the commits for new stuff look good.
  
  Submitted by:   Christian Gross
  Reviewed by:	Greg Ames
  
  Revision  Changes    Path
  1.1                  apr-site/apr2_0intro/TstApr.dsw
  
  Index: TstApr.dsw
  ===================================================================
  Microsoft Developer Studio Workspace File, Format Version 6.00
  # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
  
  ###############################################################################
  
  Project: "Client"=.\Client\Client.dsp - Package Owner=<4>
  
  Package=<5>
  {{{
  }}}
  
  Package=<4>
  {{{
  }}}
  
  ###############################################################################
  
  Project: "SampleDLL"=.\SampleDLL\SampleDLL.dsp - Package Owner=<4>
  
  Package=<5>
  {{{
  }}}
  
  Package=<4>
  {{{
  }}}
  
  ###############################################################################
  
  Project: "Server"=.\Server\Server.dsp - Package Owner=<4>
  
  Package=<5>
  {{{
  }}}
  
  Package=<4>
  {{{
  }}}
  
  ###############################################################################
  
  Project: "TstAprRoutines"=.\TstAprRoutines\TstAprRoutines.dsp - Package Owner=<4>
  
  Package=<5>
  {{{
  }}}
  
  Package=<4>
  {{{
      Begin Project Dependency
      Project_Dep_Name libapr
      End Project Dependency
  }}}
  
  ###############################################################################
  
  Project: "libapr"=..\..\..\apr\libapr.dsp - Package Owner=<4>
  
  Package=<5>
  {{{
  }}}
  
  Package=<4>
  {{{
  }}}
  
  ###############################################################################
  
  Global:
  
  Package=<5>
  {{{
  }}}
  
  Package=<3>
  {{{
  }}}
  
  ###############################################################################
  
  
  
  
  1.1                  apr-site/apr2_0intro/TstApr.ncb
  
  	<<Binary file>>
  
  
  1.1                  apr-site/apr2_0intro/TstApr.opt
  
  	<<Binary file>>
  
  
  1.1                  apr-site/apr2_0intro/apr2_0intro.htm
  
  Index: apr2_0intro.htm
  ===================================================================
  <html xmlns:o="urn:schemas-microsoft-com:office:office"
  xmlns="http://www.w3.org/TR/REC-html40">
  
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
  <meta name=ProgId content=PowerPoint.Slide>
  <meta name=Generator content="Microsoft PowerPoint 9">
  <link rel=File-List href="./apr2_0intro_files/filelist.xml">
  <title>Working with Open Source</title>
  <!--[if gte mso 9]><xml>
   <o:DocumentProperties>
    <o:Author>Christian Gross</o:Author>
    <o:LastAuthor>greg</o:LastAuthor>
    <o:Revision>9</o:Revision>
    <o:TotalTime>216</o:TotalTime>
    <o:Created>2001-01-09T00:06:46Z</o:Created>
    <o:LastSaved>2001-06-07T19:01:31Z</o:LastSaved>
    <o:Words>492</o:Words>
    <o:PresentationFormat>On-screen Show</o:PresentationFormat>
    <o:Company>Tredix AG</o:Company>
    <o:Bytes>31022</o:Bytes>
    <o:Paragraphs>92</o:Paragraphs>
    <o:Slides>14</o:Slides>
    <o:Version>9.2720</o:Version>
   </o:DocumentProperties>
  </xml><![endif]-->
  <meta http-equiv=expires content=0>
  <![if !ppt]><script><!--
  
  var END_SHOW_HREF         = "endshow.htm",
      OUTLINE_EXPAND_HREF   = "outline_expanded.htm",
      OUTLINE_COLLAPSE_HREF = "outline_collapsed.htm";
      NAVBAR_HREF           = "navigation_bar.htm";
      BLANK_NOTES_HREF	  = "blank_notes.htm";
      NUM_VISIBLE_SLIDES    = 14;
      SIMPLE_FRAMESET       = 0;
      SLIDE_FRAME	        = "PPTSld";
      NOTES_FRAME           = "PPTNts";
      OUTLINE_FRAME         = "PPTOtl";
      NAVBAR_FRAME          = "PPTNav";
  
  var g_currentSlide = 1, g_prevSlide = 1;
  
  var appVer = navigator.appVersion;
  var msie = appVer.indexOf( "MSIE " );
  var msieWin31 = (appVer.indexOf( "Windows 3.1" ) > 0);
  var ver = 0;
  
  if ( msie >= 0 )
    ver = parseFloat( appVer.substring( msie+5, appVer.indexOf ( ";", msie ) ) );
  else
    ver = parseInt( appVer );
  
  var g_supportsPPTHTML = !msieWin31 && ( ( msie >= 0 && ver >= 3.02 ) || ( msie < 0 && ver >= 3 ) );
  
  function GetCurrentSlideNum()
  {   
    obj = GetHrefObj( g_currentSlide );
    if ( GetHrefObj( g_currentSlide ).m_origVisibility == 1 )
      return obj.m_slideIdx;
    else   
      return g_currentSlide;
  }
  
  function GetNumSlides()
  {
    if ( GetHrefObj( g_currentSlide ).m_origVisibility == 1 )
      return NUM_VISIBLE_SLIDES;
    else
      return g_docTable.length;
  }
  
  function GetHrefObj( slideIdx )
  { return g_docTable[slideIdx - 1];
  }
  
  function GetSlideNum( slideHref )
  {
    for (ii=0; ii<g_docTable.length; ii++) {
      if ( g_docTable[ii].m_slideHref == slideHref )
        return ii+1;
    }
    return 1;
  }
  
  function GoToNextSld()
  {   
    targetIdx = g_currentSlide + 1;
    if ( GetHrefObj( targetIdx-1 ).m_origVisibility == 0 ) {
      if ( targetIdx<=g_docTable.length ) {
        obj = GetHrefObj( targetIdx );
        obj.m_visibility = 1;
        GoToSld( obj.m_slideHref );
      }
    }
    else {
      obj = GetHrefObj( targetIdx );
      while ( obj && ( obj.m_origVisibility == 0 ) && ( targetIdx<=g_docTable.length ) )
        obj = GetHrefObj( targetIdx++ );
      if( obj && obj.m_origVisibility )
        GoToSld( obj.m_slideHref );
    }
  }
  
  function GoToPrevSld()
  {
    targetIdx = g_currentSlide - 1;
    if ( targetIdx > 0 ) {
      obj = GetHrefObj( targetIdx );
      while ( ( obj.m_visibility == 0 ) && ( targetIdx>0 ) )
        obj = GetHrefObj( targetIdx-- );
      GoToSld( obj.m_slideHref );
    }
  }
  
  function GoToLast()
  {
    targetIdx = g_docTable.length;
    if ( targetIdx != g_currentSlide )
      GoToSld( GetHrefObj( targetIdx ).m_slideHref );
  }
  
  function GoToFirst()
  { GoToSld( GetHrefObj(1).m_slideHref );
  }
  
  function ChangeFrame( frame, href )
  {
    if( g_supportsPPTHTML )
      frames[frame].location.replace( href );
    else
      frames[frame].location.href = href;
  }
  
  function GoToSld( slideHref )
  {
    if ( slideHref != GetHrefObj( g_currentSlide ).m_slideHref ) {
      g_prevSlide = g_currentSlide;
      g_currentSlide = GetSlideNum( slideHref );
      obj = GetHrefObj( g_currentSlide );
      obj.m_visibility = 1;
      if( !SIMPLE_FRAMESET )
        ChangeFrame( NOTES_FRAME, obj.m_notesHref );
      ChangeFrame( NAVBAR_FRAME, NAVBAR_HREF );
      frames[SLIDE_FRAME].location.href = slideHref;
    }
  }
  
  function PrevSldViewed()
  { GoToSld( GetHrefObj( g_prevSlide ).m_slideHref );
  }
  
  function EndShow()
  { frames[SLIDE_FRAME].location.href = END_SHOW_HREF;
  }
  
  function NoHref() {}
  
  function ExpandOutline( )
  { ChangeFrame( OUTLINE_FRAME, OUTLINE_EXPAND_HREF );
  }
  
  function CollapseOutline()
  { ChangeFrame( OUTLINE_FRAME, OUTLINE_COLLAPSE_HREF );
  }
  
  function SlideUpdated( id )
  {
    if ( id != GetHrefObj( g_currentSlide ).m_slideHref ) {
      g_prevSlide = g_currentSlide;
      g_currentSlide = GetSlideNum( id );
      obj = GetHrefObj( g_currentSlide );
      if( !SIMPLE_FRAMESET )
        ChangeFrame( NOTES_FRAME, obj.m_notesHref );
      ChangeFrame( NAVBAR_FRAME, NAVBAR_HREF );
    }
  }
  
  function hrefList( slideHref, notesHref, visible, slideIdx )
  {
    this.m_slideHref  = slideHref;
    this.m_notesHref  = notesHref;
    this.m_navbarHref = NAVBAR_HREF;
    this.m_origVisibility = visible;
    this.m_visibility = visible;
    this.m_slideIdx = slideIdx;
  }
  var g_docTable = new Array(
     new hrefList("slide0001.htm", BLANK_NOTES_HREF, 1, 1 ),
     new hrefList("slide0003.htm", BLANK_NOTES_HREF, 1, 2 ),
     new hrefList("slide0002.htm", BLANK_NOTES_HREF, 1, 3 ),
     new hrefList("slide0005.htm", BLANK_NOTES_HREF, 1, 4 ),
     new hrefList("slide0006.htm", BLANK_NOTES_HREF, 1, 5 ),
     new hrefList("slide0007.htm", BLANK_NOTES_HREF, 1, 6 ),
     new hrefList("slide0008.htm", BLANK_NOTES_HREF, 1, 7 ),
     new hrefList("slide0010.htm", BLANK_NOTES_HREF, 1, 8 ),
     new hrefList("slide0009.htm", BLANK_NOTES_HREF, 1, 9 ),
     new hrefList("slide0011.htm", BLANK_NOTES_HREF, 1, 10 ),
     new hrefList("slide0012.htm", BLANK_NOTES_HREF, 1, 11 ),
     new hrefList("slide0013.htm", BLANK_NOTES_HREF, 1, 12 ),
     new hrefList("slide0014.htm", BLANK_NOTES_HREF, 1, 13 ),
     new hrefList("slide0004.htm", BLANK_NOTES_HREF, 1, 14 )
  );
  //-->
  </script><![endif]>
  </head>
  
  <frameset rows="*,27" framespacing=1 frameborder=1>
   <noframes>
    <body>
    <p>This page uses frames, but your browser doesn't support them.</p>
    </body>
   </noframes>
   <frameset cols="*,495">
    <frame src="./apr2_0intro_files/outline_collapsed.htm" name=PPTOtl noresize>
    <frameset rows="376,*">
     <frame src="./apr2_0intro_files/slide0001.htm" name=PPTSld marginheight=0
     marginwidth=0>
     <frame src="./apr2_0intro_files/blank_notes.htm" name=PPTNts marginheight=0
     marginwidth=0 noresize>
    </frameset>
   </frameset>
   <frameset cols="*,495">
    <frame src="./apr2_0intro_files/outline_navigation_bar.htm" name=PPTOtlNav
    marginheight=0 marginwidth=0 scrolling=no noresize>
    <frame src="./apr2_0intro_files/navigation_bar.htm" name=PPTNav
    marginheight=0 marginwidth=0 scrolling=no noresize>
   </frameset>
  </frameset>
  
  </html>
  
  
  
  1.1                  apr-site/apr2_0intro/apr2_0intro.ppt
  
  	<<Binary file>>
  
  
  1.1                  apr-site/apr2_0intro/SampleDLL/ReadMe.txt
  
  Index: ReadMe.txt
  ===================================================================
  ========================================================================
         DYNAMIC LINK LIBRARY : SampleDLL
  ========================================================================
  
  
  AppWizard has created this SampleDLL DLL for you.  
  
  This file contains a summary of what you will find in each of the files that
  make up your SampleDLL application.
  
  SampleDLL.dsp
      This file (the project file) contains information at the project level and
      is used to build a single project or subproject. Other users can share the
      project (.dsp) file, but they should export the makefiles locally.
  
  SampleDLL.cpp
      This is the main DLL source file.
  
  SampleDLL.h
      This file contains your DLL exports.
  
  /////////////////////////////////////////////////////////////////////////////
  Other standard files:
  
  StdAfx.h, StdAfx.cpp
      These files are used to build a precompiled header (PCH) file
      named SampleDLL.pch and a precompiled types file named StdAfx.obj.
  
  
  /////////////////////////////////////////////////////////////////////////////
  Other notes:
  
  AppWizard uses "TODO:" to indicate parts of the source code you
  should add to or customize.
  
  
  /////////////////////////////////////////////////////////////////////////////
  
  
  
  1.1                  apr-site/apr2_0intro/SampleDLL/SampleDLL.cpp
  
  Index: SampleDLL.cpp
  ===================================================================
  // SampleDLL.cpp : Defines the entry point for the DLL application.
  //
  
  #include "stdafx.h"
  #include "SampleDLL.h"
  
  BOOL APIENTRY DllMain( HANDLE hModule, 
                         DWORD  ul_reason_for_call, 
                         LPVOID lpReserved
  					 )
  {
      switch (ul_reason_for_call)
  	{
  		case DLL_PROCESS_ATTACH:
  		case DLL_THREAD_ATTACH:
  		case DLL_THREAD_DETACH:
  		case DLL_PROCESS_DETACH:
  			break;
      }
      return TRUE;
  }
  
  
  // This is an example of an exported variable
  SAMPLEDLL_API int nSampleDLL=0;
  
  // This is an example of an exported function.
  SAMPLEDLL_API int fnSampleDLL(void)
  {
  	return 42;
  }
  
  // This is the constructor of a class that has been exported.
  // see SampleDLL.h for the class definition
  CSampleDLL::CSampleDLL()
  { 
  	return; 
  }
  
  
  
  
  1.1                  apr-site/apr2_0intro/SampleDLL/SampleDLL.dsp
  
  Index: SampleDLL.dsp
  ===================================================================
  # Microsoft Developer Studio Project File - Name="SampleDLL" - Package Owner=<4>
  # Microsoft Developer Studio Generated Build File, Format Version 6.00
  # ** DO NOT EDIT **
  
  # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
  
  CFG=SampleDLL - Win32 Debug
  !MESSAGE This is not a valid makefile. To build this project using NMAKE,
  !MESSAGE use the Export Makefile command and run
  !MESSAGE 
  !MESSAGE NMAKE /f "SampleDLL.mak".
  !MESSAGE 
  !MESSAGE You can specify a configuration when running NMAKE
  !MESSAGE by defining the macro CFG on the command line. For example:
  !MESSAGE 
  !MESSAGE NMAKE /f "SampleDLL.mak" CFG="SampleDLL - Win32 Debug"
  !MESSAGE 
  !MESSAGE Possible choices for configuration are:
  !MESSAGE 
  !MESSAGE "SampleDLL - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
  !MESSAGE "SampleDLL - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
  !MESSAGE 
  
  # Begin Project
  # PROP AllowPerConfigDependencies 0
  # PROP Scc_ProjName ""
  # PROP Scc_LocalPath ""
  CPP=cl.exe
  MTL=midl.exe
  RSC=rc.exe
  
  !IF  "$(CFG)" == "SampleDLL - Win32 Release"
  
  # PROP BASE Use_MFC 0
  # PROP BASE Use_Debug_Libraries 0
  # PROP BASE Output_Dir "Release"
  # PROP BASE Intermediate_Dir "Release"
  # PROP BASE Target_Dir ""
  # PROP Use_MFC 0
  # PROP Use_Debug_Libraries 0
  # PROP Output_Dir "Release"
  # PROP Intermediate_Dir "Release"
  # PROP Target_Dir ""
  # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SAMPLEDLL_EXPORTS" /Yu"stdafx.h" /FD /c
  # ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SAMPLEDLL_EXPORTS" /Yu"stdafx.h" /FD /c
  # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
  # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
  # ADD BASE RSC /l 0x1009 /d "NDEBUG"
  # ADD RSC /l 0x1009 /d "NDEBUG"
  BSC32=bscmake.exe
  # ADD BASE BSC32 /nologo
  # ADD BSC32 /nologo
  LINK32=link.exe
  # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
  # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
  
  !ELSEIF  "$(CFG)" == "SampleDLL - Win32 Debug"
  
  # PROP BASE Use_MFC 0
  # PROP BASE Use_Debug_Libraries 1
  # PROP BASE Output_Dir "Debug"
  # PROP BASE Intermediate_Dir "Debug"
  # PROP BASE Target_Dir ""
  # PROP Use_MFC 0
  # PROP Use_Debug_Libraries 1
  # PROP Output_Dir "Debug"
  # PROP Intermediate_Dir "Debug"
  # PROP Target_Dir ""
  # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SAMPLEDLL_EXPORTS" /Yu"stdafx.h" /FD /GZ  /c
  # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SAMPLEDLL_EXPORTS" /Yu"stdafx.h" /FD /GZ  /c
  # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
  # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
  # ADD BASE RSC /l 0x1009 /d "_DEBUG"
  # ADD RSC /l 0x1009 /d "_DEBUG"
  BSC32=bscmake.exe
  # ADD BASE BSC32 /nologo
  # ADD BSC32 /nologo
  LINK32=link.exe
  # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
  # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
  
  !ENDIF 
  
  # Begin Target
  
  # Name "SampleDLL - Win32 Release"
  # Name "SampleDLL - Win32 Debug"
  # Begin Group "Source Files"
  
  # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
  # Begin Source File
  
  SOURCE=.\SampleDLL.cpp
  # End Source File
  # Begin Source File
  
  SOURCE=.\StdAfx.cpp
  # ADD CPP /Yc"stdafx.h"
  # End Source File
  # End Group
  # Begin Group "Header Files"
  
  # PROP Default_Filter "h;hpp;hxx;hm;inl"
  # Begin Source File
  
  SOURCE=.\SampleDLL.h
  # End Source File
  # Begin Source File
  
  SOURCE=.\StdAfx.h
  # End Source File
  # End Group
  # Begin Group "Resource Files"
  
  # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
  # End Group
  # End Target
  # End Project
  
  
  
  1.1                  apr-site/apr2_0intro/SampleDLL/SampleDLL.h
  
  Index: SampleDLL.h
  ===================================================================
  
  // The following ifdef block is the standard way of creating macros which make exporting 
  // from a DLL simpler. All files within this DLL are compiled with the SAMPLEDLL_EXPORTS
  // symbol defined on the command line. this symbol should not be defined on any project
  // that uses this DLL. This way any other project whose source files include this file see 
  // SAMPLEDLL_API functions as being imported from a DLL, wheras this DLL sees symbols
  // defined with this macro as being exported.
  #ifdef SAMPLEDLL_EXPORTS
  #define SAMPLEDLL_API __declspec(dllexport)
  #else
  #define SAMPLEDLL_API __declspec(dllimport)
  #endif
  
  // This class is exported from the SampleDLL.dll
  class SAMPLEDLL_API CSampleDLL {
  public:
  	CSampleDLL(void);
  	// TODO: add your methods here.
  };
  
  extern SAMPLEDLL_API int nSampleDLL;
  
  SAMPLEDLL_API int fnSampleDLL(void);
  
  
  
  
  1.1                  apr-site/apr2_0intro/SampleDLL/SampleDLL.plg
  
  Index: SampleDLL.plg
  ===================================================================
  <html>
  <body>
  <pre>
  <h1>Build Log</h1>
  <h3>
  --------------------Configuration: SampleDLL - Win32 Debug--------------------
  </h3>
  <h3>Command Lines</h3>
  
  
  
  <h3>Results</h3>
  SampleDLL.dll - 0 error(s), 0 warning(s)
  </pre>
  </body>
  </html>
  
  
  
  1.1                  apr-site/apr2_0intro/SampleDLL/StdAfx.cpp
  
  Index: StdAfx.cpp
  ===================================================================
  // stdafx.cpp : source file that includes just the standard includes
  //	SampleDLL.pch will be the pre-compiled header
  //	stdafx.obj will contain the pre-compiled type information
  
  #include "stdafx.h"
  
  // TODO: reference any additional headers you need in STDAFX.H
  // and not in this file
  
  
  
  1.1                  apr-site/apr2_0intro/SampleDLL/StdAfx.h
  
  Index: StdAfx.h
  ===================================================================
  // stdafx.h : include file for standard system include files,
  //  or project specific include files that are used frequently, but
  //      are changed infrequently
  //
  
  #if !defined(AFX_STDAFX_H__A176DC77_2707_4ABD_B447_16009521C210__INCLUDED_)
  #define AFX_STDAFX_H__A176DC77_2707_4ABD_B447_16009521C210__INCLUDED_
  
  #if _MSC_VER > 1000
  #pragma once
  #endif // _MSC_VER > 1000
  
  
  // Insert your headers here
  #define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
  
  #include <windows.h>
  
  // TODO: reference additional headers your program requires here
  
  //{{AFX_INSERT_LOCATION}}
  // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  
  #endif // !defined(AFX_STDAFX_H__A176DC77_2707_4ABD_B447_16009521C210__INCLUDED_)