From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Pascal Bourguignon Newsgroups: gmane.emacs.help Subject: Re: emacs function for writing C++ iterator loop Date: Fri, 29 Jun 2007 09:31:10 +0200 Organization: Informatimago Message-ID: <87ir97tdxd.fsf@informatimago.com> References: <1183078606.107965.201180@o61g2000hsh.googlegroups.com> <1183087377.597961.146510@n60g2000hse.googlegroups.com> <1183098937.627370.109140@u2g2000hsc.googlegroups.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1183102892 21920 80.91.229.12 (29 Jun 2007 07:41:32 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 29 Jun 2007 07:41:32 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Fri Jun 29 09:41:28 2007 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1I4B6d-0005m2-Ma for geh-help-gnu-emacs@m.gmane.org; Fri, 29 Jun 2007 09:41:27 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I4B6c-0000xQ-Sn for geh-help-gnu-emacs@m.gmane.org; Fri, 29 Jun 2007 03:41:26 -0400 Original-Path: shelby.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 43 Original-X-Trace: individual.net BleVGjs2JOd/iBM95/8hHQIeNPaLTtU1/uQP69LgHvfUxgJDUO Cancel-Lock: sha1:MTI4ZmNjZTNiNGQ0YmE3NzkzNmYyNGI3NWQwZGE0NTA5NmM3ZmM0ZA== sha1:U76ki0u68yYL+rhe9qI/c/YiUz8= Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9 033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR mV+hO/VvFAAAAABJRU5ErkJggg== X-Accept-Language: fr, es, en X-Disabled: X-No-Archive: no User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.1.50 (gnu/linux) Original-Xref: shelby.stanford.edu gnu.emacs.help:149755 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:45343 Archived-At: Mohitz writes: >> Hi >> This is probably a good starting point:http://www.emacswiki.org/cgi-bin/wiki/SkeletonMode >> Cheers, > > Thank you so much... Got it working :) > > I would post the solution in case it benefits someone else.. > > (define-skeleton generate-iterator-loop > "Generate Iterator Loop" > "" > > (setq v1 (skeleton-read "Iterate on? ")) "<" > > (setq v4 (skeleton-read "Class Name? ")) "> " > > (setq v2 (skeleton-read "Var Name? ")) " = " > > (setq v3 (skeleton-read "Points to? ")) ";" \n > > v1 "<" v4 ">::iterator " v2 "Iterate;" \n > > v2 "Iterate = " v2 ".begin();" \n > > "while (" v2 "Iterate != " v2 ".end())" \n > > "{" \n > > v4 " temp" v4 ";" \n > > "temp" v4 " = *" v2 "Iterate;" \n > > "//Do something with temp" v4 \n > > v2 "Iterate++;" \n > > "}" \n) The problem with skeletons is that it inserts the results, and you or your coworkers will edit it, so when the skeleton changes, the generated parts cannot be updated automatically. That's why macros (or preprocessors) are better: you edit only the true source, the macro call or the macro definition, and the code generated is updated everywhere. -- __Pascal Bourguignon__ http://www.informatimago.com/ NOTE: The most fundamental particles in this product are held together by a "gluing" force about which little is currently known and whose adhesive power can therefore not be permanently guaranteed.