/jEdit/tags/jedit-4-2-pre1/macros/Misc/Include_Guard.bsh
# · Unknown · 96 lines · 88 code · 8 blank · 0 comment · 0 complexity · 9cb8377133ab4bd4e13dbb3086624e9c MD5 · raw file
- /*
- * Include_Guard.bsh - a BeanShell macro script for the
- * jEdit text editor - for C/C++ header files: inserts preprocessor
- * directive in current buffer to ensure that header is included only
- * once per compilation unit
- * Copyright (C) 2001 John Gellene
- * jgellene@nyc.rr.com
- * http://community.jedit.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with the jEdit program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Id: Include_Guard.bsh 3873 2001-11-06 17:57:35Z jgellene $
- *
- * Notes on use:
- *
- * An "include guard" is a conventional mechanism for reducing
- * compilation time for C/C++ source files by ensuring that the
- * substance of a header file is read by the preprocessor only once
- * for each compilation unit. The usual reason this is necessary is
- * the presence of nested include files, sometimes an unavoidable
- * circumstance when creating a hierarchy of classes.
- *
- * To use the macro, first place the caret at the beginning of the header
- * file before any uncommented text. The macro returns to this position
- * upon completion.
- *
- * The macro will complain if you have not yet named the buffer, but it
- * does not check to see if the buffer is actually a header file.
- *
- * The defined term that triggers the guard is taken from the buffer's
- * name. This is one conventional approach and should not cause a conflict
- * unless a compilation unit includes header files from different
- * directories with the same name. In that case, change the conflicting
- * guard names manually.
- *
- *
- * Checked for jEdit 4.0 API
- *
- */
- void includeGuard()
- {
- if(buffer.isUntitled())
- {
- Macros.error(view, "Name the file before inserting an include guard.");
- return;
- }
- // you can change the routine for creating the guard name here
- guardName = "__" + buffer.getName().toUpperCase().replace('.', '_')
- + "__";
- pos = textArea.getCaretPosition();
- textArea.setSelectedText("#if !defined(" + guardName
- + ")\n#define " + guardName + "\n");
- textArea.setCaretPosition(buffer.getLength());
- textArea.setSelectedText("\n#endif // #if !defined(" +
- guardName + ")\n");
- textArea.setCaretPosition(pos);
- }
- includeGuard();
- /*
- Macro index data (in DocBook format)
- <listitem>
- <para><filename>Include_Guard.bsh</filename></para>
- <abstract><para>
- Intended for C/C++ header files, this macro inserts a preprocessor
- directive in the current buffer to ensure that the header is
- included only once per compilation unit.
- </para></abstract>
- <para>
- To use the macro, first place the caret at the beginning of the
- header file before any uncommented text. The macro will return to
- this position upon completion. The defined term that triggers the
- <quote>include guard</quote> is taken from the buffer's name.
- </para>
- </listitem>
- */
- // end Include_Guard.bsh