Revision c206b9035f722ce969cde24cacd05182e6434754 authored by Mohamed Barakat on 08 July 2015, 14:52:28 UTC, committed by Mohamed Barakat on 09 July 2015, 16:29:50 UTC
1 parent e2f711d
polymake_fktn.cpp
#include "polymake_fktn.h"
Obj REAL_IS_SIMPLICIAL_OBJECT( Polymake_Data* data, Obj cone ){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(cone) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return NULL;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( cone );
data->main_polymake_session->set_application_of(*coneobj);
bool i;
try{
coneobj->give("SIMPLICIAL") >> i;
}
POLYMAKE_GAP_CATCH
if(i) return True; return False;
}
Obj REAL_IS_LATTICE_OBJECT( Polymake_Data* data, Obj cone ){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(cone) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return NULL;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( cone );
data->main_polymake_session->set_application_of(*coneobj);
bool i;
try{
coneobj->give("LATTICE") >> i;
}
POLYMAKE_GAP_CATCH
if(i) return True; return False;
}
Obj REAL_IS_NORMAL_OBJECT( Polymake_Data* data, Obj cone ){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(cone) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return NULL;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( cone );
data->main_polymake_session->set_application_of(*coneobj);
bool i;
try{
coneobj->give("NORMAL") >> i;
}
POLYMAKE_GAP_CATCH
if(i) return True; return False;
}
Obj REAL_IS_SMOOTH_OBJECT( Polymake_Data* data, Obj cone ){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(cone) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return NULL;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( cone );
data->main_polymake_session->set_application_of(*coneobj);
bool i;
try{
coneobj->give("SMOOTH") >> i;
}
POLYMAKE_GAP_CATCH
if(i) return True; return False;
}
Obj REAL_IS_VERYAMPLE_OBJECT( Polymake_Data* data, Obj cone ){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(cone) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return NULL;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( cone );
data->main_polymake_session->set_application_of(*coneobj);
bool i;
try{
coneobj->give("VERY_AMPLE") >> i;
}
POLYMAKE_GAP_CATCH
if(i) return True; return False;
}
Obj REAL_OBJECT_HAS_PROPERTY( Polymake_Data* data, Obj cone, const char* prop ){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(cone) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return NULL;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( cone );
data->main_polymake_session->set_application_of(*coneobj);
bool i;
try{
coneobj->give(prop) >> i;
}
POLYMAKE_GAP_CATCH
if(i) return True; return False;
}
Obj REAL_OBJECT_HAS_INT_PROPERTY( Polymake_Data* data, Obj cone, const char* prop ){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(cone) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return NULL;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( cone );
data->main_polymake_session->set_application_of(*coneobj);
int i;
try{
coneobj->give(prop) >> i;
}
POLYMAKE_GAP_CATCH
return INTOBJ_INT( i );
}
Obj REAL_POLYMAKE_DRAW( Polymake_Data* data, Obj cone ){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(cone) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return NULL;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( cone );
data->main_polymake_session->set_application_of(*coneobj);
try{
coneobj->VoidCallPolymakeMethod("VISUAL");
}
POLYMAKE_GAP_CATCH
return True;
}
void REAL_SET_PROPERTY_TRUE( Polymake_Data* data, Obj conv, const char* prop){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(conv) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( conv );
data->main_polymake_session->set_application_of(*coneobj);
try{
coneobj->take(prop) << true;
}
POLYMAKE_GAP_CATCH
}
Obj REAL_POLYMAKE_SKETCH( Polymake_Data* data, Obj cone ){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(cone) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return NULL;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( cone );
data->main_polymake_session->set_application_of(*coneobj);
try{
VoidCallPolymakeFunction( "sketch", coneobj->CallPolymakeMethod("VISUAL") );
}
POLYMAKE_GAP_CATCH
return True;
}
Obj REAL_POLYMAKE_SKETCH_WITH_OPTIONS( Polymake_Data* data, Obj cone, Obj filename, Obj options ){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(cone) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return NULL;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( cone );
data->main_polymake_session->set_application_of(*coneobj);
pm::perl::Hash sketch_options;
if( IS_STRING( filename ) ){
sketch_options["File"] << CSTR_STRING( filename );
}
pm::perl::Hash visual_options;
if( IS_PLIST( options ) ){
for( int i = 1; i <= LEN_PLIST( options ); i++ ){
Obj current_option = ELM_PLIST( options, i );
Obj description = ELM_PLIST( current_option, 1 );
if( ! IS_STRING( description ) ){
ErrorMayQuit("first entry in option entry is not a string",0,0);
return NULL;
}
Obj content = ELM_PLIST( current_option, 2 );
if( IS_STRING( content ) ){
visual_options[ CSTR_STRING( description ) ] << CSTR_STRING( content );
}else{
if( IS_PLIST( content ) ){
pm::Integer* cont = new pm::Integer[ LEN_PLIST( content ) ];
for( int j = 1; j <= LEN_PLIST( content ); j++ ){
Obj elem = ELM_PLIST( content, j );
if( ! IS_INTOBJ( elem ) ){
ErrorMayQuit("entry of option array is not an integer",0,0);
return NULL;
}
cont[ j - 1 ] = INT_INTOBJ( elem );
}
visual_options[ CSTR_STRING( description ) ] << cont;
}
}
}
}
try{
VoidCallPolymakeFunction( "sketch", coneobj->CallPolymakeMethod("VISUAL", visual_options), sketch_options );
}
POLYMAKE_GAP_CATCH
return True;
}
Obj REAL_POLYMAKE_PROPERTIES( Polymake_Data* data, Obj cone ){
#ifdef MORE_TESTS
if(! IS_POLYMAKE_OBJECT(cone) ){
ErrorMayQuit(" parameter is not a polymake object.",0,0);
return NULL;
}
#endif
perlobj* coneobj = PERLOBJ_POLYMAKEOBJ( cone );
data->main_polymake_session->set_application_of(*coneobj);
try{
coneobj->VoidCallPolymakeMethod("properties");
}
POLYMAKE_GAP_CATCH
return True;
}
Computing file changes ...