prefix = infile_name[:-len(roslib.srvs.EXT)] # generate message files for request/response name, spec = roslib.srvs.load_from_file(f, package) base_name = roslib.names.resource_name_base(name) outfile = self.outfile_name(outdir, f) f = open(outfile, 'w') if verbose: print "... generating %s"%outfile try: for mspec, suffix in ((spec.request, REQUEST), (spec.response, RESPONSE)): #outfile = os.path.join(outdir, prefix+suffix+".py") #gen = roslib.genpy.msg_generator(package, name+suffix, mspec) #self.write_gen(outfile, gen, roslib.srvs.is_verbose()) for l in roslib.genpy.msg_generator(package, base_name+suffix, mspec): f.write(l+'\n') # generate service file #outfile = os.path.join(outdir, prefix+".py") #self.write_gen(outfile, srv_generator(package, name, spec), verbose) for l in srv_generator(package, base_name, spec): f.write(l+'\n') finally: f.close() return outfile if __name__ == "__main__": roslib.srvs.set_verbose(False) genutil.genmain(sys.argv, SrvGenerator())
def generate(self, package, f, outdir): """ Generate python message code for a single .msg file @param f: path to .msg file @type f: str @param outdir: output directory for generated code @type outdir: str @return: filename of generated Python code @rtype: str """ verbose = True f = os.path.abspath(f) infile_name = os.path.basename(f) outfile_name = self.outfile_name(outdir, infile_name) (name, spec) = roslib.msgs.load_from_file(f, package) base_name = roslib.names.resource_name_base(name) self.write_gen(outfile_name, roslib.genpy.msg_generator(package, base_name, spec), verbose) roslib.msgs.register(name, spec) return outfile_name if __name__ == "__main__": roslib.msgs.set_verbose(False) genutil.genmain(sys.argv, GenmsgPackage())
# * Neither the name of Willow Garage, Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. """ ROS message source code generation for rospy. Converts ROS .srv files into Python source code implementations. """ import sys # genutil is a utility package the implements the package crawling # logic of genmsg_py and gensrv_py logic import genutil if __name__ == "__main__": genutil.genmain(sys.argv, 'srv')
# contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. """ ROS message source code generation for Python Converts ROS .msg files in a package into Python source code implementations. """ import sys # genutil is a utility package the implements the package crawling # logic of genmsg_py and gensrv_py logic import genutil if __name__ == "__main__": genutil.genmain(sys.argv, 'msg')
def __init__(self): super(GenmsgPackage, self).__init__( 'genmsg_py', 'messages', roslib.msgs.EXT, roslib.packages.MSG_DIR, roslib.genpy.MsgGenerationException) def generate(self, package, f, outdir): """ Generate python message code for a single .msg file @param f: path to .msg file @type f: str @param outdir: output directory for generated code @type outdir: str @return: filename of generated Python code @rtype: str """ verbose = True f = os.path.abspath(f) infile_name = os.path.basename(f) outfile_name = self.outfile_name(outdir, infile_name) (name, spec) = roslib.msgs.load_from_file(f, package) base_name = roslib.names.resource_name_base(name) self.write_gen(outfile_name, roslib.genpy.msg_generator(package, base_name, spec), verbose) roslib.msgs.register(name, spec) return outfile_name if __name__ == "__main__": roslib.msgs.set_verbose(False) genutil.genmain(sys.argv, GenmsgPackage())