Added some files, compiled some stuff in VC++, and finished eoOpSelMason

This commit is contained in:
jmerelo 1999-02-10 17:14:08 +00:00
commit 11be20aefa
14 changed files with 353 additions and 74 deletions

View file

@ -17,6 +17,7 @@
* based on STL's bit_vector (vector<bool>). * * based on STL's bit_vector (vector<bool>). *
*****************************************************************************/ *****************************************************************************/
template <class F> class eoBin: public eoVector<bool, F> template <class F> class eoBin: public eoVector<bool, F>
{ {
public: public:
@ -37,14 +38,9 @@ template <class F> class eoBin: public eoVector<bool, F>
generate(begin(), end(), rnd); generate(begin(), end(), rnd);
} }
/** /// Constructor from istream.
* Constructor from istream. /// @param is The istream to read from.
* @param is The istream to read from. eoBin(istream& _is):eoVector<bool,F>(_is){};
*/
eoBin(istrstream& is)
{
readFrom(is);
}
/// My class name. /// My class name.
string className() const string className() const

View file

@ -10,16 +10,23 @@
#include <eoBin.h> // eoBin #include <eoBin.h> // eoBin
#include <eoOp.h> // eoMonOp #include <eoOp.h> // eoMonOp
#ifdef _MSC_VER
#define min _MIN
#define max _MAX
#endif
/** @name BitWise Genetic operators
//----------------------------------------------------------------------------- Even as these operators might seem general, they are particular versions of genetic
// eoBinRandom --> mofify a chromosome in a random way operators useful only for binary operators. As any set of genetic operators, it must
//----------------------------------------------------------------------------- have a factory that knows how to build them from a description
@author GeNeura Team
@version 0.1
@see eoBin
@see eoBitOpFactory
*/
//@{
/**
eoBinRandom --> mofify a chromosome in a random way
*/
template<class Chrom> class eoBinRandom: public eoMonOp<Chrom> template<class Chrom> class eoBinRandom: public eoMonOp<Chrom>
{ {
public: public:
@ -345,5 +352,5 @@ template<class Chrom> class eoBinUxOver: public eoBinOp<Chrom>
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//@}
#endif eoBitOp_h #endif eoBitOp_h

41
eo/src/eoData.h Normal file
View file

@ -0,0 +1,41 @@
//-----------------------------------------------------------------------------
// eoData.h
//-----------------------------------------------------------------------------
#ifndef EODATA_H
#define EODATA_H
//-----------------------------------------------------------------------------
#include <vector> // vector
#include <set> // set
#include <string> // string
using namespace std;
#ifdef _MSC_VER
#include <limits> // MAXDOUBLE
#define MAXFLOAT numeric_limits<float>::max()
#define MINFLOAT numeric_limits<float>::min()
#define MAXDOUBLE numeric_limits<double>::max()
#define MAXINT numeric_limits<int>::max()
#define min _MIN
#define max _MAX
#else
#include <limits.h>
#ifndef MAXFLOAT
#define MAXFLOAT (float)1e127
#define MAXDOUBLE (double)1.79769313486231570e+308
#define MAXINT 2147483647
#endif
#endif
#ifndef _MSC_VER
#include <math.h>
#define _isnan isnan
#endif
//-----------------------------------------------------------------------------
#endif npi_DATATYPES_H

View file

@ -11,45 +11,40 @@
/****************************************************************************** /******************************************************************************
* eoInsertion: A replacement algorithm. * eoInsertion: A replacement algorithm.
* Creates a new population with all the breeders and the best individuals * Takes two populations: breeders and original populations. At the en of the
* from the original population. * process, the original population has chenge in the followin way:
* (1) the worst individuals haa been erased
* (2) the best individuals from the breeders has been added
*****************************************************************************/ *****************************************************************************/
template<class Chrom> class eoInsertion: public eoMerge<Chrom> template<class Chrom> class eoInsertion: public eoMerge<Chrom>
{ {
public: public:
/// (Default) Constructor. /// (Default) Constructor.
eoInsertion(const float& _rate = 1.0): eoMerge(_rate) {} eoInsertion(const float& _rate = 1.0): eoMerge<Chrom>(_rate) {}
/** /**
* Creates a new population based on breeders and original populations. * Creates a new population based on breeders and original population
* @param breeders The population of breeders. * @param breeders The population of breeders.
* @param pop The original population. * @param pop The original population.
*/ */
void operator()(const eoPop<Chrom>& breeders, eoPop<Chrom>& pop) void operator()(const eoPop<Chrom>& breeders, eoPop<Chrom>& pop)
{ {
int new_size = static_cast<int>(pop.size() * rate());
cout << "new_size = " << new_size << endl;
if (new_size == breeders.size())
{
pop = breeders;
}
else if (new_size < breeders.size())
{
pop = breeders;
sort(pop.begin(), pop.end()); sort(pop.begin(), pop.end());
pop.erase(pop.begin(), pop.begin() - new_size + pop.size());
} if (rated() > 1)
pop.erase(pop.end() +
(int)(pop.size() * (rate() - 1) - breeders.size()),
pop.end());
else else
{ {
sort(pop.begin(), pop.end()); cout << "eoInsertion no funciona con rate < 1"
pop.erase(pop.begin(), exit(1);
pop.begin() + breeders.size() + pop.size() - new_size); }
copy(breeders.begin(), breeders.end(), copy(breeders.begin(), breeders.end(),
back_insert_iterator<eoPop<Chrom> >(pop)); back_insert_iterator<eoPop<Chrom> >(pop));
} }
}
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

View file

@ -9,7 +9,6 @@
#include <functional> #include <functional>
#include <values.h> // MINFLOAT
#include <numeric> // accumulate #include <numeric> // accumulate
#include <eo> // eoPop eoSelect #include <eo> // eoPop eoSelect

View file

@ -10,6 +10,7 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
#include <eoData.h> // For limits definition
#include <iostream> // istream, ostream #include <iostream> // istream, ostream
#include <string> // para string #include <string> // para string

View file

@ -16,9 +16,13 @@
What is a genetic algorithm without genetic operators? There is a genetic operator hierarchy, with What is a genetic algorithm without genetic operators? There is a genetic operator hierarchy, with
eoOp as father and eoMonOp (monary or unary operator) and eoBinOp (binary operator) as siblings. Nobody eoOp as father and eoMonOp (monary or unary operator) and eoBinOp (binary operator) as siblings. Nobody
should subclass eoOp, you should subclass eoBinOp or eoMonOp, those are the ones actually used here. should subclass eoOp, you should subclass eoBinOp or eoMonOp, those are the ones actually used here.\\
#eoOp#s are only printable objects, so if you want to build them from a file, it has to
be done in another class, namely factories. Each hierarchy of #eoOp#s should have its own
factory, which know how to build them from a description in a file.
@author GeNeura Team @author GeNeura Team
@version 0.0 @version 0.1
@see eoOpFactory
*/ */
//@{ //@{
@ -57,7 +61,7 @@ public:
*/ */
virtual void printOn(ostream& _os) const { virtual void printOn(ostream& _os) const {
_os << className(); _os << className();
_os << arity; // _os << arity;
}; };
/** Inherited from eoObject /** Inherited from eoObject

View file

@ -60,7 +60,7 @@ public:
throw objectTypeStr; throw objectTypeStr;
} }
return opPtr; return opPtr;
} };
}; };

View file

@ -9,7 +9,10 @@
#define _EOOPSELMASON_H #define _EOOPSELMASON_H
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
#include <eoOpSelector.h> #include <eoProportionalOpSel.h>
#include <eoOpFactory.h> // for eoFactory and eoOpFactory
#include <map>
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -19,14 +22,16 @@ template<class eoClass>
class eoOpSelMason: public eoFactory<eoOpSelector<eoClass> > { class eoOpSelMason: public eoFactory<eoOpSelector<eoClass> > {
public: public:
typedef vector<eoOp<eoClass>* > vOpP;
typedef map<eoOpSelector<eoClass>*, vOpP > MEV;
/// @name ctors and dtors /// @name ctors and dtors
//{@ //{@
/// constructor /// constructor
eoOpSelMason( ) {} eoOpSelMason( eoOpFactory<eoClass>& _opFact): operatorFactory( _opFact ) {};
/// destructor /// destructor
virtual ~eoOpSelMason() {} virtual ~eoOpSelMason() {};
//@} //@}
/** Factory methods: creates an object from an istream, reading from /** Factory methods: creates an object from an istream, reading from
@ -41,33 +46,47 @@ public:
from outside, using the #destroy# method from outside, using the #destroy# method
*/ */
virtual eoOpSelector<eoClass>* make(istream& _is) { virtual eoOpSelector<eoClass>* make(istream& _is) {
string opSelName; string opSelName;
_is >> opSelName; _is >> opSelName;
eoMonOpFactory<eoClass> selMaker; eoOpSelector<eoClass>* opSelectorP;
// Build the operator selector
if ( opSelName == "eoProportionalOpSel" ) {
opSelectorP = new eoProportionalOpSel<eoClass>();
}
// Temp vector for storing pointers
vOpP tmpPVec;
// read operator rate and name // read operator rate and name
while ( _is ) { while ( _is ) {
float rate; float rate;
_is >> rate; _is >> rate;
if ( _is ) {
eoOp<eoClass>* op = operatorFactory.make( _is ); // This reads the rest of the line
// Add the operators to the selector, don´t pay attention to the IDs
opSelectorP->addOp( *op, rate );
// Keep it in the store, to destroy later
tmpPVec.push_back( op );
} // if
} // while
// Put it in the map
allocMap.insert( MEV::value_type( opSelectorP, tmpPVec ) );
// Create an stream return opSelectorP;
strstream s0; };
eoMonOp<IEO>* op0 = selMaker.make( s0 );
}
}
///@name eoObject methods ///@name eoObject methods
//@{ //@{
/** Return the class id */ /** Return the class id */
virtual string className() const { return "eoFactory"; } virtual string className() const { return "eoOpSelMason"; }
/** Read and print are left without implementation */
//@} //@}
private: private:
map<eoOpSelector<eoClass>*,vector<eoOp<eoClass>* > > allocMap; map<eoOpSelector<eoClass>*,vector<eoOp<eoClass>* > > allocMap;
eoOpFactory<eoClass>& operatorFactory;
}; };
#endif _EOFACTORY_H #endif _EOOPSELMASON_H

View file

@ -15,18 +15,6 @@ Package=<4>
############################################################################### ###############################################################################
Project: "prueba"=.\prueba\prueba.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "t_eoaged"=.\t_eoaged.dsp - Package Owner=<4> Project: "t_eoaged"=.\t_eoaged.dsp - Package Owner=<4>
Package=<5> Package=<5>
@ -75,6 +63,18 @@ Package=<4>
############################################################################### ###############################################################################
Project: "t_eoinsertion"=.\t_eoinsertion.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "t_eornd"=.\t_eornd.dsp - Package Owner=<4> Project: "t_eornd"=.\t_eornd.dsp - Package Owner=<4>
Package=<5> Package=<5>
@ -195,6 +195,18 @@ Package=<4>
############################################################################### ###############################################################################
Project: "t_opselmason"=.\t_opselmason.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "t_pop"=.\t_pop.dsp - Package Owner=<4> Project: "t_pop"=.\t_pop.dsp - Package Owner=<4>
Package=<5> Package=<5>

100
eo/win/t_eoinsertion.dsp Normal file
View file

@ -0,0 +1,100 @@
# Microsoft Developer Studio Project File - Name="t_eoinsertion" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=t_eoinsertion - 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 "t_eoinsertion.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 "t_eoinsertion.mak" CFG="t_eoinsertion - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "t_eoinsertion - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "t_eoinsertion - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "t_eoinsertion - 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 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0xc0a /d "NDEBUG"
# ADD RSC /l 0xc0a /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 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 /subsystem:console /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 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 /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "t_eoinsertion - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "t_eoinsertion___Win32_Debug"
# PROP BASE Intermediate_Dir "t_eoinsertion___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "t_eoinsertion___Win32_Debug"
# PROP Intermediate_Dir "t_eoinsertion___Win32_Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0xc0a /d "_DEBUG"
# ADD RSC /l 0xc0a /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 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 /subsystem:console /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 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 /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "t_eoinsertion - Win32 Release"
# Name "t_eoinsertion - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE="..\test\t-eoinsertion.cpp"
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# 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

View file

@ -65,7 +65,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
# ADD BASE RSC /l 0xc0a /d "_DEBUG" # ADD BASE RSC /l 0xc0a /d "_DEBUG"
# ADD RSC /l 0xc0a /d "_DEBUG" # ADD RSC /l 0xc0a /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe

101
eo/win/t_opselmason.dsp Normal file
View file

@ -0,0 +1,101 @@
# Microsoft Developer Studio Project File - Name="t_opselmason" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=t_opselmason - 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 "t_opselmason.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 "t_opselmason.mak" CFG="t_opselmason - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "t_opselmason - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "t_opselmason - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "t_opselmason - 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 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0xc0a /d "NDEBUG"
# ADD RSC /l 0xc0a /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 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 /subsystem:console /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 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 /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "t_opselmason - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "t_opselmason___Win32_Debug"
# PROP BASE Intermediate_Dir "t_opselmason___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "t_opselmason___Win32_Debug"
# PROP Intermediate_Dir "t_opselmason___Win32_Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
# ADD BASE RSC /l 0xc0a /d "_DEBUG"
# ADD RSC /l 0xc0a /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 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 /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 eo.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib 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 /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "t_opselmason - Win32 Release"
# Name "t_opselmason - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\test\t_opselmason.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# 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

View file

@ -86,6 +86,10 @@ LINK32=link.exe
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File # Begin Source File
SOURCE=..\test\t_opselmason.cpp
# End Source File
# Begin Source File
SOURCE=..\test\t_pop.cpp SOURCE=..\test\t_pop.cpp
# End Source File # End Source File
# End Group # End Group