From: David S. <dsc...@vi...> - 2002-01-18 20:43:26
|
I do not think the backslashes you deleted were "stray backslashes". They continue a line in a macro expansion by "escaping" the subsequent line feed character. What you are probably seeing is a file with Windows \r\n line terminators. The preprocessor sees "\\\r" and complains. You can probably fix this by replacing the backslashes and fixing the line terminators. There's a script that comes with Python to do it; there are also common tools like 'dos2unix'; and in a pinch you can roll your own with something like x = re.sub(r'\r\n',r'\n',open('cvisual.cpp','rb').read()) open('cvisual.cpp','wb').write(x) In a pinch, just delete the backslashes and cram the whole CALLF macro onto one line. Dave > -----Original Message----- > From: vis...@li... > [mailto:vis...@li...] On > Behalf Of Coleman Mosley MD FACP > Sent: Friday, January 18, 2002 3:30 PM > To: David Andersen; Andy Dougherty; Kevin Cole; Andrew > Williams; Konrad Piwowarczyk > Cc: vis...@li... > Subject: Re: [Visualpython-users] gtkgl library > > > Thanks to all of you for your replies. I'm closer but is is > not working yet. > With rpm2cpio, it did not seem to translate. I donwloaded > the ...src.rpm > and converted it. The original make produced an error that > there were stray > "\" in the file cvisual.cpp. This was actually a problem > listed on the > vpython archives from last Nov, unfortunately the solution > for that person > was to use the binary code. Catch-22 for me. > So I edited the file mad delted the stray backslashes. > Below is the new > error message. I do not know c,c++ beyond minial use so do > not know how to > correct the source file. > Ths current version of this file is also attached. > Any suggestions or corrections would be appreciated. It > seems that this is a > bug for any linux OS (see the nov message if interested) > trying to compile > from source rather than binary. > Thanks for the assistance. > Coleman > > > Error message: > g++ -g -I. -I./CXX/Include -I/usr/include/python2.1 > -I/usr/include/python2.1/Numeric `gtk-config --cflags gtk > gthread` -w -c -o > cvisual.o cvisual.cpp > cvisual.cpp: In method `cvisual_module::cvisual_module()': > cvisual.cpp:111: `create_vector' is not a member of type > `cvisual_module' > cvisual.cpp:112: `create_immutableVector' is not a member of type > `cvisual_module' > cvisual.cpp:113: `vector_mag' is not a member of type `cvisual_module' > cvisual.cpp:114: `vector_norm' is not a member of type > `cvisual_module' > cvisual.cpp:115: `vector_cross' is not a member of type > `cvisual_module' > cvisual.cpp:116: `vector_rotate' is not a member of type > `cvisual_module' > cvisual.cpp:124: `create_box' is not a member of type `cvisual_module' > cvisual.cpp:125: `create_sphere' is not a member of type > `cvisual_module' > cvisual.cpp:126: `create_ring' is not a member of type > `cvisual_module' > cvisual.cpp:127: `create_cylinder' is not a member of type > `cvisual_module' > cvisual.cpp:128: `create_cone' is not a member of type > `cvisual_module' > cvisual.cpp:129: `create_arrow' is not a member of type > `cvisual_module' > cvisual.cpp:130: `create_hexahedron' is not a member of type > `cvisual_module' > cvisual.cpp:131: `create_curve' is not a member of type > `cvisual_module' > cvisual.cpp:132: `create_convex' is not a member of type > `cvisual_module' > cvisual.cpp:133: `create_frame' is not a member of type > `cvisual_module' > cvisual.cpp:134: `create_label' is not a member of type > `cvisual_module' > cvisual.cpp:135: `create_faces' is not a member of type > `cvisual_module' > make: *** [cvisual.o] Error 1 > > cvisual.cpp (the stray \ 's removed from the Object what in > CALLF): #include "cvisual.h" #include "display.h" #include > "mouseobject.h" #include "gldevice.h" #include "prim.h" > #include "arrprim.h" #include "label.h" #include "rate.h" > > const char * copyright = "Copyright 2000 David Scherer. All Rights > Reserved."; > > Object create_sphere(const Tuple& args, const Dict& kwargs); > Object create_ring(const Tuple& args, const Dict& kwargs); > Object create_box(const Tuple& args, const Dict& kwargs); > Object create_cylinder(const Tuple& args, const Dict& > kwargs); Object create_cone(const Tuple& args, const Dict& > kwargs); Object create_arrow(const Tuple& args, const Dict& > kwargs); Object create_hexahedron(const Tuple& args, const > Dict& kwargs); Object create_curve(const Tuple& args, const > Dict& kwargs); Object create_convex(const Tuple& args, const > Dict& kwargs); Object create_frame(const Tuple& args, const > Dict& kwargs); Object create_label(const Tuple& args, const > Dict& kwargs); Object create_faces(const Tuple& args, const > Dict& kwargs); > > #define CALLF(what) > Object what(const Tuple& args, const Dict& kwargs) { > return ::what(args,kwargs); > } > > #define CREATEF(what) CALLF(create_##what) > > class cvisual_module : public ExtensionModule<cvisual_module> { > public: > cvisual_module(); > > virtual ~cvisual_module() {} > > private: > Object create_display(const Tuple& args, const Dict& kwargs) { > Display *d = new Display(*new GLDevice()); > return init(d,args,kwargs); > } > > Object handle_event(const Tuple& args, const Dict& kwargs) { > return Int(::handle_event(*args[0])); > } > > Object shutdown(const Tuple& args, const Dict& kwargs) { > Display::shutdown(); > return Nothing(); > } > > Object waitclose(const Tuple& args, const Dict& kwargs) { > Display::waitclose(); > return Nothing(); > } > > Object allclosed(const Tuple& args, const Dict& kwargs) { > return Int( Display::allclosed() ? 1 : 0 ); > } > > Object rate(const Tuple& args, const Dict& kwargs) { > if (args.length() != 1) throw TypeError("Incorrect number of > arguments."); > > float freq = Float(args[0]); > if (freq<=0.0) throw ValueError("Frequency must be positive."); > > static rate_timer *rt; > if (!rt) rt = new rate_timer(); > > rt->delay(1.0 / freq); > > return Nothing(); > } > > CREATEF(hexahedron); > CREATEF(curve); > CREATEF(convex); > CREATEF(frame); > CREATEF(label); > CREATEF(box); > CREATEF(sphere); > CREATEF(ring); > CREATEF(cylinder); > CREATEF(cone); > CREATEF(arrow); > CREATEF(faces); > CREATEF(vector); > CREATEF(immutableVector); > CALLF(vector_mag); > CALLF(vector_norm); > CALLF(vector_cross); > CALLF(vector_rotate); > }; > > cvisual_module::cvisual_module() > : ExtensionModule<cvisual_module>("cvisual") > { > init_platform(); > > import_array(); > > Vector::init_type(); > clickObject::init_type(); > mouseObject::init_type(); > Display::init_type(); > Primitive::init_type(); > ArrayPrimitive::init_type(); > Label::init_type(); > > add_keyword_method("vector", &cvisual_module::create_vector, > "vector([x,y[,z]]) = [x,y,z]"); > add_keyword_method("constant_vector", > &cvisual_module::create_immutableVector, > "constant_vector([x,y[,z]]) = > (x,y,z)"); > add_keyword_method("mag", &cvisual_module::vector_mag, > "mag(v) = |v|"); > add_keyword_method("norm", &cvisual_module::vector_norm, > "norm(v) = v/|v|"); > add_keyword_method("cross", &cvisual_module::vector_cross, > "cross(a,b) = a > x b"); > add_keyword_method("rotate", > &cvisual_module::vector_rotate, "rotate(v, > angle=radians, axis=[0,0,1]) rotates v angle radians around axis"); > > add_keyword_method("shutdown", &cvisual_module::shutdown, ""); > add_keyword_method("waitclose", &cvisual_module::waitclose, ""); > add_keyword_method("allclosed", &cvisual_module::allclosed, ""); > add_keyword_method("rate", &cvisual_module::rate, ""); > > add_keyword_method("display", &cvisual_module::create_display, ""); > add_keyword_method("box", &cvisual_module::create_box, ""); > add_keyword_method("sphere", &cvisual_module::create_sphere, ""); > add_keyword_method("ring", &cvisual_module::create_ring, ""); > add_keyword_method("cylinder", > &cvisual_module::create_cylinder, ""); > add_keyword_method("cone", &cvisual_module::create_cone, ""); > add_keyword_method("arrow", &cvisual_module::create_arrow, ""); > add_keyword_method("hexahedron", > &cvisual_module::create_hexahedron, ""); > add_keyword_method("curve", &cvisual_module::create_curve, ""); > add_keyword_method("convex", &cvisual_module::create_convex, ""); > add_keyword_method("frame", &cvisual_module::create_frame, ""); > add_keyword_method("label", &cvisual_module::create_label, ""); > add_keyword_method("faces", &cvisual_module::create_faces, ""); > add_keyword_method("_handleevent", > &cvisual_module::handle_event, ""); > > initialize("cvisual module - visual implementation in C++"); > > Dict d = moduleDictionary(); > d["VectorType"] = Type((PyObject*)Vector::type_object()); > } > > > extern "C" > void cvisual_DLL initcvisual() { > new cvisual_module(); > } > > _______________________________________________ > Visualpython-users mailing list > Vis...@li... > https://lists.sourceforge.net/lists/listinfo/visualpython-users > |