edu.csus.ecs.pc2.api

## Interface ILanguage

-     public interface ILanguage

  This interface describes the PC2 API view of a contest Language.

  This documentation describes the current draft of the PC2 API, which is subject to change.

  Version:
    $Id$
  Author:
    pc2@ecs.csus.edu

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(Object obj)` Check whether this Language is the same as some other Language.
    `String` | `getCompilerCommandLine()` Get command to compile source code.
    `String` | `getExecutableMask()` Get an expected output program name.
    `String` | `getExecutionCommandLine()` Get command to execute program.
    `String` | `getName()` Get the name for this language as configured by the Contest Administrator.
    `String` | `getTitle()` Get Display Name for the language, ex.
    `int` | `hashCode()` Get the hashcode associated with this client.
    `boolean` | `isInterpreted()` Is this an interpreted language like Perl or Python.

- - ### Method Detail

    - #### getName

          String getName()

      Get the name for this language as configured by the Contest Administrator.
      Returns:
        A String containing the name of the language.

    - #### equals

          boolean equals(Object obj)

      Check whether this Language is the same as some other Language.

      Determination of whether two Languages are equal is based on whether they refer to the same Language as originally created in PC2 by the Contest Administrator. Note in particular that subsequent changes to a language definition made by the Contest Administrator (for example, changes to the language name, invocation command, etc.) do not affect the result of the `equals()` method; if this Language refers to the same Language as the one indicated by the specified parameter, this method will return true regardless of whether the internal contents of the two Language objects is identical or not.

      Overrides:
        `equals` in class `Object`
      Parameters:
        `obj` - the Language which is to be compared with this Language for equality.
      Returns:
        True if the specified object refers to the same Language as this Language (regardless of the actual content of the two Languages).

    - #### hashCode

          int hashCode()

      Get the hashcode associated with this client.
      Overrides:
        `hashCode` in class `Object`
      Returns:
        An integer hashcode for this object.

    - #### getTitle

          String getTitle()

      Get Display Name for the language, ex. Java.
      Returns:
        Display Name for the language, ex. Java

    - #### getCompilerCommandLine

          String getCompilerCommandLine()

      Get command to compile source code.
      Returns:
        command to compile source code.

    - #### isInterpreted

          boolean isInterpreted()

      Is this an interpreted language like Perl or Python.
      Returns:
        true if interpreted, false if language created executable.

    - #### getExecutionCommandLine

          String getExecutionCommandLine()

      Get command to execute program.
      Returns:
        command to execute program.

    - #### getExecutableMask

          String getExecutableMask()

      Get an expected output program name.
      Returns:
        an expected output program name