Class Preprocessor

java.lang.Object
com.jogamp.gluegen.jcpp.Preprocessor
All Implemented Interfaces:
Closeable, AutoCloseable

public class Preprocessor extends Object implements Closeable
A C Preprocessor. The Preprocessor outputs a token stream which does not need re-lexing for C or C++. Alternatively, the output text may be reconstructed by concatenating the text values of the returned Tokens. (See CppReader, which does this.)
  • Constructor Details

  • Method Details

    • setFileSystem

      public void setFileSystem(VirtualFileSystem filesystem)
      Sets the VirtualFileSystem used by this Preprocessor.
    • getFileSystem

      public VirtualFileSystem getFileSystem()
      Returns the VirtualFileSystem used by this Preprocessor.
    • setListener

      public void setListener(PreprocessorListener listener)
      Sets the PreprocessorListener which handles events for this Preprocessor. The listener is notified of warnings, errors and source changes, amongst other things.
    • getListener

      public PreprocessorListener getListener()
      Returns the PreprocessorListener which handles events for this Preprocessor.
    • getFeatures

      public Set<Feature> getFeatures()
      Returns the feature-set for this Preprocessor. This set may be freely modified by user code.
    • addFeature

      public void addFeature(Feature f)
      Adds a feature to the feature-set of this Preprocessor.
    • addFeatures

      public void addFeatures(Collection<Feature> f)
      Adds features to the feature-set of this Preprocessor.
    • addFeatures

      public void addFeatures(Feature... f)
      Adds features to the feature-set of this Preprocessor.
    • getFeature

      public boolean getFeature(Feature f)
      Returns true if the given feature is in the feature-set of this Preprocessor.
    • getWarnings

      public Set<Warning> getWarnings()
      Returns the warning-set for this Preprocessor. This set may be freely modified by user code.
    • addWarning

      public void addWarning(Warning w)
      Adds a warning to the warning-set of this Preprocessor.
    • addWarnings

      public void addWarnings(Collection<Warning> w)
      Adds warnings to the warning-set of this Preprocessor.
    • getWarning

      public boolean getWarning(Warning w)
      Returns true if the given warning is in the warning-set of this Preprocessor.
    • addInput

      public void addInput(Source source)
      Adds input for the Preprocessor. Inputs are processed in the order in which they are added.
    • addInput

      public void addInput(File file) throws IOException
      Adds input for the Preprocessor.
      Throws:
      IOException
      See Also:
    • error

      protected void error(int line, int column, String msg) throws LexerException
      Handles an error. If a PreprocessorListener is installed, it receives the error. Otherwise, an exception is thrown.
      Throws:
      LexerException
    • error

      protected void error(Token tok, String msg) throws LexerException
      Handles an error. If a PreprocessorListener is installed, it receives the error. Otherwise, an exception is thrown.
      Throws:
      LexerException
      See Also:
    • warning

      protected void warning(int line, int column, String msg) throws LexerException
      Handles a warning. If a PreprocessorListener is installed, it receives the warning. Otherwise, an exception is thrown.
      Throws:
      LexerException
    • warning

      protected void warning(Token tok, String msg) throws LexerException
      Handles a warning. If a PreprocessorListener is installed, it receives the warning. Otherwise, an exception is thrown.
      Throws:
      LexerException
      See Also:
    • addMacro

      public void addMacro(Macro m) throws LexerException, IOException
      Adds a Macro to this Preprocessor. The given Macro object encapsulates both the name and the expansion.
      Throws:
      IOException
      LexerException
    • addMacro

      public void addMacro(String name, String value) throws LexerException
      Defines the given name as a macro. The String value is lexed into a token stream, which is used as the macro expansion.
      Throws:
      LexerException
    • addMacro

      public void addMacro(String name) throws LexerException
      Defines the given name as a macro, with the value 1. This is a convnience method, and is equivalent to addMacro(name, "1").
      Throws:
      LexerException
    • setQuoteIncludePath

      public void setQuoteIncludePath(List<String> path)
      Sets the user include path used by this Preprocessor.
    • getQuoteIncludePath

      public List<String> getQuoteIncludePath()
      Returns the user include-path of this Preprocessor. This list may be freely modified by user code.
    • setSystemIncludePath

      public void setSystemIncludePath(List<String> path)
      Sets the system include path used by this Preprocessor.
    • getSystemIncludePath

      public List<String> getSystemIncludePath()
      Returns the system include-path of this Preprocessor. This list may be freely modified by user code.
    • setFrameworksPath

      public void setFrameworksPath(List<String> path)
      Sets the Objective-C frameworks path used by this Preprocessor.
    • getFrameworksPath

      public List<String> getFrameworksPath()
      Returns the Objective-C frameworks path used by this Preprocessor. This list may be freely modified by user code.
    • getMacros

      public Map<String,Macro> getMacros()
      Returns the Map of Macros parsed during the run of this Preprocessor.
    • getMacros

      public List<Macro> getMacros(boolean expand) throws IOException, LexerException
      Returns a list of Macros.

      Implementation returns a new list of copy-ctor Macros.

      Parameters:
      expand - if true and if macro is not function-like, i.e. a constant, the returned macro will be expanded.
      Throws:
      IOException
      LexerException
    • getMacro

      public Macro getMacro(String name)
      Returns the named macro. While you can modify the returned object, unexpected things might happen if you do.
    • getIncludes

      public List<? extends VirtualFile> getIncludes()
      Returns the list of VirtualFiles which have been included by this Preprocessor. This does not include any Source provided to the constructor or addInput(java.io.File) or addInput(Source).
    • getSource

      public Source getSource()
      Returns the top Source on the input stack.
      See Also:
    • push_source

      protected void push_source(Source source, boolean autopop)
      Pushes a Source onto the input stack.
      See Also:
    • pop_source

      protected Token pop_source(boolean linemarker) throws IOException
      Pops a Source from the input stack.
      Throws:
      IOException
      See Also:
    • pop_source

      protected void pop_source() throws IOException
      Throws:
      IOException
    • include

      protected boolean include(VirtualFile file) throws IOException, LexerException
      Attempts to include the given file. User code may override this method to implement a virtual file system.
      Throws:
      IOException
      LexerException
    • include

      protected boolean include(Iterable<String> path, String name) throws IOException, LexerException
      Includes a file from an include path, by name.
      Throws:
      IOException
      LexerException
    • pragma_once

      protected void pragma_once(Token name) throws IOException, LexerException
      Throws:
      IOException
      LexerException
    • pragma

      protected void pragma(Token name, List<Token> value) throws IOException, LexerException
      Throws:
      IOException
      LexerException
    • token

      public Token token() throws IOException, LexerException
      Returns the next preprocessor token.
      Throws:
      LexerException - if a preprocessing error occurs.
      InternalException - if an unexpected error condition arises.
      IOException
      See Also:
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException