#ifndef _profileP_h_
#define _profileP_h_ 1

#include "profile.h"


struct profile_comp_desc {	/* Describes a profile component, but
				   does not hold its value */
  const char *name;
  AlProfile_Comp_Type type;
  AlProfile_Component code;
};

/* Adding a new component requires editing profile.h and profileP.h */

static struct profile_comp_desc profile_components[] = {
  {"**ERROR**", ALPROFT_CHAR_PTR, ALPROF_NONEXST},
  {"MailUserAgent", ALPROFT_CHAR_PTR, ALPROF_MAILUA},
  {"ArgusDirectory", ALPROFT_CHAR_PTR, ALPROF_LENSDIR},
  {"RulesetDirectory", ALPROFT_CHAR_PTR, ALPROF_RULEDIR},
  {"ActionDirectory", ALPROFT_CHAR_PTR, ALPROF_ACTNDIR},
  {"MessageTypeRegistryInit", ALPROFT_CHAR_PTR, ALPROF_MTRINIT},
  {"SaveStates", ALPROFT_BOOL, ALPROF_SAVSTAT},
  {"SaveProperties", ALPROFT_BOOL, ALPROF_SAVPROP},
  {"DataDirectory", ALPROFT_CHAR_PTR, ALPROF_DATADIR},
  {"DataStateFile", ALPROFT_CHAR_PTR, ALPROF_DATASF},
  {"StartupDataStateFile", ALPROFT_CHAR_PTR, ALPROF_DATASSF},
  {"MsgDataOutput", ALPROFT_CHAR_PTR, ALPROF_MSGDOUT},
  {"RuleActivityOutput", ALPROFT_CHAR_PTR, ALPROF_RADOUT},
  {"RuleLifeOutput", ALPROFT_CHAR_PTR, ALPROF_RLDOUT},
  {"StartupMessageTypeRegistryInit", ALPROFT_CHAR_PTR, ALPROF_MTRSNIT},
  {"SnapShotOutput", ALPROFT_CHAR_PTR, ALPROF_SNAPOUT},
  {"DefaultRuleMessageType", ALPROFT_CHAR_PTR, ALPROF_DEFRMT},
  {"DefaultSendMessageType", ALPROFT_CHAR_PTR, ALPROF_DEFSMT},
  {"VerbPresentationOrder", ALPROFT_CHAR_PTR, ALPROF_VERBORD},
  {"FieldTypePresentationOrder", ALPROFT_CHAR_PTR, ALPROF_FTORD},
  {"NextProfilePath", ALPROFT_CHAR_PTR, ALPROF_NEXTPTH},
  {"DefaultFieldType", ALPROFT_CHAR_PTR, ALPROF_DEF_FIELD_TYPE },
  {"AnyoneDropDirectory", ALPROFT_CHAR_PTR, ALPROF_ANYONE_DROP_DIR },
  {"AnyoneLibDirectory", ALPROFT_CHAR_PTR, ALPROF_ANYONE_LIB_DIR },
  {"AnyoneLogFile", ALPROFT_CHAR_PTR, ALPROF_ANYONE_LOG_FILE },
  {"AnyoneReturnAddress", ALPROFT_CHAR_PTR, ALPROF_ANYONE_RET_ADDR },
  {"AnyoneName", ALPROFT_CHAR_PTR, ALPROF_ANYONE_NAME },
  {"DefaultRuleVerbs", ALPROFT_CHAR_PTR, ALPROF_DEF_RULE_VERBS },
  {"DefaultAnyoneServer", ALPROFT_CHAR_PTR, ALPROF_DEF_ANYONE },
  {"SystemMessageTypeRegistry", ALPROFT_CHAR_PTR, ALPROF_SYS_MTR },
  {"XAppResourceFile", ALPROFT_CHAR_PTR, ALPROF_APP_XRESOURCES },
  {"FieldTypesThatShowOperators", ALPROFT_CHAR_PTR, ALPROF_FTS_THAT_SHOW_OPS },
  {"EasyAccessFieldTypes", ALPROFT_CHAR_PTR, ALPROF_EASY_ACCESS_FTS },
  {"AddTextFieldType", ALPROFT_CHAR_PTR, ALPROF_ADD_TEXT_FIELD_TYPE },
  {"DefaultRuleeditorMode", ALPROFT_CHAR_PTR, ALPROF_DEFAULT_RE_MODE },
  {"MessageDirectory", ALPROFT_CHAR_PTR,   ALPROF_MESSAGES_DIR },
};

struct profile_value {
  AlProfile_Comp_Type tag;
  union profile_value_un {
    char *char_ptr_val;
    int int_val;
    unsigned int uns_int_val;
    double double_val;
    Bool bool_val;
  } val;
};

static struct profile_value profile_comp_values[ALPROF_NUM_COMPS];

#endif /* ifndef _profileP_h_ */


