/[classpath]/classpath/org/omg/CORBA/StringSeqHolder.java
ViewVC logotype

Diff of /classpath/org/omg/CORBA/StringSeqHolder.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by mkoch, Sun Mar 13 11:20:17 2005 UTC revision 1.3 by audriusa, Sun Mar 13 15:20:21 2005 UTC
# Line 1  Line 1 
1  /* StringSeqHolder.java --  /* StringSeqHolder.java --
2     Copyright (C) 2005 Free Software Foundation, Inc.     Copyright (C) 2005 Free Software Foundation, Inc.
3    
4  This file is part of GNU Classpath.  This file is part of GNU Classpath.
5    
6  GNU Classpath is free software; you can redistribute it and/or modify  GNU Classpath is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2, or (at your option)  the Free Software Foundation; either version 2, or (at your option)
9  any later version.  any later version.
10    
11  GNU Classpath is distributed in the hope that it will be useful, but  GNU Classpath is distributed in the hope that it will be useful, but
12  WITHOUT ANY WARRANTY; without even the implied warranty of  WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  General Public License for more details.  General Public License for more details.
15    
16  You should have received a copy of the GNU General Public License  You should have received a copy of the GNU General Public License
17  along with GNU Classpath; see the file COPYING.  If not, write to the  along with GNU Classpath; see the file COPYING.  If not, write to the
18  Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19  02111-1307 USA.  02111-1307 USA.
20    
21  Linking this library statically or dynamically with other modules is  Linking this library statically or dynamically with other modules is
22  making a combined work based on this library.  Thus, the terms and  making a combined work based on this library.  Thus, the terms and
23  conditions of the GNU General Public License cover the whole  conditions of the GNU General Public License cover the whole
24  combination.  combination.
25    
26  As a special exception, the copyright holders of this library give you  As a special exception, the copyright holders of this library give you
27  permission to link this library with independent modules to produce an  permission to link this library with independent modules to produce an
28  executable, regardless of the license terms of these independent  executable, regardless of the license terms of these independent
29  modules, and to copy and distribute the resulting executable under  modules, and to copy and distribute the resulting executable under
30  terms of your choice, provided that you also meet, for each linked  terms of your choice, provided that you also meet, for each linked
31  independent module, the terms and conditions of the license of that  independent module, the terms and conditions of the license of that
32  module.  An independent module is a module which is not derived from  module.  An independent module is a module which is not derived from
33  or based on this library.  If you modify this library, you may extend  or based on this library.  If you modify this library, you may extend
34  this exception to your version of the library, but you are not  this exception to your version of the library, but you are not
35  obligated to do so.  If you do not wish to do so, delete this  obligated to do so.  If you do not wish to do so, delete this
36  exception statement from your version. */  exception statement from your version. */
37    
38    
39  package org.omg.CORBA;  package org.omg.CORBA;
40    
41  import gnu.CORBA.primitiveArrayTypeCode;  import gnu.CORBA.primitiveArrayTypeCode;
42    
43  import org.omg.CORBA.portable.InputStream;  import org.omg.CORBA.portable.InputStream;
44  import org.omg.CORBA.portable.OutputStream;  import org.omg.CORBA.portable.OutputStream;
45  import org.omg.CORBA.portable.Streamable;  import org.omg.CORBA.portable.Streamable;
46    
47  /**  /**
48   * A sequence holder for CORBA <code>string[]</code> that is mapped into   * A sequence holder for CORBA <code>string[]</code> that is mapped into
49   * java <code>String[]</code>.   * java <code>String[]</code>.
50   *   *
51   * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)   * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
52   */   */
53  public final class StringSeqHolder  public final class StringSeqHolder
54    implements Streamable    implements Streamable
55  {  {
56    /**    /**
57     * The <code>String[]</code> (CORBA <code>string[]</code>) value,     * The <code>String[]</code> (CORBA <code>string[]</code>) value,
58     * held by this StringSeqHolder.     * held by this StringSeqHolder.
59     */     */
60    public String[] value;    public String[] value;
61    
62    /**    /**
63     * The type code for this holder. Each holder has a different instance.     * The type code for this holder. Each holder has a different instance.
64     */     */
65    private final primitiveArrayTypeCode typecode =    private final primitiveArrayTypeCode typecode =
66      new primitiveArrayTypeCode(TCKind.tk_char);      new primitiveArrayTypeCode(TCKind.tk_char);
67    
68    /**    /**
69     * Constructs an instance of StringSeqHolder,     * Constructs an instance of StringSeqHolder,
70     * initializing {@link #value} to <code>null</code>.     * initializing {@link #value} to <code>null</code>.
71     */     */
72    public StringSeqHolder()    public StringSeqHolder()
73    {    {
74    }    }
75    
76    /**    /**
77     * Constructs an instance of StringSeqHolder,     * Constructs an instance of StringSeqHolder,
78     * initializing {@link #value} to the given <code>String</code>.     * initializing {@link #value} to the given <code>String</code>.
79     *     *
80     * @param initial_value a value that will be assigned to the     * @param initial_value a value that will be assigned to the
81     * {@link #value} field.     * {@link #value} field.
82     */     */
83    public StringSeqHolder(String[] initial_value)    public StringSeqHolder(String[] initial_value)
84    {    {
85      value = initial_value;      value = initial_value;
86      typecode.setLength(value.length);      typecode.setLength(value.length);
87    }    }
88    
89    /**    /**
90     * Fill in the {@link value } field by reading the required data     * Fill in the {@link value } field by reading the required data
91     * from the given stream. This method first reads the array size     * from the given stream. This method first reads the array size
92     * (as CORBA <code>long</code>and then all strings.     * (as CORBA <code>long</code>and then all strings.
93     *     *
94     * @param input the input stream to read from.     * @param input the input stream to read from.
95     */     */
96    public void _read(InputStream input)    public void _read(InputStream input)
97    {    {
98      value = new String[ input.read_long() ];      value = new String[ input.read_long() ];
99      for (int i = 0; i < value.length; i++)      for (int i = 0; i < value.length; i++)
100        {        {
101          value [ i ] = input.read_wstring();          value [ i ] = input.read_wstring();
102        }        }
103      typecode.setLength(value.length);      typecode.setLength(value.length);
104    }    }
105    
106    /**    /**
107     * Returns the TypeCode, corresponding the CORBA type that is stored     * Returns the TypeCode, corresponding the CORBA type that is stored
108     * using this holder.     * using this holder.
109     */     */
110    public TypeCode _type()    public TypeCode _type()
111    {    {
112      return typecode;      return typecode;
113    }    }
114    
115    /**    /**
116     * Write the {@link value } field to the given stream.     * Write the {@link value } field to the given stream.
117     * This method first writes the array size     * This method first writes the array size
118     * (as CORBA <code>long</code> and then all strings.     * (as CORBA <code>long</code> and then all strings.
119     *     *
120     * @param output the output stream to write into.     * @param output the output stream to write into.
121     */     */
122    public void _write(OutputStream output)    public void _write(OutputStream output)
123    {    {
124      output.write_long(value.length);      output.write_long(value.length);
125    
126      for (int i = 0; i < value.length; i++)      for (int i = 0; i < value.length; i++)
127        {        {
128          output.write_wstring(value [ i ]);          output.write_wstring(value [ i ]);
129        }        }
130    }    }
131  }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26