// -*- c++ -*-
/*  Generated by gensig from arg.gen_h. DO NOT MODIFY!!! */
#ifndef GTKMM_ARG_HEADER
#define GTKMM_ARG_HEADER
/* $Id: arg.gen_h,v 1.10.2.1 1999/03/01 21:17:25 kenelson Exp $ */

/* arg.h
 * 
 * Copyright (C) 1998-1999 
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include <gtk/gtktypeutils.h>
#include <gtk--/base.h>
#include <string>

class Gtk_Object;

#line 28 "arg.gen_h"


class Gtk_ArgBase
{
  friend Gtk_Object;
  
public:
  Gtk_ArgBase(GtkArg* arg = 0) {};

  const GtkArg* gtkobj() const { return gtkarg; }
  GtkArg* gtkobj() { return gtkarg; }
  
protected:
  GtkArg* gtkarg;
};

template<class ARGTYPE>
class Gtk_ArgSimple : public Gtk_ArgBase
{
public:
  Gtk_ArgSimple(ARGTYPE arg);
  
  ARGTYPE get() const;
  void set(ARGTYPE newval);
};

template<class ARGTYPE>
Gtk_ArgSimple<ARGTYPE>::Gtk_ArgSimple(ARGTYPE arg)
  : Gtk_ArgBase(0)
{
  set(arg);
}


class Gtk_ArgString : public Gtk_ArgBase
{
  friend Gtk_Object;
public:
  Gtk_ArgString(const string &arg);
  
  string get() const;
  void set(const string &arg);

protected:
  Gtk_ObjectHandle<gchar*> arg_value_;
};

class Gtk_ArgObject : public Gtk_ArgBase
{
  friend Gtk_Object;
public:
  Gtk_ArgObject(const Gtk_Object &arg);
  
  const Gtk_Object& get() const;
  void set(const Gtk_Object &arg);

protected:
  Gtk_ObjectHandle<Gtk_Object*> arg_value_;
};


#endif
