

  /*
	Copyright (c) 1997 Kenneth Albanowski. All rights reserved.
	This program is free software; you can redistribute it and/or
	modify it under the same terms as Perl itself.
  */

struct opts {
	int value;
	char * name;
};


char * CsaError(int error);
void CsaCroak(char * routine, int err);
SV * newSVCSA_calendar_user(CSA_calendar_user * user);
CSA_calendar_user * SvCSA_calendar_user(SV * user, CSA_calendar_user * target);
SV * newSVCSA_access_rights(CSA_access_rights * right);
SV * newSVCSA_access_list(CSA_access_list list);
CSA_access_rights * SvCSA_access_rights(SV * data, CSA_access_rights * rights);
CSA_access_list SvCSA_access_list(SV * data, CSA_access_list list);
SV * newSVCSA_attendee(CSA_attendee * attendee);
SV * newSVCSA_attendee_list(CSA_attendee_list list);
SV * newSVCSA_date_time_list(CSA_date_time_list list, int doiso_times);
CSA_date_time_list SvCSA_date_time_list(SV * data, CSA_date_time_list target);
SV * newSVCSA_opaque_data(CSA_opaque_data * data);
CSA_opaque_data * SvCSA_opaque_data(SV * data, CSA_opaque_data * target);
SV * newSVCSA_reminder(CSA_reminder * rem, int doiso_times);
SV * newSVCSA_attribute_value(CSA_attribute_value * attr, int doshorten, int doiso_times);
CSA_attribute_value * SvCSA_attribute_value(SV * attr, CSA_attribute_value * target);
SV * newSVCSA_attribute(CSA_attribute * attr, int doshorten, int doiso_times);
CSA_attribute * SvCSA_attribute(SV * attr, CSA_attribute * target);
int decode_callback_mode(char * mode);
CSA_reminder * SvCSA_reminder(SV * data, CSA_reminder * target);
SV * newSVCSA_SCOPE(int scope);
int SvCSA_SCOPE(SV * name);
SV * newSVCSA_MATCH(int match);
int SvCSA_MATCH(SV * name);
SV * newSVCSA_USER_TYPE(int match);
int SvCSA_USER_TYPE(SV * name);
SV * newSVCSA_LOOKUP(int match);
int SvCSA_LOOKUP(SV * name);
SV * newSVCSA_REQUIRED(int match);
int SvCSA_REQUIRED(SV * name);
SV * newSVCSA_LINE_TERM(int match);
int SvCSA_LINE_TERM(SV * name);

long SvOpt(SV * name, char * optname, struct opts * o);
SV * newSVOpt(long value, char * optname, struct opts * o);

long SvOptFlags(SV * name, char * optname, struct opts * o);
SV * newSVOptFlags(long value, char * optname, struct opts * o, int hash);

char * lengthen(char * arg);
char * shorten(char * arg, int doit);

SV * newSVISO_date_time(char * value, int doiso);
SV * newSVISO_date_time_range(char * value, int doiso);
SV * newSVISO_time_duration(char * value, int doiso);
char * SvISO_date_time(SV * value, char * buffer);
char * SvISO_date_time_range(SV * value, char  *buffer);
char * SvISO_time_duration(SV * value, char * buffer);

extern int Csa_accept_numeric_enumerations;
extern int Csa_generate_numeric_enumerations;
