00001 #include <stdarg.h>
00002 #include <stdio.h>
00003 #include "vapiTypes.h"
00004 #include "vapiOptions.h"
00005 #include "vapiAux.h"
00006
00007 void
00008 vapiOptionsSetInt (vOptionsSettings * OptionsSettings, const char *name,
00009 const char *description, int min, int max,
00010 int defaultValue, int scale, vInterfaceType interfaceType)
00011 {
00012 int pos = OptionsSettings->intsNumber;
00013 if (OptionsSettings->intsNumber == 0)
00014 {
00015 OptionsSettings->ints =
00016 malloc (++OptionsSettings->intsNumber *
00017 sizeof (vOptint));
00018 }
00019 else
00020 {
00021 OptionsSettings->ints =
00022 realloc (OptionsSettings->ints,
00023 ++OptionsSettings->intsNumber *
00024 sizeof (vOptint));
00025 }
00026
00027 OptionsSettings->ints[pos].min = min;
00028 OptionsSettings->ints[pos].max = max;
00029 OptionsSettings->ints[pos].scale = scale;
00030 OptionsSettings->ints[pos].defaultValue = defaultValue;
00031 OptionsSettings->ints[pos].name = vapiReturnStringPointer (name);
00032 OptionsSettings->ints[pos].description =
00033 vapiReturnStringPointer (description);
00034 OptionsSettings->ints[pos].interfaceType = interfaceType;
00035 }
00036
00037 void
00038 vapiOptionsSetFloat (vOptionsSettings * OptionsSettings, const char *name,
00039 const char *description, double min,
00040 double max, double defaultValue, double scale,
00041 vInterfaceType interfaceType)
00042 {
00043 int pos = OptionsSettings->floatsNumber;
00044 if (OptionsSettings->floatsNumber == 0)
00045 {
00046 OptionsSettings->floats =
00047 malloc (++OptionsSettings->floatsNumber *
00048 sizeof (vOptfloat));
00049 }
00050 else
00051 {
00052 OptionsSettings->floats =
00053 realloc (OptionsSettings->floats,
00054 ++OptionsSettings->floatsNumber *
00055 sizeof (vOptfloat));
00056 }
00057 OptionsSettings->floats[pos].min = min;
00058 OptionsSettings->floats[pos].max = max;
00059 OptionsSettings->floats[pos].scale = scale;
00060 OptionsSettings->floats[pos].defaultValue = defaultValue;
00061 OptionsSettings->floats[pos].name = vapiReturnStringPointer (name);
00062 OptionsSettings->floats[pos].description =
00063 vapiReturnStringPointer (description);
00064 OptionsSettings->floats[pos].interfaceType = interfaceType;
00065 }
00066
00067 void
00068 vapiOptionsSetBoolean (vOptionsSettings * OptionsSettings, const char *name,
00069 const char *description, vBoolean defaultValue)
00070 {
00071 int pos = OptionsSettings->booleansNumber;
00072 if (OptionsSettings->booleansNumber == 0)
00073 {
00074 OptionsSettings->booleans =
00075 malloc (++OptionsSettings->booleansNumber *
00076 sizeof (vOptBoolean));
00077 }
00078 else
00079 {
00080 OptionsSettings->booleans =
00081 realloc (OptionsSettings->booleans,
00082 ++OptionsSettings->
00083 booleansNumber * sizeof (vOptBoolean));
00084 }
00085 OptionsSettings->booleans[pos].defaultValue = defaultValue;
00086 OptionsSettings->booleans[pos].name = vapiReturnStringPointer (name);
00087 OptionsSettings->booleans[pos].description =
00088 vapiReturnStringPointer (description);
00089 }
00090
00091 void
00092 vapiOptionsSetChoose (vOptionsSettings * OptionsSettings,
00093 const char *name, const char *description,
00094 int numberOfChoices, int defaultOption, va_list choices)
00095 {
00096
00097 char *choice;
00098 int pos = OptionsSettings->chooseNumber, i;
00099 if (OptionsSettings->chooseNumber == 0)
00100 {
00101 OptionsSettings->choose =
00102 malloc (++OptionsSettings->chooseNumber *
00103 sizeof (vOptChoose));
00104 }
00105 else
00106 {
00107 OptionsSettings->choose =
00108 realloc (OptionsSettings->choose,
00109 ++OptionsSettings->chooseNumber *
00110 sizeof (vOptChoose));
00111 }
00112 OptionsSettings->choose[pos].name = vapiReturnStringPointer (name);
00113 OptionsSettings->choose[pos].description =
00114 vapiReturnStringPointer (description);
00115 OptionsSettings->choose[pos].defaultOption = defaultOption;
00116 OptionsSettings->choose[pos].numberOfChoices = 0;
00117
00118 for (i = 0; i < numberOfChoices; i++)
00119 {
00120 choice = va_arg (choices, char *);
00121 if (OptionsSettings->choose[pos].numberOfChoices == 0)
00122 {
00123 OptionsSettings->choose[pos].
00124 listOfChoices =
00125 malloc (++OptionsSettings->
00126 choose[pos].numberOfChoices *
00127 sizeof (vChar));
00128 }
00129 else
00130 {
00131 OptionsSettings->choose[pos].
00132 listOfChoices =
00133 realloc (OptionsSettings->
00134 choose[pos].listOfChoices,
00135 ++OptionsSettings->
00136 choose[pos].numberOfChoices *
00137 sizeof (vChar));
00138 }
00139 OptionsSettings->choose[pos].
00140 listOfChoices[OptionsSettings->choose[pos].
00141 numberOfChoices - 1].ch =
00142 vapiReturnStringPointer (choice);
00143 }
00144 }
00145
00146 void
00147 vapiOptionsSetChar (vOptionsSettings * OptionsSettings, const char *name,
00148 const char *description)
00149 {
00150 int pos = OptionsSettings->charsNumber;
00151 if (OptionsSettings->charsNumber == 0)
00152 {
00153 OptionsSettings->chars =
00154 malloc (++OptionsSettings->charsNumber *
00155 sizeof (vOptchar));
00156 }
00157 else
00158 {
00159 OptionsSettings->chars =
00160 realloc (OptionsSettings->chars,
00161 ++OptionsSettings->charsNumber *
00162 sizeof (vOptchar));
00163 }
00164 OptionsSettings->chars[pos].name = vapiReturnStringPointer (name);
00165 OptionsSettings->chars[pos].description =
00166 vapiReturnStringPointer (description);
00167 }