/* 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
*/

module AnonStrings { 
    
    typedef string<5> String5Array[10];

    typedef sequence< string<10> > SequenceBoundedString;
    typedef sequence< sequence< string<10> > > SequenceSequenceBoundedString;


    typedef sequence< string<10>, 20 > BoundedSequenceBoundedString;
    typedef sequence< sequence< string<10>, 20 > > SequenceBoundedSequenceBoundedString;


    interface anonStringIf {
        string<10> anonStringOperation(in string<20> inString);
        string<30> anotherAnonStringOperation(in string<40> inString);
    };


    struct anonStringStruct {
        string unboundedString;
        string anotherUnboundedString;

        string<10> anonBoundedString;
        string<20> anotherAnonBoundedString;
    };


    typedef struct typedefAnonStringStruct {
        string unboundedString;
        string anotherUnboundedString;

        string<10> anonBoundedString;
        string<20> anotherAnonBoundedString;
    } myTypedefAnonStringStruct;


    union anonStringUnion switch(long) {
    case 1:
        string< 10 > anonStringUnion1;
    default:
        string< 100 > anonStringUnionDefault;
    };


    typedef union typedefAnonStringUnion switch(long) {
    case 1:
        string< 10 > anonStringUnion1;
    default:
        string< 100 > anonStringUnionDefault;
    } myTypedefAnonStringUnion;


    exception anonException {
        string unboundedString;
        string anotherUnboundedString;

        string<10> anonBoundedAnonString;
        string<20> anotherBoundedAnonString;
    };

};

