On Sep 30, 8:58 pm, [EMAIL PROTECTED] (Allswellthatendswell)
wrote:
>    We are trying to use SWIG 1.3.36 with perl  5.8.8 and the Visual
> Studio C++ 2005 compiler. The header file used in our mdMatchup.i file
> is shown below. In our mdMatchup.i , we are using the module
> mdMatchupTest. We ran swig -c++ -perl mdMatchup.i and obtained
> mdMatchup.pm and mdMatchup_wrap.cxx.
>        We read that SWIG Perl can handle C++ enumerations. But, when
> we try to use the C++ enumerations in our test.pl program we get run
> time errors. We were wondering whether we should write our own perl xs
> module or whether we should use swig -c++ perl. Here is the perl test
> program:
>
> #!perl.exe -w
> use strict;
> use mdMatchupTest;
>
> my $readwrite;
> $readwrite = mdMatchupTestc::new_mdMUReadWrite();
>
> mdMatchupTestc::mdMUReadWrite_SetLicenseString($readwrite,"LL58JH2Y");
> mdMatchupTestc::mdMUReadWrite_SetPathToMatchUpFiles($readwrite,"C:\
> \MatchupAPI\\Distribution");
> if (mdMatchupTestc::mdMUReadWrite_InitializeDataFiles($readwrite) !=
> $mdMatchupc::mdMUReadWrite_NoError ){
>  print( "Failed to Initialize mdMatchupTestc::mdMUReadWrite ",
>   mdMatchupTestc::mdMUReadWrite_GetInitializeErrorString($readwrite).
> "\n");
>
> }
>
> we get the Perl interprepter message : Name
> "mdMatchupc::mdMUReadWrite_NoError" used only once: possible typo at
> test.pl line 10
> Use of uninitialized value in numeric ne (!=) at test.pl line 10.
>   When we examine the mdMatchup.pm,  we see that
> mdMatchupc::mdMUReadWrite_NoError looks like a string. An excerpt of
> mdMatchup.pm is shown below.
>   Is there a correct way to use SWIG packages with C++ enumerations in
> our perl program or should we hand code a Perl XS script to accomplish
> this task? Thank you.
>
> -------------------------------------
> mdMatchup.pm---------------------------------
> ############# Class : mdMatchupTest::mdMUReadWrite ##############
> package mdMatchupTest::mdMUReadWrite;
> use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
> @ISA = qw( mdMatchupTest );
> %OWNER = ();
> %ITERATORS = ();
> *NoError = *mdMatchupTestc::mdMUReadWrite_NoError;
> *ConfigFile = *mdMatchupTestc::mdMUReadWrite_ConfigFile;
> -------------------------------------
> mdMatchup.h------------------------------------
> /*
> * C++ version of interface
> */
> class MDAPI mdMUReadWrite
> {
> protected:
> struct mdMUReadWrite_ *I;
> private: /* disable implicit constructor and assignment */
> mdMUReadWrite(mdMUReadWrite &X);
> mdMUReadWrite& operator=(mdMUReadWrite &X);
> public:
> enum ProgramStatus {
> NoError=0,
> ConfigFile=1,
> LicenseExpired=2,
> DatabaseExpired=3
>
> };
>
> mdMUReadWrite();
> ~mdMUReadWrite();
>
> /* Setup methods */
> void SetPathToMatchUpFiles(const char *Path);
> void SetMatchcodeName(const char *MatchcodeName);
> void SetMatchcodeObject(mdMUMatchcode *Matchcode);
> void SetKeyFile(const char *KeyFile);
> enum ProgramStatus InitializeDataFiles();
>
>
>
> };- Hide quoted text -
>
> - Show quoted text -

I fixed the Perl XS C++ enumeration problem today. Thank you.

Reply via email to