#
# Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
# v. 1.0 which is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# This Source Code may also be made available under the following Secondary
# Licenses when the conditions for such availability set forth in the Eclipse
# Public License v. 2.0 are satisfied: GNU General Public License v2.0
# w/Classpath exception which is available at
# https://www.gnu.org/software/classpath/license.html.
#
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause OR GPL-2.0 WITH
# Classpath-exception-2.0
#

package @PKGNAME@ ;

import org.omg.CORBA.OMGVMCID ;
import org.omg.CORBA.CompletionStatus ;

import org.omg.CORBA.@SYSEX@ ; 

public abstract class StandardException {
    // @SYSEX@ BAD_CONTEXT

    public void IdlContextNotFound( CompletionStatus completed )
    {
        throw new BAD_CONTEXT( "IDL context not found", 
            OMGVMCID.value + 1, completed ) ;
    }

    public void IdlContextNotFound( )
    {
        IdlContextNotFound( CompletionStatus.COMPLETED_NO ) ;
    }

Data structures: list[ ... ] vector[ ... ] ( record )

list[ ( string{exception name} list[ ( string{code name} int{value} string{description} ] ) ]
                            
Processing:
    

    open file (fname)
        fr = new FileReader( fname )
        br = new BufferedReader( fr )
        br.readLine() returns null at EOF

    want a BufferedReader
    
    while not eol read line
        if (line start with spaces)
            add to current index
        else
            new exception

    create StandardException class

    foreach ( excname vec ) in data
        add import statement for execname to output 

        foreach ( codename value descr ) in vec 
            generate full method
            generate short method
        
           
(define (read-file fname)
    (begin
        (let port (open-input-port fname))
        (let obj  (read port))
        obj
    )
)

    
    
