Freeswitch-trunk
Threads by month
- ----- 2026 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
November 2006
- 4 participants
- 135 discussions
[commit] r3331 - in freeswitch/trunk/src: . include mod/applications/mod_ivrtest
by Freeswitch SVN 12 Nov '06
by Freeswitch SVN 12 Nov '06
12 Nov '06
Author: anthm
Date: Sun Nov 12 15:34:04 2006
New Revision: 3331
Modified:
freeswitch/trunk/src/include/switch_ivr.h
freeswitch/trunk/src/mod/applications/mod_ivrtest/mod_ivrtest.c
freeswitch/trunk/src/switch_ivr.c
Log:
menu stuff: work in progress, look for bugs\!\!\!
Modified: freeswitch/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_ivr.h (original)
+++ freeswitch/trunk/src/include/switch_ivr.h Sun Nov 12 15:34:04 2006
@@ -443,7 +443,6 @@
*\param invalid_sound Optional pointer to a sound to play after invalid input.
*\param timeout A number of milliseconds to pause before looping.
*\param max_failures Maximum number of failures to withstand before hangingup This resets everytime you enter the menu.
- *\param inlen The max len of the input (1 for 1 digit menu opts, 2 for 2 digit etc.)
*\param pool memory pool (NULL to create one)
*\return SWUTCH_STATUS_SUCCESS if the menu was created
*/
@@ -453,9 +452,10 @@
char *greeting_sound,
char *short_greeting_sound,
char *invalid_sound,
+ char *tts_engine,
+ char *tts_voice,
int timeout,
int max_failures,
- int inlen,
switch_memory_pool_t *pool);
/*!
Modified: freeswitch/trunk/src/mod/applications/mod_ivrtest/mod_ivrtest.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_ivrtest/mod_ivrtest.c (original)
+++ freeswitch/trunk/src/mod/applications/mod_ivrtest/mod_ivrtest.c Sun Nov 12 15:34:04 2006
@@ -81,6 +81,65 @@
}
+static void ivr_application_function(switch_core_session_t *session, char *data)
+{
+ switch_channel_t *channel = switch_core_session_get_channel(session);
+ char *params = switch_core_session_strdup(session,data);
+
+ if (channel != NULL && params != NULL) {
+ switch_ivr_menu_t *menu = NULL, *sub_menu = NULL;
+ switch_status_t status;
+
+ // answer the channel if need be
+ switch_channel_answer(channel);
+
+ status = switch_ivr_menu_init(&menu,
+ NULL,
+ "main",
+ "please enter some numbers so i can figure out if I have any bugs or not",
+ "enter some numbers",
+ "I have no idea what that is",
+ "cepstral",
+ "david",
+ 15000, 10, NULL);
+
+
+ status = switch_ivr_menu_init(&sub_menu,
+ menu,
+ "sub",
+ "/ram/congrats.wav",
+ "/ram/extension.wav",
+ "/ram/invalid.wav",
+ NULL,
+ NULL,
+ 15000, 10, NULL);
+
+ if (status == SWITCH_STATUS_SUCCESS) {
+ // build the menu
+ switch_ivr_menu_bind_action(menu, SWITCH_IVR_ACTION_PLAYSOUND, "/ram/swimp.raw", "1");
+ switch_ivr_menu_bind_action(menu, SWITCH_IVR_ACTION_PLAYSOUND, "/ram/congrats.wav", "2");
+ switch_ivr_menu_bind_action(menu, SWITCH_IVR_ACTION_EXECMENU, "sub", "3");
+ //switch_ivr_menu_bind_action(menu, SWITCH_IVR_ACTION_PLAYSOUND, "/usr/local/freeswitch/sounds/3.wav", "3");
+
+
+ switch_ivr_menu_bind_action(sub_menu, SWITCH_IVR_ACTION_PLAYSOUND, "/ram/swimp.raw", "1");
+ switch_ivr_menu_bind_action(sub_menu, SWITCH_IVR_ACTION_BACK, NULL, "2");
+
+
+ // start the menu
+ status = switch_ivr_menu_execute(session, menu, "main", NULL);
+
+ // cleaup the menu
+ switch_ivr_menu_free_stack(menu);
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "unable to build menu %s\n",params);
+ }
+
+
+ switch_ivr_play_file(session, NULL,"/ram/goodbye.wav",NULL,NULL,NULL,0);
+ }
+}
+
static void dirtest_function(switch_core_session_t *session, char *data)
{
char *var, *val;
@@ -354,11 +413,19 @@
};
+
+static const switch_application_interface_t ivr_application_interface = {
+ /*.interface_name */ "ivrmenu",
+ /*.application_function */ ivr_application_function,
+ NULL, NULL, NULL,
+ /*.next*/ NULL
+};
+
static const switch_application_interface_t xml_application_interface = {
/*.interface_name */ "xml",
/*.application_function */ xml_function,
NULL, NULL, NULL,
- /*.next*/ NULL
+ /*.next*/ &ivr_application_interface
};
static const switch_application_interface_t disast_application_interface = {
Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c (original)
+++ freeswitch/trunk/src/switch_ivr.c Sun Nov 12 15:34:04 2006
@@ -431,12 +431,16 @@
switch_event_destroy(&event);
}
- if (input_callback || buf) {
+ if (input_callback || buf || buflen) {
/*
dtmf handler function you can hook up to be executed when a digit is dialed during playback
if you return anything but SWITCH_STATUS_SUCCESS the playback will stop.
*/
if (switch_channel_has_dtmf(channel)) {
+ if (!input_callback && !buf) {
+ status = SWITCH_STATUS_BREAK;
+ break;
+ }
switch_channel_dequeue_dtmf(channel, dtmf, sizeof(dtmf));
if (input_callback) {
status = input_callback(session, dtmf, SWITCH_INPUT_TYPE_DTMF, buf, buflen);
@@ -1094,12 +1098,17 @@
switch_event_destroy(&event);
}
- if (input_callback || buf) {
+ if (input_callback || buf || buflen) {
/*
dtmf handler function you can hook up to be executed when a digit is dialed during playback
if you return anything but SWITCH_STATUS_SUCCESS the playback will stop.
*/
if (switch_channel_has_dtmf(channel)) {
+ if (!input_callback && !buf) {
+ status = SWITCH_STATUS_BREAK;
+ done = 1;
+ break;
+ }
switch_channel_dequeue_dtmf(channel, dtmf, sizeof(dtmf));
if (input_callback) {
status = input_callback(session, dtmf, SWITCH_INPUT_TYPE_DTMF, buf, buflen);
@@ -1390,7 +1399,7 @@
if (switch_regex_match(digit_buffer, digits_regex) == SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Match found!\n");
//Jobs done
- return switch_channel_get_state(channel);
+ return SWITCH_STATUS_SUCCESS;
} else {
//See if a bad input prompt was specified, if so, play it
if (strlen(bad_input_audio_file) > 0) {
@@ -1405,14 +1414,14 @@
}
} else {
//Jobs done
- return switch_channel_get_state(channel);
+ return SWITCH_STATUS_SUCCESS;
}
}
}
//if we got here, we got no digits or lost the channel
digit_buffer = "\0";
- return switch_channel_get_state(channel);
+ return SWITCH_STATUS_FALSE;
}
@@ -1485,12 +1494,17 @@
switch_event_destroy(&event);
}
- if (input_callback || buf) {
+ if (input_callback || buf || buflen) {
/*
dtmf handler function you can hook up to be executed when a digit is dialed during playback
if you return anything but SWITCH_STATUS_SUCCESS the playback will stop.
*/
if (switch_channel_has_dtmf(channel)) {
+ if (!input_callback && !buf) {
+ status = SWITCH_STATUS_BREAK;
+ done = 1;
+ break;
+ }
if (buf && !strcasecmp(buf, "_break_")) {
status = SWITCH_STATUS_BREAK;
} else {
@@ -1630,11 +1644,15 @@
switch_status_t status = SWITCH_STATUS_SUCCESS;
switch_speech_handle_t sh;
switch_speech_flag_t flags = SWITCH_SPEECH_FLAG_NONE;
+ switch_codec_t *read_codec;
-
channel = switch_core_session_get_channel(session);
assert(channel != NULL);
+ if (rate == 0) {
+ read_codec = switch_core_session_get_read_codec(session);
+ rate = read_codec->implementation->samples_per_second;
+ }
memset(&sh, 0, sizeof(sh));
if (switch_core_speech_open(&sh,
@@ -3244,6 +3262,10 @@
char *greeting_sound;
char *short_greeting_sound;
char *invalid_sound;
+ char *tts_engine;
+ char *tts_voice;
+ char *buf;
+ char *ptr;
int max_failures;
int timeout;
int inlen;
@@ -3292,9 +3314,10 @@
char *greeting_sound,
char *short_greeting_sound,
char *invalid_sound,
+ char *tts_engine,
+ char *tts_voice,
int timeout,
int max_failures,
- int inlen,
switch_memory_pool_t *pool)
{
switch_ivr_menu_t *menu;
@@ -3315,25 +3338,47 @@
return SWITCH_STATUS_MEMERR;
}
}
+
menu->pool = pool;
- menu->name = switch_core_strdup(menu->pool, name);
- menu->greeting_sound = switch_core_strdup(menu->pool, greeting_sound);
- menu->short_greeting_sound = switch_core_strdup(menu->pool, short_greeting_sound);
- menu->invalid_sound = switch_core_strdup(menu->pool, invalid_sound);
+ if (name) {
+ menu->name = switch_core_strdup(menu->pool, name);
+ }
+
+ if (greeting_sound) {
+ menu->greeting_sound = switch_core_strdup(menu->pool, greeting_sound);
+ }
+
+ if (short_greeting_sound) {
+ menu->short_greeting_sound = switch_core_strdup(menu->pool, short_greeting_sound);
+ }
+
+ if (invalid_sound) {
+ menu->invalid_sound = switch_core_strdup(menu->pool, invalid_sound);
+ }
+
+ if (tts_engine) {
+ menu->tts_engine = switch_core_strdup(menu->pool, tts_engine);
+ }
+
+ if (tts_voice) {
+ menu->tts_voice = switch_core_strdup(menu->pool, tts_voice);
+ }
+
menu->max_failures = max_failures;
+
menu->timeout = timeout;
+
menu->actions = NULL;
- menu->inlen = inlen;
+
if (newpool) {
menu->flags |= SWITCH_IVR_MENU_FLAG_FREEPOOL;
}
- if (menu->timeout <= 0)
+ if (menu->timeout <= 0) {
menu->timeout = 10000;
- if (menu->inlen <= 0)
- menu->inlen = 1;
-
+ }
+
if (main) {
switch_ivr_menu_stack(&main, menu);
} else {
@@ -3349,11 +3394,15 @@
SWITCH_DECLARE(switch_status_t) switch_ivr_menu_bind_action(switch_ivr_menu_t *menu, switch_ivr_action_t ivr_action, char *arg, char *bind)
{
switch_ivr_menu_action_t *action;
-
+ switch_size_t len;
if ((action = switch_core_alloc(menu->pool, sizeof(*action)))) {
- action->bind = bind;
+ action->bind = switch_core_strdup(menu->pool, bind);
action->next = menu->actions;
- action->arg = arg;
+ action->arg = switch_core_strdup(menu->pool, arg);
+ len = strlen(action->bind);
+ if (len > menu->inlen) {
+ menu->inlen = (uint32_t)len;
+ }
action->ivr_action = ivr_action;
menu->actions = action;
return SWITCH_STATUS_SUCCESS;
@@ -3395,11 +3444,48 @@
}
+static switch_status_t play_or_say(switch_core_session_t *session, switch_ivr_menu_t *menu, char *sound, uint32_t need)
+{
+ memset(menu->buf, 0, menu->inlen);
+ menu->ptr = menu->buf;
+ char terminator;
+ uint32_t len;
+ char *ptr;
+
+ switch_status_t status = SWITCH_STATUS_SUCCESS;
+
+ menu->ptr = menu->buf;
+
+ if (!need) {
+ len = 1;
+ ptr = NULL;
+ } else {
+ len = menu->inlen + 1;
+ ptr = menu->ptr;
+ }
+
+ if (menu->tts_engine && menu->tts_voice) {
+ switch_ivr_speak_text(session, menu->tts_engine, menu->tts_voice, NULL, 0, NULL, sound, ptr, len);
+ } else {
+ switch_ivr_play_file(session, NULL, sound, NULL, NULL, ptr, len);
+ }
+
+ if (need) {
+ menu->ptr += strlen(menu->buf);
+ if (strlen(menu->buf) < need) {
+ status = switch_ivr_collect_digits_count(session, menu->ptr, menu->inlen - strlen(menu->buf), need, "#", &terminator, menu->timeout);
+ }
+ }
+
+ return status;
+
+}
+
SWITCH_DECLARE(switch_status_t) switch_ivr_menu_execute(switch_core_session_t *session, switch_ivr_menu_t *stack, char *name, void *obj)
{
int reps = 0, errs = 0, match = 0, running = 1;
char *greeting_sound = NULL, *aptr;
- char *buf, arg[512];
+ char arg[512];
switch_ivr_action_t todo = SWITCH_IVR_ACTION_DIE;
switch_ivr_menu_action_t *ap;
switch_ivr_menu_t *menu;
@@ -3415,7 +3501,7 @@
return -1;
}
- if (!(buf = malloc(menu->inlen))) {
+ if (!(menu->buf = malloc(menu->inlen))) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Memory!\n");
return -1;
}
@@ -3423,12 +3509,10 @@
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Executing IVR menu %s\n", menu->name);
for (reps = 0 ; (running && status == SWITCH_STATUS_SUCCESS && errs < menu->max_failures) ; reps++) {
-
if (!switch_channel_ready(channel)) {
break;
}
-
if (reps > 0 && menu->short_greeting_sound) {
greeting_sound = menu->short_greeting_sound;
} else {
@@ -3437,28 +3521,19 @@
match = 0;
aptr = NULL;
- memset(buf, 0, menu->inlen);
+
memset(arg, 0, sizeof(arg));
- if (switch_play_and_get_digits(session,
- menu->inlen,
- menu->inlen,
- 1,
- menu->timeout, "#",
- greeting_sound,
- NULL,
- buf,
- menu->inlen,
- NULL) != SWITCH_STATUS_SUCCESS) {
- break;
- }
+
+ play_or_say(session, menu, greeting_sound, menu->inlen);
- if (!switch_strlen_zero(buf)) {
+
+ if (!switch_strlen_zero(menu->buf)) {
for(ap = menu->actions; ap ; ap = ap->next) {
- if (!strcmp(buf, ap->bind)) {
+ if (!strcmp(menu->buf, ap->bind)) {
char *membuf;
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "IVR menu %s matched %s\n", menu->name, buf);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "IVR menu %s matched %s\n", menu->name, menu->buf);
match++;
errs = 0;
if (ap->function) {
@@ -3531,10 +3606,10 @@
}
}
if (!match) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "IVR menu %s caught invalid input %s\n", menu->name, buf);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "IVR menu %s caught invalid input %s\n", menu->name, menu->buf);
if (menu->invalid_sound) {
- status = switch_ivr_play_file(session, NULL, aptr, NULL, NULL, NULL, 0);
+ play_or_say(session, menu, menu->invalid_sound, 0);
}
errs++;
@@ -3545,7 +3620,7 @@
}
- switch_safe_free(buf);
+ switch_safe_free(menu->buf);
return status;
}
1
0
12 Nov '06
Author: anthm
Date: Sat Nov 11 19:42:51 2006
New Revision: 3322
Modified:
freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
Log:
try it on 10 boxes and you are bound to find one that still complains about the same code yay for gcc
Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c (original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c Sat Nov 11 19:42:51 2006
@@ -415,7 +415,7 @@
apr_dso_handle_t *dso = NULL;
apr_status_t status = SWITCH_STATUS_SUCCESS;
apr_dso_handle_sym_t function_handle = NULL;
- spidermonkey_init_t spidermonkey_init;
+ spidermonkey_init_t spidermonkey_init = NULL;
const sm_module_interface_t *module_interface, *mp;
int loading = 1;
1
0
Author: anthm
Date: Sat Nov 11 19:40:00 2006
New Revision: 3321
Modified:
freeswitch/trunk/src/include/switch_ivr.h
Log:
dox
Modified: freeswitch/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_ivr.h (original)
+++ freeswitch/trunk/src/include/switch_ivr.h Sat Nov 11 19:40:00 2006
@@ -444,7 +444,6 @@
*\param timeout A number of milliseconds to pause before looping.
*\param max_failures Maximum number of failures to withstand before hangingup This resets everytime you enter the menu.
*\param inlen The max len of the input (1 for 1 digit menu opts, 2 for 2 digit etc.)
- *\param flags Optional parameters to set to influence the menu behaviour.
*\param pool memory pool (NULL to create one)
*\return SWUTCH_STATUS_SUCCESS if the menu was created
*/
1
0
Author: anthm
Date: Sat Nov 11 19:38:31 2006
New Revision: 3320
Modified:
freeswitch/trunk/src/include/switch_ivr.h
freeswitch/trunk/src/switch_ivr.c
Log:
update
Modified: freeswitch/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_ivr.h (original)
+++ freeswitch/trunk/src/include/switch_ivr.h Sat Nov 11 19:38:31 2006
@@ -75,8 +75,8 @@
SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_callback(switch_core_session_t *session,
switch_input_callback_function_t dtmf_callback,
void *buf,
- unsigned int buflen,
- unsigned int timeout);
+ uint32_t buflen,
+ uint32_t timeout);
/*!
\brief Wait for specified number of DTMF digits, untile terminator is received or until the channel hangs up.
@@ -91,11 +91,11 @@
*/
SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_count(switch_core_session_t *session,
char *buf,
- unsigned int buflen,
- unsigned int maxdigits,
+ uint32_t buflen,
+ uint32_t maxdigits,
const char *terminators,
char *terminator,
- unsigned int timeout);
+ uint32_t timeout);
/*!
\brief Engage background Speech detection on a session
@@ -187,7 +187,7 @@
char *timer_name,
switch_input_callback_function_t dtmf_callback,
void *buf,
- unsigned int buflen);
+ uint32_t buflen);
@@ -207,7 +207,7 @@
char *file,
switch_input_callback_function_t dtmf_callback,
void *buf,
- unsigned int buflen);
+ uint32_t buflen);
/*!
\brief Function to evaluate an expression against a string
@@ -234,15 +234,15 @@
\note to test for digit capture failure look for \\0 in the first position of the buffer
*/
SWITCH_DECLARE(switch_status_t) switch_play_and_get_digits(switch_core_session_t *session,
- unsigned int min_digits,
- unsigned int max_digits,
- unsigned int max_tries,
- unsigned int timeout,
+ uint32_t min_digits,
+ uint32_t max_digits,
+ uint32_t max_tries,
+ uint32_t timeout,
char* valid_terminators,
char* audio_file,
char* bad_input_audio_file,
void* digit_buffer,
- unsigned int digit_buffer_length,
+ uint32_t digit_buffer_length,
char* digits_regex);
SWITCH_DECLARE(switch_status_t) switch_ivr_speak_text_handle(switch_core_session_t *session,
@@ -252,7 +252,7 @@
switch_input_callback_function_t dtmf_callback,
char *text,
void *buf,
- unsigned int buflen);
+ uint32_t buflen);
/*!
\brief Speak given text with given tts engine
@@ -275,7 +275,7 @@
switch_input_callback_function_t dtmf_callback,
char *text,
void *buf,
- unsigned int buflen);
+ uint32_t buflen);
/*!
\brief Make an outgoing call
@@ -457,7 +457,6 @@
int timeout,
int max_failures,
int inlen,
- unsigned int flags,
switch_memory_pool_t *pool);
/*!
@@ -500,10 +499,6 @@
*\return SWITCH_STATUS_SUCCESS if the object was a top level menu and it was freed
*/
SWITCH_DECLARE(switch_status_t) switch_ivr_menu_free_stack(switch_ivr_menu_t *stack);
-
-SWITCH_DECLARE(int) switch_ivr_menu_set_flag(switch_ivr_menu_t *menu, unsigned int flags);
-SWITCH_DECLARE(int) switch_ivr_menu_clear_flag(switch_ivr_menu_t *menu, unsigned int flags);
-SWITCH_DECLARE(int) switch_ivr_menu_test_flag(switch_ivr_menu_t *menu, unsigned int flags);
/** @} */
Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c (original)
+++ freeswitch/trunk/src/switch_ivr.c Sat Nov 11 19:38:31 2006
@@ -176,13 +176,13 @@
SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_callback(switch_core_session_t *session,
switch_input_callback_function_t input_callback,
void *buf,
- unsigned int buflen,
- unsigned int timeout)
+ uint32_t buflen,
+ uint32_t timeout)
{
switch_channel_t *channel;
switch_status_t status = SWITCH_STATUS_SUCCESS;
switch_time_t started = 0;
- unsigned int elapsed;
+ uint32_t elapsed;
channel = switch_core_session_get_channel(session);
assert(channel != NULL);
@@ -201,7 +201,7 @@
char dtmf[128];
if (timeout) {
- elapsed = (unsigned int)((switch_time_now() - started) / 1000);
+ elapsed = (uint32_t)((switch_time_now() - started) / 1000);
if (elapsed >= timeout) {
break;
}
@@ -243,17 +243,17 @@
SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_count(switch_core_session_t *session,
char *buf,
- unsigned int buflen,
- unsigned int maxdigits,
+ uint32_t buflen,
+ uint32_t maxdigits,
const char *terminators,
char *terminator,
- unsigned int timeout)
+ uint32_t timeout)
{
- unsigned int i = 0, x = (unsigned int) strlen(buf);
+ uint32_t i = 0, x = (uint32_t) strlen(buf);
switch_channel_t *channel;
switch_status_t status = SWITCH_STATUS_SUCCESS;
switch_time_t started = 0;
- unsigned int elapsed;
+ uint32_t elapsed;
channel = switch_core_session_get_channel(session);
assert(channel != NULL);
@@ -278,7 +278,7 @@
switch_event_t *event;
if (timeout) {
- elapsed = (unsigned int)((switch_time_now() - started) / 1000);
+ elapsed = (uint32_t)((switch_time_now() - started) / 1000);
if (elapsed >= timeout) {
break;
}
@@ -292,7 +292,7 @@
if (switch_channel_has_dtmf(channel)) {
char dtmf[128];
switch_channel_dequeue_dtmf(channel, dtmf, sizeof(dtmf));
- for(i =0 ; i < (unsigned int) strlen(dtmf); i++) {
+ for(i =0 ; i < (uint32_t) strlen(dtmf); i++) {
if (strchr(terminators, dtmf[i])) {
*terminator = dtmf[i];
@@ -327,7 +327,7 @@
char *file,
switch_input_callback_function_t input_callback,
void *buf,
- unsigned int buflen)
+ uint32_t buflen)
{
switch_channel_t *channel;
char dtmf[128];
@@ -911,7 +911,7 @@
char *timer_name,
switch_input_callback_function_t input_callback,
void *buf,
- unsigned int buflen)
+ uint32_t buflen)
{
switch_channel_t *channel;
int16_t abuf[FILE_STARTSAMPLES];
@@ -1298,15 +1298,15 @@
}
SWITCH_DECLARE(switch_status_t) switch_play_and_get_digits(switch_core_session_t *session,
- unsigned int min_digits,
- unsigned int max_digits,
- unsigned int max_tries,
- unsigned int timeout,
+ uint32_t min_digits,
+ uint32_t max_digits,
+ uint32_t max_tries,
+ uint32_t timeout,
char* valid_terminators,
char* prompt_audio_file,
char* bad_input_audio_file,
void* digit_buffer,
- unsigned int digit_buffer_length,
+ uint32_t digit_buffer_length,
char* digits_regex)
{
@@ -1423,7 +1423,7 @@
switch_input_callback_function_t input_callback,
char *text,
void *buf,
- unsigned int buflen)
+ uint32_t buflen)
{
switch_channel_t *channel;
short abuf[960];
@@ -1614,7 +1614,7 @@
switch_input_callback_function_t input_callback,
char *text,
void *buf,
- unsigned int buflen)
+ uint32_t buflen)
{
switch_channel_t *channel;
int interval = 0;
@@ -1640,7 +1640,7 @@
if (switch_core_speech_open(&sh,
tts_name,
voice_name,
- (unsigned int)rate,
+ (uint32_t)rate,
&flags,
switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid TTS module!\n");
@@ -3247,7 +3247,7 @@
int max_failures;
int timeout;
int inlen;
- unsigned int flags;
+ uint32_t flags;
struct switch_ivr_menu_action *actions;
struct switch_ivr_menu *next;
switch_memory_pool_t *pool;
@@ -3286,29 +3286,6 @@
}
-SWITCH_DECLARE(int) switch_ivr_menu_set_flag(switch_ivr_menu_t *menu, unsigned int flags)
-{
- if (flags) {
- menu->flags |= flags;
- }
-
- return menu->flags;
-}
-
-SWITCH_DECLARE(int) switch_ivr_menu_clear_flag(switch_ivr_menu_t *menu, unsigned int flags)
-{
- if (flags) {
- menu->flags &= ~flags;
- }
-
- return menu->flags;
-}
-
-SWITCH_DECLARE(int) switch_ivr_menu_test_flag(switch_ivr_menu_t *menu, unsigned int flags)
-{
- return (menu->flags & flags);
-}
-
SWITCH_DECLARE(switch_status_t) switch_ivr_menu_init(switch_ivr_menu_t **new,
switch_ivr_menu_t *main,
char *name,
@@ -3318,7 +3295,6 @@
int timeout,
int max_failures,
int inlen,
- unsigned int flags,
switch_memory_pool_t *pool)
{
switch_ivr_menu_t *menu;
@@ -3347,7 +3323,6 @@
menu->invalid_sound = switch_core_strdup(menu->pool, invalid_sound);
menu->max_failures = max_failures;
menu->timeout = timeout;
- menu->flags |= flags;
menu->actions = NULL;
menu->inlen = inlen;
if (newpool) {
@@ -3535,7 +3510,7 @@
status = SWITCH_STATUS_SUCCESS;
break;
case SWITCH_IVR_ACTION_TOMAIN:
- switch_ivr_menu_set_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN);
+ switch_set_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN);
status = SWITCH_STATUS_BREAK;
break;
default:
@@ -3547,8 +3522,8 @@
if (switch_test_flag(menu, SWITCH_IVR_MENU_FLAG_STACK)) { /* top level */
- if (switch_ivr_menu_test_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN)) { /* catch the fallback and recover */
- switch_ivr_menu_clear_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN);
+ if (switch_test_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN)) { /* catch the fallback and recover */
+ switch_clear_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN);
status = SWITCH_STATUS_SUCCESS;
running = 1;
continue;
1
0
Author: anthm
Date: Sat Nov 11 19:32:18 2006
New Revision: 3319
Modified:
freeswitch/trunk/src/include/switch_ivr.h
freeswitch/trunk/src/switch_ivr.c
Log:
add ivr api not sure it works yet
Modified: freeswitch/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_ivr.h (original)
+++ freeswitch/trunk/src/include/switch_ivr.h Sat Nov 11 19:32:18 2006
@@ -404,6 +404,109 @@
/** @} */
+/**
+ * @defgroup switch_ivr_menu IVR Menu Library
+ * @ingroup switch_ivr
+ * IVR menu functions
+ *
+ * @{
+ */
+
+typedef enum {
+ SWITCH_IVR_MENU_FLAG_FALLTOMAIN = (1 << 0),
+ SWITCH_IVR_MENU_FLAG_FREEPOOL = (1 << 1),
+ SWITCH_IVR_MENU_FLAG_STACK = (1 << 2),
+} switch_ivr_menu_flags;
+/* Actions are either set in switch_ivr_menu_bind_function or returned by a callback */
+typedef enum {
+ SWITCH_IVR_ACTION_DIE, /* Exit the menu. */
+ SWITCH_IVR_ACTION_EXECMENU, /* Goto another menu in the stack. */
+ SWITCH_IVR_ACTION_EXECAPP, /* Execute an application. */
+ SWITCH_IVR_ACTION_PLAYSOUND, /* Play a sound. */
+ SWITCH_IVR_ACTION_BACK, /* Go back 1 menu. */
+ SWITCH_IVR_ACTION_TOMAIN, /* Go back to the top level menu. */
+ SWITCH_IVR_ACTION_TRANSFER, /* Transfer caller to another ext. */
+} switch_ivr_action_t;
+struct switch_ivr_menu;
+typedef switch_ivr_action_t switch_ivr_menu_action_function_t(struct switch_ivr_menu *, char *, size_t, void *);
+typedef struct switch_ivr_menu switch_ivr_menu_t;
+typedef struct switch_ivr_menu_action switch_ivr_menu_action_t;
+/******************************************************************************************************/
+
+/*!
+ *\brief Create a new menu object.
+ *\param new the pointer to the new menu
+ *\param main The top level menu, (NULL if this is the top level one).
+ *\param name A pointer to the name of this menu.
+ *\param greeting_sound Optional pointer to a main sound (press 1 for this 2 for that).
+ *\param short_greeting_sound Optional pointer to a shorter main sound for subsequent loops.
+ *\param invalid_sound Optional pointer to a sound to play after invalid input.
+ *\param timeout A number of milliseconds to pause before looping.
+ *\param max_failures Maximum number of failures to withstand before hangingup This resets everytime you enter the menu.
+ *\param inlen The max len of the input (1 for 1 digit menu opts, 2 for 2 digit etc.)
+ *\param flags Optional parameters to set to influence the menu behaviour.
+ *\param pool memory pool (NULL to create one)
+ *\return SWUTCH_STATUS_SUCCESS if the menu was created
+ */
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_init(switch_ivr_menu_t **new,
+ switch_ivr_menu_t *main,
+ char *name,
+ char *greeting_sound,
+ char *short_greeting_sound,
+ char *invalid_sound,
+ int timeout,
+ int max_failures,
+ int inlen,
+ unsigned int flags,
+ switch_memory_pool_t *pool);
+
+/*!
+ *\brief switch_ivr_menu_bind_action: Bind a keystroke to an action.
+ *\param menu The menu obj you wish to bind to.
+ *\param ivr_action switch_ivr_action_t enum of what you want to do.
+ *\param arg Optional (sometimes necessary) string arguement.
+ *\param bind KeyStrokes to bind the action to.
+ *\return SWUTCH_STATUS_SUCCESS if the action was binded
+ */
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_bind_action(switch_ivr_menu_t *menu, switch_ivr_action_t ivr_action, char *arg, char *bind);
+
+
+/*!
+ *\brief Bind a keystroke to a callback function.
+ *\param menu The menu obj you wish to bind to.
+ *\param function The function to call [int proto(struct switch_ivr_menu *, char *, size_t, void *)]
+ *\param bind KeyStrokes to bind the action to.
+ *\note The function is passed a buffer to fill in with any required argument data.
+ *\note The function is also passed an optional void pointer to an object set upon menu execution. (think threads)
+ *\note The function returns an switch_ivr_action_t enum of what you want to do. and looks to your buffer for args.
+ *\return SWUTCH_STATUS_SUCCESS if the function was binded
+ */
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_bind_function(switch_ivr_menu_t *menu, switch_ivr_menu_action_function_t *function, char *bind);
+
+
+/*!
+ *\brief Execute a menu.
+ *\param session The session running the menu.
+ *\param stack The top-level menu object (the first one you created.)
+ *\param name A pointer to the name of the menu.
+ *\param obj A void pointer to an object you want to make avaliable to your callback functions that you may have binded with switch_ivr_menu_bind_function.
+ *\return SWITCH_STATUS_SUCCESS if all is well
+ */
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_execute(switch_core_session_t *session, switch_ivr_menu_t *stack, char *name, void *obj);
+
+/*!
+ *\brief free a stack of menu objects.
+ *\param stack The top level menu you wish to destroy.
+ *\return SWITCH_STATUS_SUCCESS if the object was a top level menu and it was freed
+ */
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_free_stack(switch_ivr_menu_t *stack);
+
+SWITCH_DECLARE(int) switch_ivr_menu_set_flag(switch_ivr_menu_t *menu, unsigned int flags);
+SWITCH_DECLARE(int) switch_ivr_menu_clear_flag(switch_ivr_menu_t *menu, unsigned int flags);
+SWITCH_DECLARE(int) switch_ivr_menu_test_flag(switch_ivr_menu_t *menu, unsigned int flags);
+
+/** @} */
+
SWITCH_END_EXTERN_C
#endif
Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c (original)
+++ freeswitch/trunk/src/switch_ivr.c Sat Nov 11 19:32:18 2006
@@ -1264,9 +1264,9 @@
pcre_prepared = pcre_compile(expression, 0, &error, &error_offset, NULL);
//See if there was an error in the expression
- if(error != NULL) {
+ if (error != NULL) {
//Clean up after ourselves
- if(pcre_prepared) {
+ if (pcre_prepared) {
pcre_free(pcre_prepared);
pcre_prepared = NULL;
}
@@ -1282,7 +1282,7 @@
match_count = pcre_exec(pcre_prepared, NULL, target, (int) strlen(target), 0, 0, offset_vectors, sizeof(offset_vectors) / sizeof(offset_vectors[0]));
//Clean up
- if(pcre_prepared) {
+ if (pcre_prepared) {
pcre_free(pcre_prepared);
pcre_prepared = NULL;
}
@@ -1290,7 +1290,7 @@
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "number of matches: %d\n", match_count);
//Was it a match made in heaven?
- if(match_count > 0) {
+ if (match_count > 0) {
return SWITCH_STATUS_SUCCESS;
} else {
return SWITCH_STATUS_FALSE;
@@ -1341,19 +1341,19 @@
}
//we only get one digit out of playback, see if thats all we needed and what we got
- if(max_digits == 1 && status == SWITCH_STATUS_BREAK) {
+ if (max_digits == 1 && status == SWITCH_STATUS_BREAK) {
//Check the digit if we have a regex
- if(digits_regex != NULL) {
+ if (digits_regex != NULL) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Checking regex [%s] on [%s]\n", digits_regex, digit_buffer);
//Make sure the digit is allowed
- if(switch_regex_match(digit_buffer, digits_regex) == SWITCH_STATUS_SUCCESS) {
+ if (switch_regex_match(digit_buffer, digits_regex) == SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Match found!\n");
//jobs done
break;
} else {
//See if a bad input prompt was specified, if so, play it
- if(strlen(bad_input_audio_file) > 0) {
+ if (strlen(bad_input_audio_file) > 0) {
status = switch_ivr_play_file(session, NULL, bad_input_audio_file, NULL, NULL, NULL, 0);
//Make sure we made it out alive
@@ -1375,25 +1375,25 @@
status = switch_ivr_collect_digits_count(session, digit_buffer, digit_buffer_length, max_digits, valid_terminators, &terminator, timeout);
//Make sure we made it out alive
- if(status != SWITCH_STATUS_SUCCESS) {
+ if (status != SWITCH_STATUS_SUCCESS) {
//Bail
switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
break;
}
//see if we got enough
- if(min_digits <= strlen(digit_buffer)) {
+ if (min_digits <= strlen(digit_buffer)) {
//See if we need to test a regex
- if(digits_regex != NULL) {
+ if (digits_regex != NULL) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Checking regex [%s] on [%s]\n", digits_regex, digit_buffer);
//Test the regex
- if(switch_regex_match(digit_buffer, digits_regex) == SWITCH_STATUS_SUCCESS) {
+ if (switch_regex_match(digit_buffer, digits_regex) == SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Match found!\n");
//Jobs done
return switch_channel_get_state(channel);
} else {
//See if a bad input prompt was specified, if so, play it
- if(strlen(bad_input_audio_file) > 0) {
+ if (strlen(bad_input_audio_file) > 0) {
status = switch_ivr_play_file(session, NULL, bad_input_audio_file, NULL, NULL, NULL, 0);
//Make sure we made it out alive
@@ -3235,3 +3235,343 @@
return SWITCH_STATUS_SUCCESS;
}
+
+
+struct switch_ivr_menu_action;
+
+struct switch_ivr_menu {
+ char *name;
+ char *greeting_sound;
+ char *short_greeting_sound;
+ char *invalid_sound;
+ int max_failures;
+ int timeout;
+ int inlen;
+ unsigned int flags;
+ struct switch_ivr_menu_action *actions;
+ struct switch_ivr_menu *next;
+ switch_memory_pool_t *pool;
+};
+
+
+struct switch_ivr_menu_action {
+ switch_ivr_menu_action_function_t *function;
+ switch_ivr_action_t ivr_action;
+ char *arg;
+ char *bind;
+ struct switch_ivr_menu_action *next;
+};
+
+static switch_ivr_menu_t *switch_ivr_find_menu(switch_ivr_menu_t *stack, char *name) {
+ switch_ivr_menu_t *ret;
+ for(ret = stack; ret ; ret = ret->next) {
+ if (!name || !strcmp(ret->name, name))
+ break;
+ }
+ return ret;
+}
+
+
+static void switch_ivr_menu_stack(switch_ivr_menu_t **top, switch_ivr_menu_t *bottom)
+{
+ switch_ivr_menu_t *ptr;
+
+ for(ptr = *top ; ptr && ptr->next ; ptr = ptr->next);
+
+ if (ptr) {
+ ptr->next = bottom;
+ } else {
+ *top = bottom;
+ }
+
+}
+
+SWITCH_DECLARE(int) switch_ivr_menu_set_flag(switch_ivr_menu_t *menu, unsigned int flags)
+{
+ if (flags) {
+ menu->flags |= flags;
+ }
+
+ return menu->flags;
+}
+
+SWITCH_DECLARE(int) switch_ivr_menu_clear_flag(switch_ivr_menu_t *menu, unsigned int flags)
+{
+ if (flags) {
+ menu->flags &= ~flags;
+ }
+
+ return menu->flags;
+}
+
+SWITCH_DECLARE(int) switch_ivr_menu_test_flag(switch_ivr_menu_t *menu, unsigned int flags)
+{
+ return (menu->flags & flags);
+}
+
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_init(switch_ivr_menu_t **new,
+ switch_ivr_menu_t *main,
+ char *name,
+ char *greeting_sound,
+ char *short_greeting_sound,
+ char *invalid_sound,
+ int timeout,
+ int max_failures,
+ int inlen,
+ unsigned int flags,
+ switch_memory_pool_t *pool)
+{
+ switch_ivr_menu_t *menu;
+ uint8_t newpool = 0;
+
+ if (!pool) {
+ if (switch_core_new_memory_pool(&pool) != SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "OH OH no pool\n");
+ return SWITCH_STATUS_MEMERR;
+ }
+ newpool = 1;
+ }
+
+ if (!(menu = switch_core_alloc(pool, sizeof(*menu)))) {
+ if (newpool) {
+ switch_core_destroy_memory_pool(&pool);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error!\n");
+ return SWITCH_STATUS_MEMERR;
+ }
+ }
+ menu->pool = pool;
+
+ menu->name = switch_core_strdup(menu->pool, name);
+ menu->greeting_sound = switch_core_strdup(menu->pool, greeting_sound);
+ menu->short_greeting_sound = switch_core_strdup(menu->pool, short_greeting_sound);
+ menu->invalid_sound = switch_core_strdup(menu->pool, invalid_sound);
+ menu->max_failures = max_failures;
+ menu->timeout = timeout;
+ menu->flags |= flags;
+ menu->actions = NULL;
+ menu->inlen = inlen;
+ if (newpool) {
+ menu->flags |= SWITCH_IVR_MENU_FLAG_FREEPOOL;
+ }
+
+ if (menu->timeout <= 0)
+ menu->timeout = 10000;
+ if (menu->inlen <= 0)
+ menu->inlen = 1;
+
+ if (main) {
+ switch_ivr_menu_stack(&main, menu);
+ } else {
+ menu->flags |= SWITCH_IVR_MENU_FLAG_STACK;
+ }
+
+ *new = menu;
+
+ return SWITCH_STATUS_SUCCESS;
+}
+
+
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_bind_action(switch_ivr_menu_t *menu, switch_ivr_action_t ivr_action, char *arg, char *bind)
+{
+ switch_ivr_menu_action_t *action;
+
+ if ((action = switch_core_alloc(menu->pool, sizeof(*action)))) {
+ action->bind = bind;
+ action->next = menu->actions;
+ action->arg = arg;
+ action->ivr_action = ivr_action;
+ menu->actions = action;
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ return SWITCH_STATUS_MEMERR;
+}
+
+
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_bind_function(switch_ivr_menu_t *menu, switch_ivr_menu_action_function_t *function, char *bind)
+{
+ switch_ivr_menu_action_t *action;
+
+
+ if ((action = switch_core_alloc(menu->pool, sizeof(*action)))) {
+ action->bind = bind;
+ action->function = function;
+ action->next = menu->actions;
+ menu->actions = action;
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ return SWITCH_STATUS_MEMERR;
+}
+
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_free_stack(switch_ivr_menu_t *stack)
+{
+ switch_memory_pool_t *pool;
+
+ if (!switch_test_flag(stack, SWITCH_IVR_MENU_FLAG_STACK) || switch_test_flag(stack, SWITCH_IVR_MENU_FLAG_FREEPOOL)) {
+ return SWITCH_STATUS_FALSE;
+ }
+
+ pool = stack->pool;
+ switch_core_destroy_memory_pool(&pool);
+ pool = NULL;
+
+ return SWITCH_STATUS_SUCCESS;
+
+}
+
+SWITCH_DECLARE(switch_status_t) switch_ivr_menu_execute(switch_core_session_t *session, switch_ivr_menu_t *stack, char *name, void *obj)
+{
+ int reps = 0, errs = 0, match = 0, running = 1;
+ char *greeting_sound = NULL, *aptr;
+ char *buf, arg[512];
+ switch_ivr_action_t todo = SWITCH_IVR_ACTION_DIE;
+ switch_ivr_menu_action_t *ap;
+ switch_ivr_menu_t *menu;
+ switch_channel_t *channel;
+ switch_status_t status = SWITCH_STATUS_SUCCESS;
+
+ channel = switch_core_session_get_channel(session);
+ assert(channel != NULL);
+
+
+ if (!(menu = switch_ivr_find_menu(stack, name))) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Menu!\n");
+ return -1;
+ }
+
+ if (!(buf = malloc(menu->inlen))) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Memory!\n");
+ return -1;
+ }
+
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Executing IVR menu %s\n", menu->name);
+
+ for (reps = 0 ; (running && status == SWITCH_STATUS_SUCCESS && errs < menu->max_failures) ; reps++) {
+
+ if (!switch_channel_ready(channel)) {
+ break;
+ }
+
+
+ if (reps > 0 && menu->short_greeting_sound) {
+ greeting_sound = menu->short_greeting_sound;
+ } else {
+ greeting_sound = menu->greeting_sound;
+ }
+
+ match = 0;
+ aptr = NULL;
+ memset(buf, 0, menu->inlen);
+ memset(arg, 0, sizeof(arg));
+
+ if (switch_play_and_get_digits(session,
+ menu->inlen,
+ menu->inlen,
+ 1,
+ menu->timeout, "#",
+ greeting_sound,
+ NULL,
+ buf,
+ menu->inlen,
+ NULL) != SWITCH_STATUS_SUCCESS) {
+ break;
+ }
+
+ if (!switch_strlen_zero(buf)) {
+ for(ap = menu->actions; ap ; ap = ap->next) {
+ if (!strcmp(buf, ap->bind)) {
+ char *membuf;
+
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "IVR menu %s matched %s\n", menu->name, buf);
+ match++;
+ errs = 0;
+ if (ap->function) {
+ todo = ap->function(menu, arg, sizeof(arg), obj);
+ aptr = arg;
+ } else {
+ todo = ap->ivr_action;
+ aptr = ap->arg;
+ }
+
+ switch(todo) {
+ case SWITCH_IVR_ACTION_DIE:
+ status = SWITCH_STATUS_FALSE;
+ break;
+ case SWITCH_IVR_ACTION_PLAYSOUND:
+ status = switch_ivr_play_file(session, NULL, aptr, NULL, NULL, NULL, 0);
+ break;
+ case SWITCH_IVR_ACTION_TRANSFER:
+ switch_ivr_session_transfer(session, aptr, NULL, NULL);
+ running = 0;
+ break;
+ case SWITCH_IVR_ACTION_EXECMENU:
+ reps = -1;
+ status = switch_ivr_menu_execute(session, stack, aptr, obj);
+ break;
+ case SWITCH_IVR_ACTION_EXECAPP: {
+ const switch_application_interface_t *application_interface;
+ if ((membuf = strdup(aptr))) {
+ char *app_name = membuf;
+ char *app_arg = strchr(app_name, ' ');
+
+ if (app_arg) {
+ *app_arg = '\0';
+ app_arg++;
+ }
+
+ if (app_name && app_arg) {
+ if ((application_interface = switch_loadable_module_get_application_interface(app_name))) {
+ if (application_interface->application_function) {
+ application_interface->application_function(session, app_arg);
+ }
+ }
+ }
+ }
+ }
+ break;
+ case SWITCH_IVR_ACTION_BACK:
+ running = 0;
+ status = SWITCH_STATUS_SUCCESS;
+ break;
+ case SWITCH_IVR_ACTION_TOMAIN:
+ switch_ivr_menu_set_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN);
+ status = SWITCH_STATUS_BREAK;
+ break;
+ default:
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid TODO!\n");
+ break;
+ }
+ }
+ }
+
+
+ if (switch_test_flag(menu, SWITCH_IVR_MENU_FLAG_STACK)) { /* top level */
+ if (switch_ivr_menu_test_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN)) { /* catch the fallback and recover */
+ switch_ivr_menu_clear_flag(stack, SWITCH_IVR_MENU_FLAG_FALLTOMAIN);
+ status = SWITCH_STATUS_SUCCESS;
+ running = 1;
+ continue;
+ }
+ }
+ }
+ if (!match) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "IVR menu %s caught invalid input %s\n", menu->name, buf);
+
+ if (menu->invalid_sound) {
+ status = switch_ivr_play_file(session, NULL, aptr, NULL, NULL, NULL, 0);
+ }
+ errs++;
+
+ if (status == SWITCH_STATUS_SUCCESS) {
+ status = switch_ivr_sleep(session, 1000);
+ }
+ }
+
+ }
+
+ switch_safe_free(buf);
+
+ return status;
+}
+
1
0
Author: anthm
Date: Sat Nov 11 14:40:41 2006
New Revision: 3316
Modified:
freeswitch/trunk/src/switch_event.c
Log:
let's make sure realloc works
Modified: freeswitch/trunk/src/switch_event.c
==============================================================================
--- freeswitch/trunk/src/switch_event.c (original)
+++ freeswitch/trunk/src/switch_event.c Sat Nov 11 14:40:41 2006
@@ -615,8 +615,14 @@
llen = strlen(hp->name) + strlen(hp->value) + 2;
if ((len + llen) > dlen) {
+ char *m;
dlen += (blocksize + (len + llen));
- buf = realloc(buf, dlen);
+ if ((m = realloc(buf, dlen))) {
+ buf = m;
+ } else {
+ switch_safe_free(buf);
+ return SWITCH_STATUS_MEMERR;
+ }
}
snprintf(buf + len, dlen - len, "%s: %s\n", hp->name, hp->value);
@@ -634,10 +640,16 @@
}
if ((len + llen) > dlen) {
+ char *m;
dlen += (blocksize + (len + llen));
- buf = realloc(buf, dlen);
+ if ((m = realloc(buf, dlen))) {
+ buf = m;
+ } else {
+ switch_safe_free(buf);
+ return SWITCH_STATUS_MEMERR;
+ }
}
-
+
if (blen) {
snprintf(buf + len, dlen - len, "Content-Length: %d\n\n%s", blen, event->body);
} else {
1
0
[commit] r3314 - in freeswitch/trunk/src: . include mod/event_handlers/mod_event_multicast mod/event_handlers/mod_event_socket mod/event_handlers/mod_event_test mod/event_handlers/mod_xmpp_event mod/languages/mod_spidermonkey
by Freeswitch SVN 11 Nov '06
by Freeswitch SVN 11 Nov '06
11 Nov '06
Author: anthm
Date: Sat Nov 11 14:32:45 2006
New Revision: 3314
Modified:
freeswitch/trunk/src/include/switch_event.h
freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c
freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
freeswitch/trunk/src/mod/event_handlers/mod_event_test/mod_event_test.c
freeswitch/trunk/src/mod/event_handlers/mod_xmpp_event/mod_xmpp_event.c
freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
freeswitch/trunk/src/switch_core.c
freeswitch/trunk/src/switch_event.c
Log:
make event_serialize dynamic
Modified: freeswitch/trunk/src/include/switch_event.h
==============================================================================
--- freeswitch/trunk/src/include/switch_event.h (original)
+++ freeswitch/trunk/src/include/switch_event.h Sat Nov 11 14:32:45 2006
@@ -238,13 +238,11 @@
/*!
\brief Render a string representation of an event sutable for printing or network transport
\param event the event to render
- \param buf a string buffer to write the data to
- \param buflen the size in bytes of the buffer
- \param fmt optional body of the event (varargs see standard sprintf family)
+ \param str a string pointer to point at the allocated data
\return SWITCH_STATUS_SUCCESS if the operation was successful
- \note the body supplied by this function will supersede an existing body the event may have
+ \note you must free the resulting string when you are finished with it
*/
-SWITCH_DECLARE(switch_status_t) switch_event_serialize(switch_event_t *event, char *buf, switch_size_t buflen, char *fmt, ...);
+SWITCH_DECLARE(switch_status_t) switch_event_serialize(switch_event_t *event, char **str);
/*!
\brief Render a XML representation of an event sutable for printing or network transport
Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c (original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c Sat Nov 11 14:32:45 2006
@@ -158,17 +158,20 @@
if (send) {
char *packet;
- memcpy(buf, &globals.host_hash, sizeof(globals.host_hash));
- packet = buf + sizeof(globals.host_hash);
- switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Multicast-Sender", globals.hostname);
+
switch (event->event_id) {
case SWITCH_EVENT_LOG:
return;
default:
- switch_event_serialize(event, packet, sizeof(buf) - sizeof(globals.host_hash), NULL);
- len = strlen(packet) + sizeof(globals.host_hash);;
- //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "\nEVENT\n--------------------------------\n%s\n", buf);
- switch_socket_sendto(globals.udp_socket, globals.addr, 0, buf, &len);
+ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Multicast-Sender", globals.hostname);
+ if (switch_event_serialize(event, &packet) == SWITCH_STATUS_SUCCESS) {
+ memcpy(buf, &globals.host_hash, sizeof(globals.host_hash));
+ switch_copy_string(buf + sizeof(globals.host_hash), packet, sizeof(buf) - sizeof(globals.host_hash));
+ len = strlen(packet) + sizeof(globals.host_hash);;
+ //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "\nEVENT\n--------------------------------\n%s\n", buf);
+ switch_socket_sendto(globals.udp_socket, globals.addr, 0, buf, &len);
+ switch_safe_free(packet);
+ }
break;
}
}
Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c (original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c Sat Nov 11 14:32:45 2006
@@ -345,24 +345,18 @@
if (switch_queue_trypop(listener->event_queue, &pop) == SWITCH_STATUS_SUCCESS) {
char hbuf[512];
switch_event_t *event = (switch_event_t *) pop;
- char *etype, *packet, *xmlstr = NULL;
+ char *etype;
- if (!listener->ebuf) {
- listener->ebuf = switch_core_alloc(listener->pool, CMD_BUFLEN);
- }
-
do_sleep = 0;
if (listener->format == EVENT_FORMAT_PLAIN) {
etype = "plain";
- switch_event_serialize(event, listener->ebuf, CMD_BUFLEN, NULL);
- packet = listener->ebuf;
+ switch_event_serialize(event, &listener->ebuf);
} else {
switch_xml_t xml;
etype = "xml";
if ((xml = switch_event_xmlize(event, NULL))) {
- xmlstr = switch_xml_toxml(xml);
- packet = xmlstr;
+ listener->ebuf = switch_xml_toxml(xml);
switch_xml_free(xml);
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "XML ERROR!\n");
@@ -370,7 +364,7 @@
}
}
- len = strlen(packet);
+ len = strlen(listener->ebuf);
snprintf(hbuf, sizeof(hbuf), "Content-Length: %"APR_SSIZE_T_FMT"\n"
"Content-Type: text/event-%s\n"
@@ -379,12 +373,10 @@
len = strlen(hbuf);
switch_socket_send(listener->sock, hbuf, &len);
- len = strlen(packet);
- switch_socket_send(listener->sock, packet, &len);
+ len = strlen(listener->ebuf);
+ switch_socket_send(listener->sock, listener->ebuf, &len);
- if (xmlstr) {
- free(xmlstr);
- }
+ switch_safe_free(listener->ebuf);
}
}
}
@@ -392,7 +384,9 @@
switch_yield(1000);
}
}
-
+
+
+
return status;
}
Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_test/mod_event_test.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_event_test/mod_event_test.c (original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_event_test/mod_event_test.c Sat Nov 11 14:32:45 2006
@@ -38,7 +38,7 @@
static void event_handler(switch_event_t *event)
{
- char buf[1024];
+ char *buf;
switch_xml_t xml;
char *xmlstr = "N/A";
uint8_t dofree = 0;
@@ -47,7 +47,7 @@
case SWITCH_EVENT_LOG:
return;
default:
- switch_event_serialize(event, buf, sizeof(buf), NULL);
+ switch_event_serialize(event, &buf);
if ((xml = switch_event_xmlize(event, NULL))) {
xmlstr = switch_xml_toxml(xml);
dofree++;
@@ -58,6 +58,8 @@
break;
}
+ switch_safe_free(buf);
+
if (dofree) {
if (xml) {
switch_xml_free(xml);
Modified: freeswitch/trunk/src/mod/event_handlers/mod_xmpp_event/mod_xmpp_event.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_xmpp_event/mod_xmpp_event.c (original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_xmpp_event/mod_xmpp_event.c Sat Nov 11 14:32:45 2006
@@ -60,7 +60,7 @@
static void event_handler(switch_event_t *event)
{
- char buf[1024];
+ char *buf;
iks *msg;
int loops = 0;
@@ -78,12 +78,13 @@
switch (event->event_id) {
default:
- switch_event_serialize(event, buf, sizeof(buf), NULL);
+ switch_event_serialize(event, &buf);
//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "\nEVENT\n--------------------------------\n%s\n", buf);
msg = iks_make_msg(IKS_TYPE_NONE, globals.target_jid, buf);
iks_insert_attrib(msg, "subject", "Event");
iks_send(globals.session.parser, msg);
iks_delete(msg);
+ switch_safe_free(buf);
break;
}
}
Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c (original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c Sat Nov 11 14:32:45 2006
@@ -264,7 +264,7 @@
static JSBool event_serialize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
struct event_obj *eo = JS_GetPrivate(cx, obj);
- char buf[1024];
+ char *buf;
uint8_t isxml = 0;
if (!eo) {
@@ -291,8 +291,10 @@
*rval = BOOLEAN_TO_JSVAL( JS_FALSE );
}
} else {
- switch_event_serialize(eo->event, buf, sizeof(buf), NULL);
- *rval = STRING_TO_JSVAL (JS_NewStringCopyZ(cx, buf));
+ if (switch_event_serialize(eo->event, &buf) == SWITCH_STATUS_SUCCESS) {
+ *rval = STRING_TO_JSVAL (JS_NewStringCopyZ(cx, buf));
+ switch_safe_free(buf);
+ }
}
return JS_TRUE;
Modified: freeswitch/trunk/src/switch_core.c
==============================================================================
--- freeswitch/trunk/src/switch_core.c (original)
+++ freeswitch/trunk/src/switch_core.c Sat Nov 11 14:32:45 2006
@@ -3695,9 +3695,6 @@
);
break;
default:
- //buf[0] = '\0';
- //switch_event_serialize(event, buf, sizeof(buf), NULL);
- //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "\nCORE EVENT\n--------------------------------\n%s\n", buf);
break;
}
Modified: freeswitch/trunk/src/switch_event.c
==============================================================================
--- freeswitch/trunk/src/switch_event.c (original)
+++ freeswitch/trunk/src/switch_event.c Sat Nov 11 14:32:45 2006
@@ -596,55 +596,59 @@
return SWITCH_STATUS_SUCCESS;
}
-SWITCH_DECLARE(switch_status_t) switch_event_serialize(switch_event_t *event, char *buf, switch_size_t buflen, char *fmt, ...)
+SWITCH_DECLARE(switch_status_t) switch_event_serialize(switch_event_t *event, char **str)
{
switch_size_t len = 0;
switch_event_header_t *hp;
- char *data = NULL, *body = NULL;
- int ret = 0;
- va_list ap;
+ switch_size_t llen = 0, dlen = 0, blocksize = 512;
+ char *buf;
+
+ *str = NULL;
- if (fmt) {
- va_start(ap, fmt);
-#ifdef HAVE_VASPRINTF
- ret = vasprintf(&data, fmt, ap);
-#else
- data = (char *) malloc(2048);
- ret = vsnprintf(data, 2048, fmt, ap);
-#endif
- va_end(ap);
- if (ret == -1) {
- return SWITCH_STATUS_MEMERR;
- }
+ if (!(buf = malloc(blocksize))) {
+ return SWITCH_STATUS_MEMERR;
}
+ dlen = blocksize;
+
for (hp = event->headers; hp; hp = hp->next) {
- snprintf(buf + len, buflen - len, "%s: %s\n", hp->name, hp->value);
- len = strlen(buf);
+ llen = strlen(hp->name) + strlen(hp->value) + 2;
+
+ if ((len + llen) > dlen) {
+ dlen += (blocksize + (len + llen));
+ buf = realloc(buf, dlen);
+ }
+ snprintf(buf + len, dlen - len, "%s: %s\n", hp->name, hp->value);
+ len = strlen(buf);
}
- if (data) {
- body = data;
- } else if (event->body) {
- body = event->body;
- }
+ if (event->body) {
+ int blen = (int) strlen(event->body);
+ llen = blen;
- if (body) {
- int blen = (int) strlen(body);
if (blen) {
- snprintf(buf + len, buflen - len, "Content-Length: %d\n\n%s", blen, body);
+ llen += 25;
} else {
- snprintf(buf + len, buflen - len, "\n");
+ llen += 5;
}
+
+ if ((len + llen) > dlen) {
+ dlen += (blocksize + (len + llen));
+ buf = realloc(buf, dlen);
+ }
+
+ if (blen) {
+ snprintf(buf + len, dlen - len, "Content-Length: %d\n\n%s", blen, event->body);
+ } else {
+ snprintf(buf + len, dlen - len, "\n");
+ }
} else {
- snprintf(buf + len, buflen - len, "\n");
+ snprintf(buf + len, dlen - len, "\n");
}
- if (data) {
- free(data);
- }
-
+ *str = buf;
+
return SWITCH_STATUS_SUCCESS;
}
1
0
Author: anthm
Date: Sat Nov 11 12:36:44 2006
New Revision: 3313
Modified:
freeswitch/trunk/src/include/switch_core.h
freeswitch/trunk/src/include/switch_ivr.h
Log:
dox
Modified: freeswitch/trunk/src/include/switch_core.h
==============================================================================
--- freeswitch/trunk/src/include/switch_core.h (original)
+++ freeswitch/trunk/src/include/switch_core.h Sat Nov 11 12:36:44 2006
@@ -130,7 +130,7 @@
switch_media_bug_t **new_bug);
/*!
\brief Obtain private data from a media bug
- \param session the session to obtain the private data from
+ \param bug the bug to get the data from
\return the private data
*/
SWITCH_DECLARE(void *) switch_core_media_bug_get_user_data(switch_media_bug_t *bug);
@@ -1205,6 +1205,7 @@
/*!
\brief Unload a grammar from an asr handle
\param ah the handle to unload the grammar from
+ \param grammar the grammar to unload
\return SWITCH_STATUS_SUCCESS
*/
SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, char *grammar);
Modified: freeswitch/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_ivr.h (original)
+++ freeswitch/trunk/src/include/switch_ivr.h Sat Nov 11 12:36:44 2006
@@ -229,8 +229,9 @@
\param bad_input_audio_file file to play if the input from the user was invalid
\param digit_buffer variable digits captured will be put back into (empty if capture failed)
\param digit_buffer_length length of the buffer for digits (should be the same or larger than max_digits)
+ \param digits_regex the qualifying regex
\return switch status, used to note status of channel (will still return success if digit capture failed)
- \note to test for digit capture failure look for \0 in the first position of the buffer
+ \note to test for digit capture failure look for \\0 in the first position of the buffer
*/
SWITCH_DECLARE(switch_status_t) switch_play_and_get_digits(switch_core_session_t *session,
unsigned int min_digits,
@@ -378,7 +379,7 @@
/*!
\brief Signal the session with a protocol specific unhold message.
- \param uuid the uuid of the session to unhold
+ \param session the session to unhold
\return SWITCH_STATUS_SUCCESS if all is well
*/
SWITCH_DECLARE(switch_status_t) switch_ivr_unhold(switch_core_session_t *session);
1
0
[commit] r3310 - in freeswitch/trunk: . src/mod/languages/mod_spidermonkey src/mod/languages/mod_spidermonkey_core_db src/mod/languages/mod_spidermonkey_teletone
by Freeswitch SVN 11 Nov '06
by Freeswitch SVN 11 Nov '06
11 Nov '06
Author: mikej
Date: Sat Nov 11 01:06:18 2006
New Revision: 3310
Added:
freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.vcproj
freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.vcproj
Modified:
freeswitch/trunk/Freeswitch.sln
freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h
freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.vcproj
Log:
windows build for new spidermonkey modules.
Modified: freeswitch/trunk/Freeswitch.sln
==============================================================================
--- freeswitch/trunk/Freeswitch.sln (original)
+++ freeswitch/trunk/Freeswitch.sln Sat Nov 11 01:06:18 2006
@@ -3,21 +3,21 @@
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchConsole", "w32\Console\FreeSwitchConsole.vcproj", "{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchCoreLib", "w32\Library\FreeSwitchCore.vcproj", "{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}"
ProjectSection(ProjectDependencies) = postProject
- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761} = {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g729", "src\mod\codecs\mod_g729\mod_g729.vcproj", "{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}"
@@ -27,42 +27,42 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsm", "src\mod\codecs\mod_gsm\mod_gsm.vcproj", "{4926323F-4EA8-4B7D-A3D3-65488725988F}"
ProjectSection(ProjectDependencies) = postProject
- {8FD2E297-4096-47E5-9258-C48FF1841523} = {8FD2E297-4096-47E5-9258-C48FF1841523}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {8FD2E297-4096-47E5-9258-C48FF1841523} = {8FD2E297-4096-47E5-9258-C48FF1841523}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xmpp_event", "src\mod\event_handlers\mod_xmpp_event\mod_xmpp_event.vcproj", "{F10BE67C-A8FF-4CB2-AF29-D46D2590DC59}"
ProjectSection(ProjectDependencies) = postProject
- {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sndfile", "src\mod\formats\mod_sndfile\mod_sndfile.vcproj", "{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {3D0370CA-BED2-4657-A475-32375CBCB6E4}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {3D0370CA-BED2-4657-A475-32375CBCB6E4}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_bridgecall", "src\mod\applications\mod_bridgecall\mod_bridgecall.vcproj", "{E1794405-29D4-466D-9BE3-DD2344C2A663}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_test", "src\mod\event_handlers\mod_event_test\mod_event_test.vcproj", "{3A2A7795-C216-4FFF-B8EF-4D17A84BACCC}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g711", "src\mod\codecs\mod_g711\mod_g711.vcproj", "{B1FE4613-3F4B-4DAF-9714-2472BF8F56AE}"
@@ -72,28 +72,28 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_iax", "src\mod\endpoints\mod_iax\mod_iax.vcproj", "{3A5B9131-F20C-4A85-9447-6C1610941CEE}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_playback", "src\mod\applications\mod_playback\mod_playback.vcproj", "{78100236-7CEA-4948-96CC-E8ED3160329C}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.vcproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"
ProjectSection(ProjectDependencies) = postProject
- {C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B} = {C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B} = {C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_l16", "src\mod\codecs\mod_l16\mod_l16.vcproj", "{5844AFE1-AA3E-4BDB-A9EF-119AEF19DF88}"
@@ -103,24 +103,24 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_softtimer", "src\mod\timers\mod_softtimer\mod_softtimer.vcproj", "{DCC13474-28DF-47CA-A8EB-72F8CE9A78C5}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_speex", "src\mod\codecs\mod_speex\mod_speex.vcproj", "{5580D60E-0F77-4716-9CD4-B8E5986FA375}"
ProjectSection(ProjectDependencies) = postProject
- {1C469CDD-A3AF-4A94-A592-B2CF12F2D918} = {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {1C469CDD-A3AF-4A94-A592-B2CF12F2D918} = {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_woomera", "src\mod\endpoints\mod_woomera\mod_woomera.vcproj", "{FE3540C5-3303-46E0-A69E-D92F775687F1}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Codecs", "Codecs", "{F881ADA2-2F1A-4046-9FEB-191D9422D781}"
@@ -143,19 +143,19 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_xml", "src\mod\dialplans\mod_dialplan_xml\mod_dialplan_xml.vcproj", "{07113B25-D3AF-4E04-BA77-4CD1171F022C}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ivrtest", "src\mod\applications\mod_ivrtest\mod_ivrtest.vcproj", "{419AA391-5F3F-4BFE-A869-9D154D62A792}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "FreeSwitchSetup", "w32\Setup\Setup.vdproj", "{B17FFBE6-A942-4056-8346-B624FB5D995B}"
@@ -169,28 +169,28 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_directory", "src\mod\dialplans\mod_dialplan_directory\mod_dialplan_directory.vcproj", "{A27CCA23-1541-4337-81A4-F0A6413078A0}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_zeroconf", "src\mod\event_handlers\mod_zeroconf\mod_zeroconf.vcproj", "{C7705DC4-2088-493E-AF8D-65BC6D65C125}"
ProjectSection(ProjectDependencies) = postProject
- {0D826AF5-0506-4C50-BB8B-7DB019AC21AE} = {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {49C34584-B6DA-448F-83CF-27584DC9FC90} = {49C34584-B6DA-448F-83CF-27584DC9FC90}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {49C34584-B6DA-448F-83CF-27584DC9FC90} = {49C34584-B6DA-448F-83CF-27584DC9FC90}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE} = {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_multicast", "src\mod\event_handlers\mod_event_multicast\mod_event_multicast.vcproj", "{784113EF-44D9-4949-835D-7065D3C7AD08}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libteletone", "libs\libteletone\libteletone.vcproj", "{89385C74-5860-4174-9CAF-A39E7C48909C}"
@@ -199,15 +199,15 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey", "src\mod\languages\mod_spidermonkey\mod_spidermonkey.vcproj", "{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}"
ProjectSection(ProjectDependencies) = postProject
- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
- {76D0A759-9C07-42D4-90A9-82AE15462C95} = {76D0A759-9C07-42D4-90A9-82AE15462C95}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {76D0A759-9C07-42D4-90A9-82AE15462C95} = {76D0A759-9C07-42D4-90A9-82AE15462C95}
+ {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
+ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ASR-TTS", "ASR-TTS", "{4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}"
@@ -229,36 +229,36 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_echo", "src\mod\applications\mod_echo\mod_echo.vcproj", "{0E2C6395-13B9-46E5-9264-8859D346018D}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ilbc", "src\mod\codecs\mod_ilbc\mod_ilbc.vcproj", "{D3EC0AFF-76FC-4210-A825-9A17410660A3}"
ProjectSection(ProjectDependencies) = postProject
- {989BB874-7AF1-44CB-8E5C-CC8113D267E8} = {989BB874-7AF1-44CB-8E5C-CC8113D267E8}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {989BB874-7AF1-44CB-8E5C-CC8113D267E8} = {989BB874-7AF1-44CB-8E5C-CC8113D267E8}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dingaling", "src\mod\endpoints\mod_dingaling\mod_dingaling.vcproj", "{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}"
ProjectSection(ProjectDependencies) = postProject
- {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{1906D736-08BD-4EE1-924F-B536249B9A54} = {1906D736-08BD-4EE1-924F-B536249B9A54}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_commands", "src\mod\applications\mod_commands\mod_commands.vcproj", "{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}"
ProjectSection(ProjectDependencies) = postProject
- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Loggers", "Loggers", "{A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}"
@@ -272,55 +272,55 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_rpc", "src\mod\xml_int\mod_xml_rpc\mod_xml_rpc.vcproj", "{CBEC7225-0C21-4DA8-978E-1F158F8AD950}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {155844C3-EC5F-407F-97A4-A2DDADED9B2F}
- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {A3FE0076-B366-429D-A238-D7304DA7D3C1} = {A3FE0076-B366-429D-A238-D7304DA7D3C1}
- {356EC96D-4C9F-47B5-9083-FC328B87BA94} = {356EC96D-4C9F-47B5-9083-FC328B87BA94}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {356EC96D-4C9F-47B5-9083-FC328B87BA94} = {356EC96D-4C9F-47B5-9083-FC328B87BA94}
+ {A3FE0076-B366-429D-A238-D7304DA7D3C1} = {A3FE0076-B366-429D-A238-D7304DA7D3C1}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
+ {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {155844C3-EC5F-407F-97A4-A2DDADED9B2F}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rss", "src\mod\applications\mod_rss\mod_rss.vcproj", "{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_conference", "src\mod\applications\mod_conference\mod_conference.vcproj", "{C24FB505-05D7-4319-8485-7540B44C8603}"
ProjectSection(ProjectDependencies) = postProject
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dptools", "src\mod\applications\mod_dptools\mod_dptools.vcproj", "{B5881A85-FE70-4F64-8607-2CAAE52669C6}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_socket", "src\mod\event_handlers\mod_event_socket\mod_event_socket.vcproj", "{05515420-16DE-4E63-BE73-85BE85BA5142}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cdr", "src\mod\event_handlers\mod_cdr\mod_cdr.vcproj", "{3D1EED36-A510-4EDB-B4D9-4E0F4A5EC2A8}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Libraries", "_Libraries", "{EB910B0D-F27D-4B62-B67B-DE834C99AC5B}"
@@ -345,8 +345,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre", "libs\win32\pcre\libpcre.vcproj", "{8D04B550-D240-4A44-8A18-35DA3F7038D9}"
ProjectSection(ProjectDependencies) = postProject
- {1CED5987-A529-46DC-B30F-870D85FF9C94} = {1CED5987-A529-46DC-B30F-870D85FF9C94}
{91695C7C-7AD1-4782-9727-508F82D9C577} = {91695C7C-7AD1-4782-9727-508F82D9C577}
+ {1CED5987-A529-46DC-B30F-870D85FF9C94} = {1CED5987-A529-46DC-B30F-870D85FF9C94}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre Generate pcre_chartables.c", "libs\win32\pcre\pcre_chartables.c.vcproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}"
@@ -363,18 +363,18 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapriconv", "libs\win32\apr-iconv\libapriconv.vcproj", "{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {5786D51D-1C6A-4BE1-8804-29954DB5258F} = {5786D51D-1C6A-4BE1-8804-29954DB5258F}
{C4854C1D-5478-4F87-AB62-36CCDDDBA3C7} = {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}
+ {5786D51D-1C6A-4BE1-8804-29954DB5258F} = {5786D51D-1C6A-4BE1-8804-29954DB5258F}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.vcproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}"
ProjectSection(ProjectDependencies) = postProject
- {E969F3E0-1043-482A-AD49-787B8356BA92} = {E969F3E0-1043-482A-AD49-787B8356BA92}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {5786D51D-1C6A-4BE1-8804-29954DB5258F} = {5786D51D-1C6A-4BE1-8804-29954DB5258F}
{C4854C1D-5478-4F87-AB62-36CCDDDBA3C7} = {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}
+ {5786D51D-1C6A-4BE1-8804-29954DB5258F} = {5786D51D-1C6A-4BE1-8804-29954DB5258F}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {E969F3E0-1043-482A-AD49-787B8356BA92} = {E969F3E0-1043-482A-AD49-787B8356BA92}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Downloads", "_Downloads", "{C120A020-773F-4EA3-923F-B67AF28B750D}"
@@ -388,8 +388,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download APR-Util", "libs\win32\Download APR-Util.vcproj", "{E969F3E0-1043-482A-AD49-787B8356BA92}"
ProjectSection(ProjectDependencies) = postProject
- {5786D51D-1C6A-4BE1-8804-29954DB5258F} = {5786D51D-1C6A-4BE1-8804-29954DB5258F}
{C4854C1D-5478-4F87-AB62-36CCDDDBA3C7} = {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}
+ {5786D51D-1C6A-4BE1-8804-29954DB5258F} = {5786D51D-1C6A-4BE1-8804-29954DB5258F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download PCRE", "libs\win32\Download PCRE.vcproj", "{91695C7C-7AD1-4782-9727-508F82D9C577}"
@@ -426,8 +426,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mDNSResponder static library", "libs\win32\howl\libmDNSResponder.vcproj", "{49C34584-B6DA-448F-83CF-27584DC9FC90}"
ProjectSection(ProjectDependencies) = postProject
- {0D826AF5-0506-4C50-BB8B-7DB019AC21AE} = {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}
{5927104D-C14C-4AC8-925C-4AB681762E75} = {5927104D-C14C-4AC8-925C-4AB681762E75}
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE} = {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LIBSNDFILE", "libs\win32\Download LIBSNDFILE.vcproj", "{EFA9E76E-62A5-4237-B7E9-F39B8E174CD5}"
@@ -453,8 +453,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Abyss", "libs\win32\xmlrpc\Abyss.vcproj", "{356EC96D-4C9F-47B5-9083-FC328B87BA94}"
ProjectSection(ProjectDependencies) = postProject
- {EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121} = {EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121}
{A3FE0076-B366-429D-A238-D7304DA7D3C1} = {A3FE0076-B366-429D-A238-D7304DA7D3C1}
+ {EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121} = {EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "libs\win32\apr-util\xml.vcproj", "{155844C3-EC5F-407F-97A4-A2DDADED9B2F}"
@@ -468,58 +468,58 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "js", "libs\win32\js\js.vcproj", "{204FA0DE-305D-4414-AE2E-F195A23F390D}"
ProjectSection(ProjectDependencies) = postProject
- {B0AA13FC-636C-45A7-8EAE-663220679A75} = {B0AA13FC-636C-45A7-8EAE-663220679A75}
{76D0A759-9C07-42D4-90A9-82AE15462C95} = {76D0A759-9C07-42D4-90A9-82AE15462C95}
+ {B0AA13FC-636C-45A7-8EAE-663220679A75} = {B0AA13FC-636C-45A7-8EAE-663220679A75}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.vcproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}"
ProjectSection(ProjectDependencies) = postProject
- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libg726", "libs\codec\g726\libg726.vcproj", "{5A6A281A-AA50-470A-8305-202BDA1CD1BF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g726", "src\mod\codecs\mod_g726\mod_g726.vcproj", "{486369EB-F150-4B56-BCC8-77B9E18FF5F5}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{5A6A281A-AA50-470A-8305-202BDA1CD1BF} = {5A6A281A-AA50-470A-8305-202BDA1CD1BF}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libg7xx", "libs\codec\g7xx\libg7xx.vcproj", "{D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g722", "src\mod\codecs\mod_g722\mod_g722.vcproj", "{D42518CC-7475-454D-B392-0E132C07D761}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{D71E7338-8D9C-4FE4-A15F-D5CC60202C7C} = {D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_park", "src\mod\applications\mod_park\mod_park.vcproj", "{2740F45C-475A-4DE0-BCED-6E2E5F6C4B8B}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download SOFIA", "libs\win32\Download SOFIA.vcproj", "{8B2CE7D1-77EF-45ED-927D-82147805440B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsofia_sip_ua_static", "libs\win32\sofia\libsofia_sip_ua_static.vcproj", "{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}"
ProjectSection(ProjectDependencies) = postProject
- {8B2CE7D1-77EF-45ED-927D-82147805440B} = {8B2CE7D1-77EF-45ED-927D-82147805440B}
- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}
+ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}
+ {8B2CE7D1-77EF-45ED-927D-82147805440B} = {8B2CE7D1-77EF-45ED-927D-82147805440B}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download PTHREAD", "libs\win32\Download PTHREAD.vcproj", "{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}"
@@ -531,376 +531,772 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g723_1", "src\mod\codecs\mod_g723_1\mod_g723_1.vcproj", "{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_native_file", "src\mod\formats\mod_native_file\mod_native_file.vcproj", "{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}"
ProjectSection(ProjectDependencies) = postProject
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSwitch.NET", "src\dotnet\FreeSwitch.NET.csproj", "{251CAABC-16C3-4593-A491-603B908094E0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_core_db", "src\mod\languages\mod_spidermonkey_core_db\mod_spidermonkey_core_db.vcproj", "{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}"
+ ProjectSection(ProjectDependencies) = postProject
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSwitch.NET", "src\dotnet\FreeSwitch.NET.csproj", "{251CAABC-16C3-4593-A491-603B908094E0}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_teletone", "src\mod\languages\mod_spidermonkey_teletone\mod_spidermonkey_teletone.vcproj", "{8F992C49-6C51-412F-B2A3-34EAB708EB65}"
+ ProjectSection(ProjectDependencies) = postProject
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
+ Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.ActiveCfg = Debug|Win32
{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.Build.0 = Debug|Win32
+ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Mixed Platforms.Build.0 = Release|Win32
{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.ActiveCfg = Release|Win32
{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.Build.0 = Release|Win32
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.ActiveCfg = Debug|Win32
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.Build.0 = Debug|Win32
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Mixed Platforms.Build.0 = Release|Win32
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.ActiveCfg = Release|Win32
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.Build.0 = Release|Win32
+ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32
{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.Build.0 = Debug Passthrough|Win32
+ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Mixed Platforms.Build.0 = Release|Win32
{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.ActiveCfg = Release Passthrough|Win32
{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.Build.0 = Release Passthrough|Win32
+ {4926323F-4EA8-4B7D-A3D3-65488725988F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {4926323F-4EA8-4B7D-A3D3-65488725988F}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{4926323F-4EA8-4B7D-A3D3-65488725988F}.Debug|Win32.ActiveCfg = Debug|Win32
{4926323F-4EA8-4B7D-A3D3-65488725988F}.Debug|Win32.Build.0 = Debug|Win32
+ {4926323F-4EA8-4B7D-A3D3-65488725988F}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {4926323F-4EA8-4B7D-A3D3-65488725988F}.Release|Mixed Platforms.Build.0 = Release|Win32
{4926323F-4EA8-4B7D-A3D3-65488725988F}.Release|Win32.ActiveCfg = Release|Win32
{4926323F-4EA8-4B7D-A3D3-65488725988F}.Release|Win32.Build.0 = Release|Win32
+ {F10BE67C-A8FF-4CB2-AF29-D46D2590DC59}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {F10BE67C-A8FF-4CB2-AF29-D46D2590DC59}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{F10BE67C-A8FF-4CB2-AF29-D46D2590DC59}.Debug|Win32.ActiveCfg = Debug|Win32
{F10BE67C-A8FF-4CB2-AF29-D46D2590DC59}.Debug|Win32.Build.0 = Debug|Win32
+ {F10BE67C-A8FF-4CB2-AF29-D46D2590DC59}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {F10BE67C-A8FF-4CB2-AF29-D46D2590DC59}.Release|Mixed Platforms.Build.0 = Release|Win32
{F10BE67C-A8FF-4CB2-AF29-D46D2590DC59}.Release|Win32.ActiveCfg = Release|Win32
{F10BE67C-A8FF-4CB2-AF29-D46D2590DC59}.Release|Win32.Build.0 = Release|Win32
+ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.ActiveCfg = Debug|Win32
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.Build.0 = Debug|Win32
+ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Mixed Platforms.Build.0 = Release|Win32
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.ActiveCfg = Release|Win32
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.Build.0 = Release|Win32
+ {E1794405-29D4-466D-9BE3-DD2344C2A663}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {E1794405-29D4-466D-9BE3-DD2344C2A663}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{E1794405-29D4-466D-9BE3-DD2344C2A663}.Debug|Win32.ActiveCfg = Debug|Win32
{E1794405-29D4-466D-9BE3-DD2344C2A663}.Debug|Win32.Build.0 = Debug|Win32
+ {E1794405-29D4-466D-9BE3-DD2344C2A663}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {E1794405-29D4-466D-9BE3-DD2344C2A663}.Release|Mixed Platforms.Build.0 = Release|Win32
{E1794405-29D4-466D-9BE3-DD2344C2A663}.Release|Win32.ActiveCfg = Release|Win32
{E1794405-29D4-466D-9BE3-DD2344C2A663}.Release|Win32.Build.0 = Release|Win32
+ {3A2A7795-C216-4FFF-B8EF-4D17A84BACCC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {3A2A7795-C216-4FFF-B8EF-4D17A84BACCC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{3A2A7795-C216-4FFF-B8EF-4D17A84BACCC}.Debug|Win32.ActiveCfg = Debug|Win32
{3A2A7795-C216-4FFF-B8EF-4D17A84BACCC}.Debug|Win32.Build.0 = Debug|Win32
+ {3A2A7795-C216-4FFF-B8EF-4D17A84BACCC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {3A2A7795-C216-4FFF-B8EF-4D17A84BACCC}.Release|Mixed Platforms.Build.0 = Release|Win32
{3A2A7795-C216-4FFF-B8EF-4D17A84BACCC}.Release|Win32.ActiveCfg = Release|Win32
{3A2A7795-C216-4FFF-B8EF-4D17A84BACCC}.Release|Win32.Build.0 = Release|Win32
+ {B1FE4613-3F4B-4DAF-9714-2472BF8F56AE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {B1FE4613-3F4B-4DAF-9714-2472BF8F56AE}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B1FE4613-3F4B-4DAF-9714-2472BF8F56AE}.Debug|Win32.ActiveCfg = Debug|Win32
{B1FE4613-3F4B-4DAF-9714-2472BF8F56AE}.Debug|Win32.Build.0 = Debug|Win32
+ {B1FE4613-3F4B-4DAF-9714-2472BF8F56AE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {B1FE4613-3F4B-4DAF-9714-2472BF8F56AE}.Release|Mixed Platforms.Build.0 = Release|Win32
{B1FE4613-3F4B-4DAF-9714-2472BF8F56AE}.Release|Win32.ActiveCfg = Release|Win32
{B1FE4613-3F4B-4DAF-9714-2472BF8F56AE}.Release|Win32.Build.0 = Release|Win32
+ {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Win32.ActiveCfg = Debug|Win32
{3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Win32.Build.0 = Debug|Win32
+ {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Mixed Platforms.Build.0 = Release|Win32
{3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Win32.ActiveCfg = Release|Win32
{3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Win32.Build.0 = Release|Win32
+ {78100236-7CEA-4948-96CC-E8ED3160329C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {78100236-7CEA-4948-96CC-E8ED3160329C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{78100236-7CEA-4948-96CC-E8ED3160329C}.Debug|Win32.ActiveCfg = Debug|Win32
{78100236-7CEA-4948-96CC-E8ED3160329C}.Debug|Win32.Build.0 = Debug|Win32
+ {78100236-7CEA-4948-96CC-E8ED3160329C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {78100236-7CEA-4948-96CC-E8ED3160329C}.Release|Mixed Platforms.Build.0 = Release|Win32
{78100236-7CEA-4948-96CC-E8ED3160329C}.Release|Win32.ActiveCfg = Release|Win32
{78100236-7CEA-4948-96CC-E8ED3160329C}.Release|Win32.Build.0 = Release|Win32
+ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.ActiveCfg = Debug|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.Build.0 = Debug|Win32
+ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Mixed Platforms.Build.0 = Release|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.ActiveCfg = Release|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.Build.0 = Release|Win32
+ {5844AFE1-AA3E-4BDB-A9EF-119AEF19DF88}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5844AFE1-AA3E-4BDB-A9EF-119AEF19DF88}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5844AFE1-AA3E-4BDB-A9EF-119AEF19DF88}.Debug|Win32.ActiveCfg = Debug|Win32
{5844AFE1-AA3E-4BDB-A9EF-119AEF19DF88}.Debug|Win32.Build.0 = Debug|Win32
+ {5844AFE1-AA3E-4BDB-A9EF-119AEF19DF88}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5844AFE1-AA3E-4BDB-A9EF-119AEF19DF88}.Release|Mixed Platforms.Build.0 = Release|Win32
{5844AFE1-AA3E-4BDB-A9EF-119AEF19DF88}.Release|Win32.ActiveCfg = Release|Win32
{5844AFE1-AA3E-4BDB-A9EF-119AEF19DF88}.Release|Win32.Build.0 = Release|Win32
+ {DCC13474-28DF-47CA-A8EB-72F8CE9A78C5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {DCC13474-28DF-47CA-A8EB-72F8CE9A78C5}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{DCC13474-28DF-47CA-A8EB-72F8CE9A78C5}.Debug|Win32.ActiveCfg = Debug|Win32
{DCC13474-28DF-47CA-A8EB-72F8CE9A78C5}.Debug|Win32.Build.0 = Debug|Win32
+ {DCC13474-28DF-47CA-A8EB-72F8CE9A78C5}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {DCC13474-28DF-47CA-A8EB-72F8CE9A78C5}.Release|Mixed Platforms.Build.0 = Release|Win32
{DCC13474-28DF-47CA-A8EB-72F8CE9A78C5}.Release|Win32.ActiveCfg = Release|Win32
{DCC13474-28DF-47CA-A8EB-72F8CE9A78C5}.Release|Win32.Build.0 = Release|Win32
+ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.ActiveCfg = Debug|Win32
{5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.Build.0 = Debug|Win32
+ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Mixed Platforms.Build.0 = Release|Win32
{5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.ActiveCfg = Release|Win32
{5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.Build.0 = Release|Win32
+ {FE3540C5-3303-46E0-A69E-D92F775687F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {FE3540C5-3303-46E0-A69E-D92F775687F1}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{FE3540C5-3303-46E0-A69E-D92F775687F1}.Debug|Win32.ActiveCfg = Debug|Win32
{FE3540C5-3303-46E0-A69E-D92F775687F1}.Debug|Win32.Build.0 = Debug|Win32
+ {FE3540C5-3303-46E0-A69E-D92F775687F1}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {FE3540C5-3303-46E0-A69E-D92F775687F1}.Release|Mixed Platforms.Build.0 = Release|Win32
{FE3540C5-3303-46E0-A69E-D92F775687F1}.Release|Win32.ActiveCfg = Release|Win32
{FE3540C5-3303-46E0-A69E-D92F775687F1}.Release|Win32.Build.0 = Release|Win32
+ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Mixed Platforms.Build.0 = Release|Win32
{1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Win32.ActiveCfg = Release|Win32
+ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.ActiveCfg = Debug|Win32
{07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.Build.0 = Debug|Win32
+ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Mixed Platforms.Build.0 = Release|Win32
{07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.ActiveCfg = Release|Win32
{07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.Build.0 = Release|Win32
+ {419AA391-5F3F-4BFE-A869-9D154D62A792}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {419AA391-5F3F-4BFE-A869-9D154D62A792}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{419AA391-5F3F-4BFE-A869-9D154D62A792}.Debug|Win32.ActiveCfg = Debug|Win32
{419AA391-5F3F-4BFE-A869-9D154D62A792}.Debug|Win32.Build.0 = Debug|Win32
+ {419AA391-5F3F-4BFE-A869-9D154D62A792}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {419AA391-5F3F-4BFE-A869-9D154D62A792}.Release|Mixed Platforms.Build.0 = Release|Win32
{419AA391-5F3F-4BFE-A869-9D154D62A792}.Release|Win32.ActiveCfg = Release|Win32
{419AA391-5F3F-4BFE-A869-9D154D62A792}.Release|Win32.Build.0 = Release|Win32
+ {B17FFBE6-A942-4056-8346-B624FB5D995B}.Debug|Mixed Platforms.ActiveCfg = Debug with MySql
+ {B17FFBE6-A942-4056-8346-B624FB5D995B}.Debug|Mixed Platforms.Build.0 = Debug with MySql
{B17FFBE6-A942-4056-8346-B624FB5D995B}.Debug|Win32.ActiveCfg = Debug
+ {B17FFBE6-A942-4056-8346-B624FB5D995B}.Release|Mixed Platforms.ActiveCfg = Release with MySql
+ {B17FFBE6-A942-4056-8346-B624FB5D995B}.Release|Mixed Platforms.Build.0 = Release with MySql
{B17FFBE6-A942-4056-8346-B624FB5D995B}.Release|Win32.ActiveCfg = Release
+ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.ActiveCfg = Debug MS-LDAP|Win32
{EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.Build.0 = Debug MS-LDAP|Win32
+ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Mixed Platforms.Build.0 = Release|Win32
{EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.ActiveCfg = Release MS-LDAP|Win32
{EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.Build.0 = Release MS-LDAP|Win32
+ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.ActiveCfg = Debug|Win32
{A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.Build.0 = Debug|Win32
+ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Mixed Platforms.Build.0 = Release|Win32
{A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.ActiveCfg = Release|Win32
{A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.Build.0 = Release|Win32
+ {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Win32.ActiveCfg = Debug|Win32
{C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Win32.Build.0 = Debug|Win32
+ {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Mixed Platforms.Build.0 = Release|Win32
{C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Win32.ActiveCfg = Release|Win32
{C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Win32.Build.0 = Release|Win32
+ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.ActiveCfg = Debug|Win32
{784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.Build.0 = Debug|Win32
+ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Mixed Platforms.Build.0 = Release|Win32
{784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.ActiveCfg = Release|Win32
{784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.Build.0 = Release|Win32
+ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.ActiveCfg = Debug|Win32
{89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.Build.0 = Debug|Win32
+ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Mixed Platforms.Build.0 = Release|Win32
{89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.ActiveCfg = Release|Win32
{89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.Build.0 = Release|Win32
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.ActiveCfg = Debug|Win32
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.Build.0 = Debug|Win32
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Mixed Platforms.Build.0 = Release|Win32
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.ActiveCfg = Release|Win32
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.Build.0 = Release|Win32
+ {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Mixed Platforms.Build.0 = Release|Win32
{692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Win32.ActiveCfg = Release|Win32
+ {B0C6CFF9-7DCD-4A21-8BA4-C2011E18DED8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {B0C6CFF9-7DCD-4A21-8BA4-C2011E18DED8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B0C6CFF9-7DCD-4A21-8BA4-C2011E18DED8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B0C6CFF9-7DCD-4A21-8BA4-C2011E18DED8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {B0C6CFF9-7DCD-4A21-8BA4-C2011E18DED8}.Release|Mixed Platforms.Build.0 = Release|Win32
{B0C6CFF9-7DCD-4A21-8BA4-C2011E18DED8}.Release|Win32.ActiveCfg = Release|Win32
+ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Mixed Platforms.Build.0 = Release|Win32
{7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.ActiveCfg = Release|Win32
+ {0E2C6395-13B9-46E5-9264-8859D346018D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {0E2C6395-13B9-46E5-9264-8859D346018D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{0E2C6395-13B9-46E5-9264-8859D346018D}.Debug|Win32.ActiveCfg = Debug|Win32
{0E2C6395-13B9-46E5-9264-8859D346018D}.Debug|Win32.Build.0 = Debug|Win32
+ {0E2C6395-13B9-46E5-9264-8859D346018D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {0E2C6395-13B9-46E5-9264-8859D346018D}.Release|Mixed Platforms.Build.0 = Release|Win32
{0E2C6395-13B9-46E5-9264-8859D346018D}.Release|Win32.ActiveCfg = Release|Win32
{0E2C6395-13B9-46E5-9264-8859D346018D}.Release|Win32.Build.0 = Release|Win32
+ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.ActiveCfg = Debug|Win32
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.Build.0 = Debug|Win32
+ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Mixed Platforms.Build.0 = Release|Win32
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.ActiveCfg = Release|Win32
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.Build.0 = Release|Win32
+ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.ActiveCfg = Debug|Win32
{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.Build.0 = Debug|Win32
+ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Mixed Platforms.Build.0 = Release|Win32
{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.ActiveCfg = Release|Win32
{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.Build.0 = Release|Win32
+ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.ActiveCfg = Debug|Win32
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.Build.0 = Debug|Win32
+ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Mixed Platforms.Build.0 = Release|Win32
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.ActiveCfg = Release|Win32
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.Build.0 = Release|Win32
+ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.ActiveCfg = Debug|Win32
{1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.Build.0 = Debug|Win32
+ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Mixed Platforms.Build.0 = Release|Win32
{1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.ActiveCfg = Release|Win32
{1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.Build.0 = Release|Win32
+ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.ActiveCfg = Debug|Win32
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.Build.0 = Debug|Win32
+ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Mixed Platforms.Build.0 = Release|Win32
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.ActiveCfg = Release|Win32
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.Build.0 = Release|Win32
+ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.ActiveCfg = Debug|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.Build.0 = Debug|Win32
+ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Mixed Platforms.Build.0 = Release|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.ActiveCfg = Release|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.Build.0 = Release|Win32
+ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.ActiveCfg = Debug|Win32
{C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.Build.0 = Debug|Win32
+ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Mixed Platforms.Build.0 = Release|Win32
{C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.ActiveCfg = Release|Win32
{C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.Build.0 = Release|Win32
+ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.ActiveCfg = Debug|Win32
{B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.Build.0 = Debug|Win32
+ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Mixed Platforms.Build.0 = Release|Win32
{B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.ActiveCfg = Release|Win32
{B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.Build.0 = Release|Win32
+ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.ActiveCfg = Debug|Win32
{05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.Build.0 = Debug|Win32
+ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Mixed Platforms.Build.0 = Release|Win32
{05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.ActiveCfg = Release|Win32
{05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.Build.0 = Release|Win32
+ {3D1EED36-A510-4EDB-B4D9-4E0F4A5EC2A8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {3D1EED36-A510-4EDB-B4D9-4E0F4A5EC2A8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{3D1EED36-A510-4EDB-B4D9-4E0F4A5EC2A8}.Debug|Win32.ActiveCfg = Debug|Win32
{3D1EED36-A510-4EDB-B4D9-4E0F4A5EC2A8}.Debug|Win32.Build.0 = Debug|Win32
+ {3D1EED36-A510-4EDB-B4D9-4E0F4A5EC2A8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {3D1EED36-A510-4EDB-B4D9-4E0F4A5EC2A8}.Release|Mixed Platforms.Build.0 = Release|Win32
{3D1EED36-A510-4EDB-B4D9-4E0F4A5EC2A8}.Release|Win32.ActiveCfg = Release|Win32
{3D1EED36-A510-4EDB-B4D9-4E0F4A5EC2A8}.Release|Win32.Build.0 = Release|Win32
+ {8FD2E297-4096-47E5-9258-C48FF1841523}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {8FD2E297-4096-47E5-9258-C48FF1841523}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{8FD2E297-4096-47E5-9258-C48FF1841523}.Debug|Win32.ActiveCfg = Debug|Win32
{8FD2E297-4096-47E5-9258-C48FF1841523}.Debug|Win32.Build.0 = Debug|Win32
+ {8FD2E297-4096-47E5-9258-C48FF1841523}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8FD2E297-4096-47E5-9258-C48FF1841523}.Release|Mixed Platforms.Build.0 = Release|Win32
{8FD2E297-4096-47E5-9258-C48FF1841523}.Release|Win32.ActiveCfg = Release|Win32
{8FD2E297-4096-47E5-9258-C48FF1841523}.Release|Win32.Build.0 = Release|Win32
+ {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Win32.ActiveCfg = Debug|Win32
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Win32.Build.0 = Debug|Win32
+ {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Mixed Platforms.Build.0 = Release|Win32
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.ActiveCfg = Release|Win32
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.Build.0 = Release|Win32
+ {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Win32.ActiveCfg = Debug|Win32
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Win32.Build.0 = Debug|Win32
+ {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Mixed Platforms.Build.0 = Release|Win32
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Win32.ActiveCfg = Release|Win32
{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Win32.Build.0 = Release|Win32
+ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32
+ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Mixed Platforms.Build.0 = Release|Win32
{1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.ActiveCfg = Release|Win32
{1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.Build.0 = Release|Win32
+ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.ActiveCfg = Debug|Win32
{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.Build.0 = Debug|Win32
+ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Mixed Platforms.Build.0 = Release|Win32
{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.ActiveCfg = Release|Win32
{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.Build.0 = Release|Win32
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.ActiveCfg = Debug DLL|Win32
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.Build.0 = Debug DLL|Win32
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Mixed Platforms.Build.0 = Release|Win32
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.ActiveCfg = Release DLL|Win32
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.Build.0 = Release DLL|Win32
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.ActiveCfg = Debug DLL|Win32
{8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.Build.0 = Debug DLL|Win32
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Mixed Platforms.Build.0 = Release|Win32
{8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.ActiveCfg = Release DLL|Win32
{8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.Build.0 = Release DLL|Win32
+ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32
{1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32
+ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Mixed Platforms.Build.0 = Release|Win32
{1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32
{1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32
+ {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Win32.ActiveCfg = Debug|Win32
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Win32.Build.0 = Debug|Win32
+ {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Mixed Platforms.Build.0 = Release|Win32
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Win32.ActiveCfg = Release|Win32
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Win32.Build.0 = Release|Win32
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.ActiveCfg = Debug|Win32
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.Build.0 = Debug|Win32
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Mixed Platforms.Build.0 = Release|Win32
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|Win32.ActiveCfg = Debug|Win32
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|Win32.Build.0 = Debug|Win32
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|Mixed Platforms.Build.0 = Release|Win32
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|Win32.ActiveCfg = Release|Win32
{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|Win32.Build.0 = Release|Win32
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Mixed Platforms.Build.0 = Release|Win32
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.ActiveCfg = Release|Win32
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.Build.0 = Release|Win32
+ {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}.Debug|Win32.ActiveCfg = Debug|Win32
{C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}.Debug|Win32.Build.0 = Debug|Win32
+ {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}.Release|Mixed Platforms.Build.0 = Release|Win32
{C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}.Release|Win32.ActiveCfg = Release|Win32
{C4854C1D-5478-4F87-AB62-36CCDDDBA3C7}.Release|Win32.Build.0 = Release|Win32
+ {5786D51D-1C6A-4BE1-8804-29954DB5258F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5786D51D-1C6A-4BE1-8804-29954DB5258F}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5786D51D-1C6A-4BE1-8804-29954DB5258F}.Debug|Win32.ActiveCfg = Debug|Win32
{5786D51D-1C6A-4BE1-8804-29954DB5258F}.Debug|Win32.Build.0 = Debug|Win32
+ {5786D51D-1C6A-4BE1-8804-29954DB5258F}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5786D51D-1C6A-4BE1-8804-29954DB5258F}.Release|Mixed Platforms.Build.0 = Release|Win32
{5786D51D-1C6A-4BE1-8804-29954DB5258F}.Release|Win32.ActiveCfg = Release|Win32
{5786D51D-1C6A-4BE1-8804-29954DB5258F}.Release|Win32.Build.0 = Release|Win32
+ {E969F3E0-1043-482A-AD49-787B8356BA92}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {E969F3E0-1043-482A-AD49-787B8356BA92}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{E969F3E0-1043-482A-AD49-787B8356BA92}.Debug|Win32.ActiveCfg = Debug|Win32
{E969F3E0-1043-482A-AD49-787B8356BA92}.Debug|Win32.Build.0 = Debug|Win32
+ {E969F3E0-1043-482A-AD49-787B8356BA92}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {E969F3E0-1043-482A-AD49-787B8356BA92}.Release|Mixed Platforms.Build.0 = Release|Win32
{E969F3E0-1043-482A-AD49-787B8356BA92}.Release|Win32.ActiveCfg = Release|Win32
{E969F3E0-1043-482A-AD49-787B8356BA92}.Release|Win32.Build.0 = Release|Win32
+ {91695C7C-7AD1-4782-9727-508F82D9C577}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {91695C7C-7AD1-4782-9727-508F82D9C577}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{91695C7C-7AD1-4782-9727-508F82D9C577}.Debug|Win32.ActiveCfg = Debug|Win32
{91695C7C-7AD1-4782-9727-508F82D9C577}.Debug|Win32.Build.0 = Debug|Win32
+ {91695C7C-7AD1-4782-9727-508F82D9C577}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {91695C7C-7AD1-4782-9727-508F82D9C577}.Release|Mixed Platforms.Build.0 = Release|Win32
{91695C7C-7AD1-4782-9727-508F82D9C577}.Release|Win32.ActiveCfg = Release|Win32
{91695C7C-7AD1-4782-9727-508F82D9C577}.Release|Win32.Build.0 = Release|Win32
+ {6B9217D6-8259-4817-B8A5-2FEAD349EDEB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {6B9217D6-8259-4817-B8A5-2FEAD349EDEB}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{6B9217D6-8259-4817-B8A5-2FEAD349EDEB}.Debug|Win32.ActiveCfg = Debug|Win32
{6B9217D6-8259-4817-B8A5-2FEAD349EDEB}.Debug|Win32.Build.0 = Debug|Win32
+ {6B9217D6-8259-4817-B8A5-2FEAD349EDEB}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {6B9217D6-8259-4817-B8A5-2FEAD349EDEB}.Release|Mixed Platforms.Build.0 = Release|Win32
{6B9217D6-8259-4817-B8A5-2FEAD349EDEB}.Release|Win32.ActiveCfg = Release|Win32
{6B9217D6-8259-4817-B8A5-2FEAD349EDEB}.Release|Win32.Build.0 = Release|Win32
+ {5C9C69D2-8B98-42DA-8D82-6E0B48446FAC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5C9C69D2-8B98-42DA-8D82-6E0B48446FAC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5C9C69D2-8B98-42DA-8D82-6E0B48446FAC}.Debug|Win32.ActiveCfg = Debug|Win32
{5C9C69D2-8B98-42DA-8D82-6E0B48446FAC}.Debug|Win32.Build.0 = Debug|Win32
+ {5C9C69D2-8B98-42DA-8D82-6E0B48446FAC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5C9C69D2-8B98-42DA-8D82-6E0B48446FAC}.Release|Mixed Platforms.Build.0 = Release|Win32
{5C9C69D2-8B98-42DA-8D82-6E0B48446FAC}.Release|Win32.ActiveCfg = Release|Win32
{5C9C69D2-8B98-42DA-8D82-6E0B48446FAC}.Release|Win32.Build.0 = Release|Win32
+ {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Win32.ActiveCfg = Debug|Win32
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Win32.Build.0 = Debug|Win32
+ {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Mixed Platforms.Build.0 = Release|Win32
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Win32.ActiveCfg = Release|Win32
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Win32.Build.0 = Release|Win32
+ {F8C28DF9-D76A-449E-A621-D97D869974DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {F8C28DF9-D76A-449E-A621-D97D869974DA}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{F8C28DF9-D76A-449E-A621-D97D869974DA}.Debug|Win32.ActiveCfg = Debug|Win32
{F8C28DF9-D76A-449E-A621-D97D869974DA}.Debug|Win32.Build.0 = Debug|Win32
+ {F8C28DF9-D76A-449E-A621-D97D869974DA}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {F8C28DF9-D76A-449E-A621-D97D869974DA}.Release|Mixed Platforms.Build.0 = Release|Win32
{F8C28DF9-D76A-449E-A621-D97D869974DA}.Release|Win32.ActiveCfg = Release|Win32
{F8C28DF9-D76A-449E-A621-D97D869974DA}.Release|Win32.Build.0 = Release|Win32
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.ActiveCfg = Debug|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.Build.0 = Debug|Win32
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Mixed Platforms.Build.0 = Release|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.ActiveCfg = Release|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32
+ {985135DA-BBE1-42D2-8A85-1F7DF0609B3D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {985135DA-BBE1-42D2-8A85-1F7DF0609B3D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{985135DA-BBE1-42D2-8A85-1F7DF0609B3D}.Debug|Win32.ActiveCfg = Debug|Win32
{985135DA-BBE1-42D2-8A85-1F7DF0609B3D}.Debug|Win32.Build.0 = Debug|Win32
+ {985135DA-BBE1-42D2-8A85-1F7DF0609B3D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {985135DA-BBE1-42D2-8A85-1F7DF0609B3D}.Release|Mixed Platforms.Build.0 = Release|Win32
{985135DA-BBE1-42D2-8A85-1F7DF0609B3D}.Release|Win32.ActiveCfg = Release|Win32
{985135DA-BBE1-42D2-8A85-1F7DF0609B3D}.Release|Win32.Build.0 = Release|Win32
+ {C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B}.Debug|Win32.ActiveCfg = Debug|Win32
{C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B}.Debug|Win32.Build.0 = Debug|Win32
+ {C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B}.Release|Mixed Platforms.Build.0 = Release|Win32
{C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B}.Release|Win32.ActiveCfg = Release|Win32
{C30D35E4-7FC6-4E97-9BE5-4BC077BE0D4B}.Release|Win32.Build.0 = Release|Win32
+ {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Win32.ActiveCfg = Debug|Win32
{5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Win32.Build.0 = Debug|Win32
+ {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Mixed Platforms.Build.0 = Release|Win32
{5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Win32.ActiveCfg = Release|Win32
{5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Win32.Build.0 = Release|Win32
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Win32.ActiveCfg = Debug|Win32
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Win32.Build.0 = Debug|Win32
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Mixed Platforms.Build.0 = Release|Win32
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Win32.ActiveCfg = Release|Win32
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Win32.Build.0 = Release|Win32
+ {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Win32.ActiveCfg = Debug|Win32
{49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Win32.Build.0 = Debug|Win32
+ {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Mixed Platforms.Build.0 = Release|Win32
{49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Win32.ActiveCfg = Release|Win32
{49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Win32.Build.0 = Release|Win32
+ {EFA9E76E-62A5-4237-B7E9-F39B8E174CD5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {EFA9E76E-62A5-4237-B7E9-F39B8E174CD5}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EFA9E76E-62A5-4237-B7E9-F39B8E174CD5}.Debug|Win32.ActiveCfg = Debug|Win32
{EFA9E76E-62A5-4237-B7E9-F39B8E174CD5}.Debug|Win32.Build.0 = Debug|Win32
+ {EFA9E76E-62A5-4237-B7E9-F39B8E174CD5}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {EFA9E76E-62A5-4237-B7E9-F39B8E174CD5}.Release|Mixed Platforms.Build.0 = Release|Win32
{EFA9E76E-62A5-4237-B7E9-F39B8E174CD5}.Release|Win32.ActiveCfg = Release|Win32
{EFA9E76E-62A5-4237-B7E9-F39B8E174CD5}.Release|Win32.Build.0 = Release|Win32
+ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.ActiveCfg = Debug|Win32
{3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.Build.0 = Debug|Win32
+ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Mixed Platforms.Build.0 = Release|Win32
{3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.ActiveCfg = Release|Win32
{3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.Build.0 = Release|Win32
+ {831F76E8-D288-4C54-9B6D-281D9436CCC7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {831F76E8-D288-4C54-9B6D-281D9436CCC7}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{831F76E8-D288-4C54-9B6D-281D9436CCC7}.Debug|Win32.ActiveCfg = Debug|Win32
{831F76E8-D288-4C54-9B6D-281D9436CCC7}.Debug|Win32.Build.0 = Debug|Win32
+ {831F76E8-D288-4C54-9B6D-281D9436CCC7}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {831F76E8-D288-4C54-9B6D-281D9436CCC7}.Release|Mixed Platforms.Build.0 = Release|Win32
{831F76E8-D288-4C54-9B6D-281D9436CCC7}.Release|Win32.ActiveCfg = Release|Win32
{831F76E8-D288-4C54-9B6D-281D9436CCC7}.Release|Win32.Build.0 = Release|Win32
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.ActiveCfg = Debug|Win32
{87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.Build.0 = Debug|Win32
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Mixed Platforms.Build.0 = Release|Win32
{87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.ActiveCfg = Release|Win32
{87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.Build.0 = Release|Win32
+ {EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121}.Debug|Win32.ActiveCfg = Debug|Win32
{EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121}.Debug|Win32.Build.0 = Debug|Win32
+ {EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121}.Release|Mixed Platforms.Build.0 = Release|Win32
{EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121}.Release|Win32.ActiveCfg = Release|Win32
{EC8D4AE8-0F3E-454A-BFB8-D56A5D9C0121}.Release|Win32.Build.0 = Release|Win32
+ {A3FE0076-B366-429D-A238-D7304DA7D3C1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {A3FE0076-B366-429D-A238-D7304DA7D3C1}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{A3FE0076-B366-429D-A238-D7304DA7D3C1}.Debug|Win32.ActiveCfg = Debug|Win32
{A3FE0076-B366-429D-A238-D7304DA7D3C1}.Debug|Win32.Build.0 = Debug|Win32
+ {A3FE0076-B366-429D-A238-D7304DA7D3C1}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {A3FE0076-B366-429D-A238-D7304DA7D3C1}.Release|Mixed Platforms.Build.0 = Release|Win32
{A3FE0076-B366-429D-A238-D7304DA7D3C1}.Release|Win32.ActiveCfg = Release|Win32
{A3FE0076-B366-429D-A238-D7304DA7D3C1}.Release|Win32.Build.0 = Release|Win32
+ {356EC96D-4C9F-47B5-9083-FC328B87BA94}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {356EC96D-4C9F-47B5-9083-FC328B87BA94}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{356EC96D-4C9F-47B5-9083-FC328B87BA94}.Debug|Win32.ActiveCfg = Debug|Win32
{356EC96D-4C9F-47B5-9083-FC328B87BA94}.Debug|Win32.Build.0 = Debug|Win32
+ {356EC96D-4C9F-47B5-9083-FC328B87BA94}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {356EC96D-4C9F-47B5-9083-FC328B87BA94}.Release|Mixed Platforms.Build.0 = Release|Win32
{356EC96D-4C9F-47B5-9083-FC328B87BA94}.Release|Win32.ActiveCfg = Release|Win32
{356EC96D-4C9F-47B5-9083-FC328B87BA94}.Release|Win32.Build.0 = Release|Win32
+ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.ActiveCfg = Debug|Win32
{155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.Build.0 = Debug|Win32
+ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Mixed Platforms.Build.0 = Release|Win32
{155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.ActiveCfg = Release|Win32
{155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.Build.0 = Release|Win32
+ {B0AA13FC-636C-45A7-8EAE-663220679A75}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {B0AA13FC-636C-45A7-8EAE-663220679A75}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B0AA13FC-636C-45A7-8EAE-663220679A75}.Debug|Win32.ActiveCfg = Debug|Win32
{B0AA13FC-636C-45A7-8EAE-663220679A75}.Debug|Win32.Build.0 = Debug|Win32
+ {B0AA13FC-636C-45A7-8EAE-663220679A75}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {B0AA13FC-636C-45A7-8EAE-663220679A75}.Release|Mixed Platforms.Build.0 = Release|Win32
{B0AA13FC-636C-45A7-8EAE-663220679A75}.Release|Win32.ActiveCfg = Release|Win32
{B0AA13FC-636C-45A7-8EAE-663220679A75}.Release|Win32.Build.0 = Release|Win32
+ {76D0A759-9C07-42D4-90A9-82AE15462C95}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {76D0A759-9C07-42D4-90A9-82AE15462C95}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{76D0A759-9C07-42D4-90A9-82AE15462C95}.Debug|Win32.ActiveCfg = Debug|Win32
{76D0A759-9C07-42D4-90A9-82AE15462C95}.Debug|Win32.Build.0 = Debug|Win32
+ {76D0A759-9C07-42D4-90A9-82AE15462C95}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {76D0A759-9C07-42D4-90A9-82AE15462C95}.Release|Mixed Platforms.Build.0 = Release|Win32
{76D0A759-9C07-42D4-90A9-82AE15462C95}.Release|Win32.ActiveCfg = Release|Win32
{76D0A759-9C07-42D4-90A9-82AE15462C95}.Release|Win32.Build.0 = Release|Win32
+ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.ActiveCfg = Debug|Win32
{204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.Build.0 = Debug|Win32
+ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Mixed Platforms.Build.0 = Release|Win32
{204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.ActiveCfg = Release|Win32
{204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.Build.0 = Release|Win32
+ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.ActiveCfg = Debug|Win32
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.Build.0 = Debug|Win32
+ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Mixed Platforms.Build.0 = Release|Win32
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.ActiveCfg = Release|Win32
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.Build.0 = Release|Win32
+ {5A6A281A-AA50-470A-8305-202BDA1CD1BF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5A6A281A-AA50-470A-8305-202BDA1CD1BF}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5A6A281A-AA50-470A-8305-202BDA1CD1BF}.Debug|Win32.ActiveCfg = Debug|Win32
{5A6A281A-AA50-470A-8305-202BDA1CD1BF}.Debug|Win32.Build.0 = Debug|Win32
+ {5A6A281A-AA50-470A-8305-202BDA1CD1BF}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5A6A281A-AA50-470A-8305-202BDA1CD1BF}.Release|Mixed Platforms.Build.0 = Release|Win32
{5A6A281A-AA50-470A-8305-202BDA1CD1BF}.Release|Win32.ActiveCfg = Release|Win32
{5A6A281A-AA50-470A-8305-202BDA1CD1BF}.Release|Win32.Build.0 = Release|Win32
+ {486369EB-F150-4B56-BCC8-77B9E18FF5F5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {486369EB-F150-4B56-BCC8-77B9E18FF5F5}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{486369EB-F150-4B56-BCC8-77B9E18FF5F5}.Debug|Win32.ActiveCfg = Debug|Win32
{486369EB-F150-4B56-BCC8-77B9E18FF5F5}.Debug|Win32.Build.0 = Debug|Win32
+ {486369EB-F150-4B56-BCC8-77B9E18FF5F5}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {486369EB-F150-4B56-BCC8-77B9E18FF5F5}.Release|Mixed Platforms.Build.0 = Release|Win32
{486369EB-F150-4B56-BCC8-77B9E18FF5F5}.Release|Win32.ActiveCfg = Release|Win32
{486369EB-F150-4B56-BCC8-77B9E18FF5F5}.Release|Win32.Build.0 = Release|Win32
+ {D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}.Debug|Win32.ActiveCfg = Debug|Win32
{D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}.Debug|Win32.Build.0 = Debug|Win32
+ {D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}.Release|Mixed Platforms.Build.0 = Release|Win32
{D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}.Release|Win32.ActiveCfg = Release|Win32
{D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}.Release|Win32.Build.0 = Release|Win32
+ {D42518CC-7475-454D-B392-0E132C07D761}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D42518CC-7475-454D-B392-0E132C07D761}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D42518CC-7475-454D-B392-0E132C07D761}.Debug|Win32.ActiveCfg = Debug|Win32
{D42518CC-7475-454D-B392-0E132C07D761}.Debug|Win32.Build.0 = Debug|Win32
+ {D42518CC-7475-454D-B392-0E132C07D761}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D42518CC-7475-454D-B392-0E132C07D761}.Release|Mixed Platforms.Build.0 = Release|Win32
{D42518CC-7475-454D-B392-0E132C07D761}.Release|Win32.ActiveCfg = Release|Win32
{D42518CC-7475-454D-B392-0E132C07D761}.Release|Win32.Build.0 = Release|Win32
+ {2740F45C-475A-4DE0-BCED-6E2E5F6C4B8B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {2740F45C-475A-4DE0-BCED-6E2E5F6C4B8B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{2740F45C-475A-4DE0-BCED-6E2E5F6C4B8B}.Debug|Win32.ActiveCfg = Debug|Win32
{2740F45C-475A-4DE0-BCED-6E2E5F6C4B8B}.Debug|Win32.Build.0 = Debug|Win32
+ {2740F45C-475A-4DE0-BCED-6E2E5F6C4B8B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {2740F45C-475A-4DE0-BCED-6E2E5F6C4B8B}.Release|Mixed Platforms.Build.0 = Release|Win32
{2740F45C-475A-4DE0-BCED-6E2E5F6C4B8B}.Release|Win32.ActiveCfg = Release|Win32
{2740F45C-475A-4DE0-BCED-6E2E5F6C4B8B}.Release|Win32.Build.0 = Release|Win32
+ {8B2CE7D1-77EF-45ED-927D-82147805440B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {8B2CE7D1-77EF-45ED-927D-82147805440B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{8B2CE7D1-77EF-45ED-927D-82147805440B}.Debug|Win32.ActiveCfg = Debug|Win32
{8B2CE7D1-77EF-45ED-927D-82147805440B}.Debug|Win32.Build.0 = Debug|Win32
+ {8B2CE7D1-77EF-45ED-927D-82147805440B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8B2CE7D1-77EF-45ED-927D-82147805440B}.Release|Mixed Platforms.Build.0 = Release|Win32
{8B2CE7D1-77EF-45ED-927D-82147805440B}.Release|Win32.ActiveCfg = Release|Win32
{8B2CE7D1-77EF-45ED-927D-82147805440B}.Release|Win32.Build.0 = Release|Win32
+ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.ActiveCfg = Debug|Win32
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.Build.0 = Debug|Win32
+ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Mixed Platforms.Build.0 = Release|Win32
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.ActiveCfg = Release|Win32
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.Build.0 = Release|Win32
+ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.ActiveCfg = Debug|Win32
{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.Build.0 = Debug|Win32
+ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Mixed Platforms.Build.0 = Release|Win32
{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.ActiveCfg = Release|Win32
{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.Build.0 = Release|Win32
+ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.ActiveCfg = Debug DLL|Win32
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.Build.0 = Debug DLL|Win32
+ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Mixed Platforms.Build.0 = Release|Win32
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.ActiveCfg = Release DLL|Win32
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.Build.0 = Release DLL|Win32
+ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.Build.0 = Debug Passthrough|Win32
+ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Mixed Platforms.Build.0 = Release|Win32
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.ActiveCfg = Release Passthrough|Win32
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.Build.0 = Release Passthrough|Win32
+ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.ActiveCfg = Debug|Win32
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.Build.0 = Debug|Win32
+ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Mixed Platforms.Build.0 = Release|Win32
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.ActiveCfg = Release|Win32
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.Build.0 = Release|Win32
+ {251CAABC-16C3-4593-A491-603B908094E0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {251CAABC-16C3-4593-A491-603B908094E0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{251CAABC-16C3-4593-A491-603B908094E0}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {251CAABC-16C3-4593-A491-603B908094E0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {251CAABC-16C3-4593-A491-603B908094E0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{251CAABC-16C3-4593-A491-603B908094E0}.Release|Win32.ActiveCfg = Release|Any CPU
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.Build.0 = Debug|Win32
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.ActiveCfg = Release|Win32
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.Build.0 = Release|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.Build.0 = Debug|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.ActiveCfg = Release|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -974,6 +1370,8 @@
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {0C808854-54D1-4230-BFF5-77B5FD905000}
{B0C6CFF9-7DCD-4A21-8BA4-C2011E18DED8} = {0C808854-54D1-4230-BFF5-77B5FD905000}
{7B077E7F-1BE7-4291-AB86-55E527B25CAC} = {0C808854-54D1-4230-BFF5-77B5FD905000}
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF} = {0C808854-54D1-4230-BFF5-77B5FD905000}
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65} = {0C808854-54D1-4230-BFF5-77B5FD905000}
{692F6330-4D87-4C82-81DF-40DB5892636E} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}
{1C453396-D912-4213-89FD-9B489162B7B5} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}
{CBEC7225-0C21-4DA8-978E-1F158F8AD950} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}
Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c (original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c Sat Nov 11 01:06:18 2006
@@ -38,10 +38,6 @@
#include <curl/curl.h>
#endif
-#ifdef _MSC_VER
-#pragma warning(disable: 4311)
-#endif
-
static const char modname[] = "mod_spidermonkey";
@@ -2246,7 +2242,7 @@
};
-SWITCH_DECLARE(int) eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval)
+SWITCH_SM_DECLARE(int) eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval)
{
JSScript *script = NULL;
char *cptr;
Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h (original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h Sat Nov 11 01:06:18 2006
@@ -56,12 +56,28 @@
#define JS_BUFFER_SIZE 1024 * 32
#define JS_BLOCK_SIZE JS_BUFFER_SIZE
+
#ifdef __ICC
#pragma warning (disable:310 193 1418)
#endif
+#ifdef _MSC_VER
+#pragma warning(disable: 4311)
+#endif
-SWITCH_DECLARE(int) eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval);
+#ifdef WIN32
+#if defined(SWITCH_SM_DECLARE_STATIC)
+#define SWITCH_SM_DECLARE(type) type __cdecl
+#elif defined(SM_EXPORTS)
+#define SWITCH_SM_DECLARE(type) __declspec(dllexport) type __cdecl
+#else
+#define SWITCH_SM_DECLARE(type) __declspec(dllimport) type __cdecl
+#endif
+#else //not win32
+#define SWITCH_SM_DECLARE(type) type
+#endif
+
+SWITCH_SM_DECLARE(int) eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval);
typedef switch_status_t(*spidermonkey_load_t)(JSContext *cx, JSObject *obj);
Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.vcproj
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.vcproj (original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.vcproj Sat Nov 11 01:06:18 2006
@@ -42,8 +42,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\js20051231\src";"$(InputDir)..\..\..\..\libs\curl-7.15.2\include";"$(InputDir)..\..\..\..\libs\libteletone\src""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;XP_WIN;DEBUG;_X86_=1;JSFILE;EXPORT_JS_API;HAVE_CURL;CURL_STATICLIB"
+ AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\js20051231\src";"$(InputDir)..\..\..\..\libs\curl-7.15.2\include";"$(InputDir)..\..\..\..\libs\libteletone\src";"$(InputDir)..\..\..\..\libs\nspr-4.6.1.winnt5.$(OutDir)\nspr-4.6.1\include""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;XP_WIN;DEBUG;_X86_=1;JSFILE;EXPORT_JS_API;HAVE_CURL;CURL_STATICLIB;JS_THREADSAFE;SM_EXPORTS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -126,8 +126,8 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\js20051231\src";"$(InputDir)..\..\..\..\libs\curl-7.15.2\include";"$(InputDir)..\..\..\..\libs\libteletone\src""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;XP_WIN;_X86_=1;JSFILE;EXPORT_JS_API;HAVE_CURL;CURL_STATICLIB"
+ AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\js20051231\src";"$(InputDir)..\..\..\..\libs\curl-7.15.2\include";"$(InputDir)..\..\..\..\libs\libteletone\src";"$(InputDir)..\..\..\..\libs\nspr-4.6.1.winnt5.$(OutDir)\nspr-4.6.1\include""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;XP_WIN;_X86_=1;JSFILE;EXPORT_JS_API;HAVE_CURL;CURL_STATICLIB;JS_THREADSAFE;SM_EXPORTS"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="4"
Added: freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.vcproj
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.vcproj Sat Nov 11 01:06:18 2006
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="mod_spidermonkey_core_db"
+ ProjectGUID="{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}"
+ RootNamespace="mod_spidermonkey_core_db"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\js20051231\src";"$(InputDir)..\..\..\..\libs\curl-7.15.2\include";"$(InputDir)..\..\..\..\libs\libteletone\src";"$(InputDir)..\..\..\..\libs\nspr-4.6.1.winnt5.$(OutDir)\nspr-4.6.1\include";"$(InputDir)..\mod_spidermonkey""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;XP_WIN;DEBUG;_X86_=1;JSFILE;EXPORT_JS_API;HAVE_CURL;CURL_STATICLIB;JS_THREADSAFE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkLibraryDependencies="true"
+ AdditionalDependencies="ws2_32.lib winmm.lib libnspr4.lib libplc4.lib libplds4.lib"
+ OutputFile="$(SolutionDir)$(OutDir)/mod/$(InputName).dll"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories=""..\..\..\..\libs\nspr-4.6.1.winnt5.$(OutDir)\nspr-4.6.1\lib""
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(OutDir)$(TargetName).pdb"
+ SubSystem="2"
+ ImportLibrary="$(OutDir)/mod_spidermonkey_core_db.lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\js20051231\src";"$(InputDir)..\..\..\..\libs\curl-7.15.2\include";"$(InputDir)..\..\..\..\libs\libteletone\src";"$(InputDir)..\..\..\..\libs\nspr-4.6.1.winnt5.$(OutDir)\nspr-4.6.1\include";"$(InputDir)..\mod_spidermonkey""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;XP_WIN;_X86_=1;JSFILE;EXPORT_JS_API;HAVE_CURL;CURL_STATICLIB;JS_THREADSAFE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkLibraryDependencies="true"
+ AdditionalDependencies="ws2_32.lib winmm.lib libnspr4.lib libplc4.lib libplds4.lib"
+ OutputFile="$(SolutionDir)$(OutDir)/mod/$(InputName).dll"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories=""..\..\..\..\libs\nspr-4.6.1.winnt5.$(OutDir)\nspr-4.6.1\lib""
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(OutDir)$(TargetName).pdb"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ LinkTimeCodeGeneration="1"
+ ImportLibrary="$(OutDir)/mod_spidermonkey_core_db.lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\mod_spidermonkey_core_db.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.vcproj
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.vcproj Sat Nov 11 01:06:18 2006
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="mod_spidermonkey_teletone"
+ ProjectGUID="{8F992C49-6C51-412F-B2A3-34EAB708EB65}"
+ RootNamespace="mod_spidermonkey_teletone"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\js20051231\src";"$(InputDir)..\..\..\..\libs\curl-7.15.2\include";"$(InputDir)..\..\..\..\libs\libteletone\src";"$(InputDir)..\..\..\..\libs\nspr-4.6.1.winnt5.$(OutDir)\nspr-4.6.1\include";"$(InputDir)..\mod_spidermonkey""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;XP_WIN;DEBUG;_X86_=1;JSFILE;EXPORT_JS_API;HAVE_CURL;CURL_STATICLIB;JS_THREADSAFE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkLibraryDependencies="true"
+ AdditionalDependencies="ws2_32.lib winmm.lib libnspr4.lib libplc4.lib libplds4.lib"
+ OutputFile="$(SolutionDir)$(OutDir)/mod/$(InputName).dll"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories=""..\..\..\..\libs\nspr-4.6.1.winnt5.$(OutDir)\nspr-4.6.1\lib""
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(OutDir)$(TargetName).pdb"
+ SubSystem="2"
+ ImportLibrary="$(OutDir)/mod_spidermonkey_teletone.lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""$(InputDir)..\..\..\include";"$(InputDir)..\..\..\..\libs\include";"$(InputDir)..\..\..\..\libs\js20051231\src";"$(InputDir)..\..\..\..\libs\curl-7.15.2\include";"$(InputDir)..\..\..\..\libs\libteletone\src";"$(InputDir)..\..\..\..\libs\nspr-4.6.1.winnt5.$(OutDir)\nspr-4.6.1\include";"$(InputDir)..\mod_spidermonkey""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;XP_WIN;_X86_=1;JSFILE;EXPORT_JS_API;HAVE_CURL;CURL_STATICLIB;JS_THREADSAFE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkLibraryDependencies="true"
+ AdditionalDependencies="ws2_32.lib winmm.lib libnspr4.lib libplc4.lib libplds4.lib"
+ OutputFile="$(SolutionDir)$(OutDir)/mod/$(InputName).dll"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories=""..\..\..\..\libs\nspr-4.6.1.winnt5.$(OutDir)\nspr-4.6.1\lib""
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(OutDir)$(TargetName).pdb"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ LinkTimeCodeGeneration="1"
+ ImportLibrary="$(OutDir)/mod_spidermonkey_teletone.lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\mod_spidermonkey_teletone.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
1
0
[commit] r3307 - in freeswitch/trunk: . conf src/mod/languages/mod_spidermonkey src/mod/languages/mod_spidermonkey_core_db src/mod/languages/mod_spidermonkey_skel src/mod/languages/mod_spidermonkey_teletone
by Freeswitch SVN 10 Nov '06
by Freeswitch SVN 10 Nov '06
10 Nov '06
Author: anthm
Date: Fri Nov 10 16:49:57 2006
New Revision: 3307
Added:
freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h
freeswitch/trunk/src/mod/languages/mod_spidermonkey/sm.mak
freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/
freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/Makefile
freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.c
freeswitch/trunk/src/mod/languages/mod_spidermonkey_skel/
freeswitch/trunk/src/mod/languages/mod_spidermonkey_skel/Makefile
freeswitch/trunk/src/mod/languages/mod_spidermonkey_skel/mod_spidermonkey_skel.c
freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/
freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/Makefile
freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c
Modified:
freeswitch/trunk/conf/freeswitch.xml
freeswitch/trunk/modules.conf.in
freeswitch/trunk/src/mod/languages/mod_spidermonkey/Makefile
freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
Log:
spidermonkey has it's own loadable modules now good luck
Modified: freeswitch/trunk/conf/freeswitch.xml
==============================================================================
--- freeswitch/trunk/conf/freeswitch.xml (original)
+++ freeswitch/trunk/conf/freeswitch.xml Fri Nov 10 16:49:57 2006
@@ -75,6 +75,13 @@
</modules>
</configuration>
+ <configuration name="spidermonkey.conf" description="Spider Monkey JavaScript Plug-Ins">
+ <modules>
+ <load module="mod_spidermonkey_teletone"/>
+ <load module="mod_spidermonkey_core_db"/>
+ </modules>
+ </configuration>
+
<configuration name="event_multicast.conf" description="Multicast Event">
<settings>
<param name="address" value="225.1.1.1"/>
Modified: freeswitch/trunk/modules.conf.in
==============================================================================
--- freeswitch/trunk/modules.conf.in (original)
+++ freeswitch/trunk/modules.conf.in Fri Nov 10 16:49:57 2006
@@ -41,5 +41,7 @@
formats/mod_sndfile
#languages/mod_perl
#languages/mod_spidermonkey
+#languages/mod_spidermonkey_teletone
+#languages/mod_spidermonkey_core_db
timers/mod_softtimer
#xml_int/mod_xml_rpc
Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/Makefile
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/Makefile (original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/Makefile Fri Nov 10 16:49:57 2006
@@ -1,70 +1,4 @@
-# This is all used to make sure we use the right options during build and link.
-
-OS_ARCH := $(subst /,_,$(shell uname -s | sed /\ /s//_/))
-#VER=DBG
-#BO=0
-VER=OPT
-BO=1
-
-# Attempt to differentiate between SunOS 5.4 and x86 5.4
-OS_CPUARCH := $(shell uname -m)
-ifeq ($(OS_CPUARCH),i86pc)
-OS_RELEASE := $(shell uname -r)_$(OS_CPUARCH)
-else
-ifeq ($(OS_ARCH),AIX)
-OS_RELEASE := $(shell uname -v).$(shell uname -r)
-else
-OS_RELEASE := $(shell uname -r)
-endif
-endif
-ifeq ($(OS_ARCH),IRIX64)
-OS_ARCH := IRIX
-endif
-
-# Handle output from win32 unames other than Netscape's version
-ifeq (,$(filter-out Windows_95 Windows_98 CYGWIN_95-4.0 CYGWIN_98-4.10, $(OS_ARCH)))
- OS_ARCH := WIN95
-endif
-ifeq ($(OS_ARCH),WIN95)
- OS_ARCH := WINNT
- OS_RELEASE := 4.0
-endif
-ifeq ($(OS_ARCH), Windows_NT)
- OS_ARCH := WINNT
- OS_MINOR_RELEASE := $(shell uname -v)
- ifeq ($(OS_MINOR_RELEASE),00)
- OS_MINOR_RELEASE = 0
- endif
- OS_RELEASE := $(OS_RELEASE).$(OS_MINOR_RELEASE)
-endif
-ifeq (CYGWIN_NT,$(findstring CYGWIN_NT,$(OS_ARCH)))
- OS_RELEASE := $(patsubst CYGWIN_NT-%,%,$(OS_ARCH))
- OS_ARCH := WINNT
-endif
-ifeq ($(OS_ARCH), CYGWIN32_NT)
- OS_ARCH := WINNT
-endif
-ifeq (MINGW32_NT,$(findstring MINGW32_NT,$(OS_ARCH)))
- OS_RELEASE := $(patsubst MINGW32_NT-%,%,$(OS_ARCH))
- OS_ARCH := WINNT
-endif
-
-ifeq ($(OS_ARCH),Linux)
-OS_CONFIG := Linux_All
-else
-ifeq ($(OS_ARCH),dgux)
-OS_CONFIG := dgux
-else
-ifeq ($(OS_ARCH),Darwin)
-OS_CONFIG := Darwin
-else
-OS_CONFIG := $(OS_ARCH)$(OS_OBJTYPE)$(OS_RELEASE)
-endif
-endif
-endif
-
-CFLAGS += -I$(BASE)/libs/mozilla/js/src -Wall -Wno-format -g -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R -DX86_LINUX -DDEBUG -DDEBUG_root -DJS_THREADSAFE -I$(BASE)/libs/mozilla/js/src -I$(BASE)/libs/mozilla/js/src/$(OS_CONFIG)_$(VER).OBJ -Wall -Wno-format -g -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R -DX86_LINUX -DDEBUG -DDEBUG_root -DJS_THREADSAFE -I$(BASE)/libs/mozilla/nsprpub/dist/include/nspr -I$(OS_CONFIG)_$(VER).OBJ
-LDFLAGS +=-DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R -DX86_LINUX -DDEBUG -DDEBUG_root -DJS_THREADSAFE -I$(BASE)/libs/mozilla/nsprpub/dist/include/nspr -Wall -Wno-format -g -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R -DX86_LINUX -DDEBUG -DDEBUG_root -DJS_THREADSAFE -I$(BASE)/libs/mozilla/nsprpub/dist/include/nspr -lteletone
+include sm.mak
OBJS=$(BASE)/libs/mozilla/js/src/$(OS_CONFIG)_$(VER).OBJ/libjs.a $(BASE)/libs/mozilla/nsprpub/dist/lib/libnspr4.a -lcurl -letpan
LINKER=$(CC)
Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c (original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c Fri Nov 10 16:49:57 2006
@@ -32,30 +32,8 @@
#ifndef HAVE_CURL
#define HAVE_CURL
#endif
-#define JS_BUFFER_SIZE 1024 * 32
-#define JS_BLOCK_SIZE JS_BUFFER_SIZE
-#ifdef __ICC
-#pragma warning (disable:310 193 1418)
-#endif
-#include <switch.h>
+#include "mod_spidermonkey.h"
-#include "jstypes.h"
-#include "jsarena.h"
-#include "jsutil.h"
-#include "jsprf.h"
-#include "jsapi.h"
-#include "jsatom.h"
-#include "jscntxt.h"
-#include "jsdbgapi.h"
-#include "jsemit.h"
-#include "jsfun.h"
-#include "jsgc.h"
-#include "jslock.h"
-#include "jsobj.h"
-#include "jsparse.h"
-#include "jsscope.h"
-#include "jsscript.h"
-#include <libteletone.h>
#ifdef HAVE_CURL
#include <curl/curl.h>
#endif
@@ -66,7 +44,7 @@
static const char modname[] = "mod_spidermonkey";
-static int eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval);
+
static void session_destroy(JSContext *cx, JSObject *obj);
static JSBool session_construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
static switch_api_interface_t js_run_interface;
@@ -89,10 +67,21 @@
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub
};
-typedef enum {
- TTF_DTMF = (1 << 0)
-} teletone_flag_t;
+static struct {
+ switch_hash_t *mod_hash;
+ switch_hash_t *load_hash;
+ switch_memory_pool_t *pool;
+} module_manager;
+
+struct sm_loadable_module {
+ char *filename;
+ void *lib;
+ const sm_module_interface_t *module_interface;
+ spidermonkey_init_t spidermonkey_init;
+};
+typedef struct sm_loadable_module sm_loadable_module_t;
+
typedef enum {
S_HUP = (1 << 0)
} session_flag_t;
@@ -112,30 +101,6 @@
void *extra;
};
-struct js_session {
- switch_core_session_t *session;
- JSContext *cx;
- JSObject *obj;
- unsigned int flags;
-};
-
-struct teletone_obj {
- teletone_generation_session_t ts;
- JSContext *cx;
- JSObject *obj;
- switch_core_session_t *session;
- switch_codec_t codec;
- switch_buffer_t *audio_buffer;
- switch_buffer_t *loop_buffer;
- switch_memory_pool_t *pool;
- switch_timer_t *timer;
- switch_timer_t timer_base;
- JSFunction *function;
- jsval arg;
- jsval ret;
- unsigned int flags;
-};
-
struct fileio_obj {
char *path;
unsigned int flags;
@@ -146,18 +111,6 @@
int32 bufsize;
};
-struct db_obj {
- switch_memory_pool_t *pool;
- switch_core_db_t *db;
- switch_core_db_stmt_t *stmt;
- char *dbname;
- char code_buffer[2048];
- JSContext *cx;
- JSObject *obj;
-};
-
-
-
struct event_obj {
switch_event_t *event;
int freed;
@@ -457,6 +410,164 @@
}
+
+static switch_status_t sm_load_file(char *filename, sm_loadable_module_t **new_module)
+{
+ sm_loadable_module_t *module = NULL;
+ apr_dso_handle_t *dso = NULL;
+ apr_status_t status = SWITCH_STATUS_SUCCESS;
+ apr_dso_handle_sym_t function_handle = NULL;
+ spidermonkey_init_t spidermonkey_init;
+ const sm_module_interface_t *module_interface, *mp;
+
+ int loading = 1;
+ const char *err = NULL;
+ char derr[512] = "";
+
+ assert(filename != NULL);
+
+ *new_module = NULL;
+ status = apr_dso_load(&dso, filename, module_manager.pool);
+
+ while (loading) {
+ if (status != APR_SUCCESS) {
+ apr_dso_error(dso, derr, sizeof(derr));
+ err = derr;
+ break;
+ }
+
+ status = apr_dso_sym(&function_handle, dso, "spidermonkey_init");
+ spidermonkey_init = (spidermonkey_init_t) function_handle;
+
+ if (spidermonkey_init == NULL) {
+ err = "Cannot Load";
+ break;
+ }
+
+ if (spidermonkey_init(&module_interface) != SWITCH_STATUS_SUCCESS) {
+ err = "Module load routine returned an error";
+ break;
+ }
+
+ if ((module = switch_core_permanent_alloc(sizeof(sm_loadable_module_t))) == 0) {
+ err = "Could not allocate memory\n";
+ break;
+ }
+
+ loading = 0;
+ }
+
+ if (err) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Error Loading module %s\n**%s**\n", filename, err);
+ return SWITCH_STATUS_GENERR;
+ }
+
+ module->filename = switch_core_permanent_strdup(filename);
+ module->spidermonkey_init = spidermonkey_init;
+ module->module_interface = module_interface;
+
+ module->lib = dso;
+ *new_module = module;
+
+ switch_core_hash_insert(module_manager.mod_hash, (char *) module->filename, (void *) module);
+
+ for (mp = module_interface; mp; mp = mp->next) {
+ switch_core_hash_insert(module_manager.load_hash, (char *)mp->name, (void *) mp);
+ }
+
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Successfully Loaded [%s]\n", module->filename);
+
+ return SWITCH_STATUS_SUCCESS;
+
+}
+
+static switch_status_t sm_load_module(char *dir, char *fname)
+{
+ switch_size_t len = 0;
+ char *path;
+ char *file;
+ sm_loadable_module_t *new_module = NULL;
+
+#ifdef WIN32
+ const char *ext = ".dll";
+#elif defined (MACOSX) || defined (DARWIN)
+ const char *ext = ".dylib";
+#else
+ const char *ext = ".so";
+#endif
+
+
+ if ((file = switch_core_strdup(module_manager.pool, fname)) == 0) {
+ return SWITCH_STATUS_FALSE;
+ }
+
+ if (*file == '/') {
+ path = switch_core_strdup(module_manager.pool, file);
+ } else {
+ if (strchr(file, '.')) {
+ len = strlen(dir);
+ len += strlen(file);
+ len += 4;
+ path = (char *) switch_core_alloc(module_manager.pool, len);
+ snprintf(path, len, "%s%s%s", dir, SWITCH_PATH_SEPARATOR, file);
+ } else {
+ len = strlen(dir);
+ len += strlen(file);
+ len += 8;
+ path = (char *) switch_core_alloc(module_manager.pool, len);
+ snprintf(path, len, "%s%s%s%s", dir, SWITCH_PATH_SEPARATOR, file, ext);
+ }
+ }
+
+ return sm_load_file(path, &new_module);
+}
+
+static switch_status_t load_modules(void)
+{
+ char *cf = "spidermonkey.conf";
+ switch_xml_t cfg, xml;
+ unsigned int count = 0;
+
+#ifdef WIN32
+ const char *ext = ".dll";
+ const char *EXT = ".DLL";
+#elif defined (MACOSX) || defined (DARWIN)
+ const char *ext = ".dylib";
+ const char *EXT = ".DYLIB";
+#else
+ const char *ext = ".so";
+ const char *EXT = ".SO";
+#endif
+
+ memset(&module_manager, 0, sizeof(module_manager));
+ switch_core_new_memory_pool(&module_manager.pool);
+
+ switch_core_hash_init(&module_manager.mod_hash, module_manager.pool);
+ switch_core_hash_init(&module_manager.load_hash, module_manager.pool);
+
+ if ((xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
+ switch_xml_t mods, ld;
+
+ if ((mods = switch_xml_child(cfg, "modules"))) {
+ for (ld = switch_xml_child(mods, "load"); ld; ld = ld->next) {
+ const char *val = switch_xml_attr_soft(ld, "module");
+ if (strchr(val, '.') && !strstr(val, ext) && !strstr(val, EXT)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Invalid extension for %s\n", val);
+ continue;
+ }
+ sm_load_module((char *) SWITCH_GLOBAL_dirs.mod_dir, (char *) val);
+ count++;
+ }
+ }
+ switch_xml_free(xml);
+
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "open of %s failed\n", cf);
+ }
+
+ return SWITCH_STATUS_SUCCESS;
+}
+
static switch_status_t init_js(void)
{
memset(&globals, 0, sizeof(globals));
@@ -471,6 +582,10 @@
if (!(globals.rt = JS_NewRuntime(64L * 1024L * 1024L))) {
return SWITCH_STATUS_FALSE;
}
+
+ if (load_modules() != SWITCH_STATUS_SUCCESS) {
+ return SWITCH_STATUS_FALSE;
+ }
return SWITCH_STATUS_SUCCESS;
}
@@ -1101,10 +1216,13 @@
char *app_name = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
char *app_arg = JS_GetStringBytes(JS_ValueToString(cx, argv[1]));
struct js_session *jss = JS_GetPrivate(cx, obj);
+ jsrefcount saveDepth;
if ((application_interface = switch_loadable_module_get_application_interface(app_name))) {
if (application_interface->application_function) {
+ saveDepth = JS_SuspendRequest(cx);
application_interface->application_function(jss->session, app_arg);
+ JS_ResumeRequest(cx, saveDepth);
retval = JS_TRUE;
}
}
@@ -1478,20 +1596,7 @@
return NULL;
}
-static int teletone_handler(teletone_generation_session_t *ts, teletone_tone_map_t *map)
-{
- struct teletone_obj *tto = ts->user_data;
- int wrote;
- if (!tto) {
- return -1;
- }
- wrote = teletone_mux_tones(ts, map);
- switch_buffer_write(tto->audio_buffer, ts->buffer, wrote * 2);
-
- return 0;
-}
-
/* Session Object */
/*********************************************************************************/
static JSBool session_construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
@@ -1821,527 +1926,6 @@
};
-/* DB Object */
-/*********************************************************************************/
-static JSBool db_construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
-{
- switch_memory_pool_t *pool;
- switch_core_db_t *db;
- struct db_obj *dbo;
-
- if (argc > 0) {
- char *dbname = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
- switch_core_new_memory_pool(&pool);
- if (! (db = switch_core_db_open_file(dbname))) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Open DB!\n");
- switch_core_destroy_memory_pool(&pool);
- return JS_FALSE;
- }
- dbo = switch_core_alloc(pool, sizeof(*dbo));
- dbo->pool = pool;
- dbo->dbname = switch_core_strdup(pool, dbname);
- dbo->cx = cx;
- dbo->obj = obj;
- dbo->db = db;
- JS_SetPrivate(cx, obj, dbo);
- return JS_TRUE;
- }
-
- return JS_FALSE;
-}
-
-static void db_destroy(JSContext *cx, JSObject *obj)
-{
- struct db_obj *dbo = JS_GetPrivate(cx, obj);
-
- if (dbo) {
- switch_memory_pool_t *pool = dbo->pool;
- if (dbo->stmt) {
- switch_core_db_finalize(dbo->stmt);
- dbo->stmt = NULL;
- }
- switch_core_db_close(dbo->db);
- switch_core_destroy_memory_pool(&pool);
- pool = NULL;
- }
-}
-
-
-static int db_callback(void *pArg, int argc, char **argv, char **columnNames)
-{
- struct db_obj *dbo = pArg;
- char code[1024];
- jsval rval;
- int x = 0;
-
- snprintf(code, sizeof(code), "~var _Db_RoW_ = {}");
- eval_some_js(code, dbo->cx, dbo->obj, &rval);
-
- for(x=0; x < argc; x++) {
- snprintf(code, sizeof(code), "~_Db_RoW_[\"%s\"] = \"%s\"", columnNames[x], argv[x]);
- eval_some_js(code, dbo->cx, dbo->obj, &rval);
- }
-
- snprintf(code, sizeof(code), "~%s(_Db_RoW_)", dbo->code_buffer);
- eval_some_js(code, dbo->cx, dbo->obj, &rval);
-
- snprintf(code, sizeof(code), "~delete _Db_RoW_");
- eval_some_js(code, dbo->cx, dbo->obj, &rval);
-
- return 0;
-}
-
-static JSBool db_exec(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
-{
- struct db_obj *dbo = JS_GetPrivate(cx, obj);
- *rval = BOOLEAN_TO_JSVAL( JS_TRUE );
-
- if (argc > 0) {
- char *sql = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
- char *err = NULL;
- void *arg = NULL;
- switch_core_db_callback_func_t cb_func = NULL;
-
-
- if (argc > 1) {
- char *js_func = JS_GetStringBytes(JS_ValueToString(cx, argv[1]));
- switch_copy_string(dbo->code_buffer, js_func, sizeof(dbo->code_buffer));
- cb_func = db_callback;
- arg = dbo;
- }
-
- switch_core_db_exec(dbo->db, sql, cb_func, arg, &err);
- if (err) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error %s\n", err);
- switch_core_db_free(err);
- *rval = BOOLEAN_TO_JSVAL( JS_FALSE );
- }
- }
- return JS_TRUE;
-}
-
-
-static JSBool db_next(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
-{
- struct db_obj *dbo = JS_GetPrivate(cx, obj);
- *rval = BOOLEAN_TO_JSVAL( JS_FALSE );
-
- if (dbo->stmt) {
- int running = 1;
-
- while (running < 5000) {
- int result = switch_core_db_step(dbo->stmt);
- if (result == SQLITE_ROW) {
- *rval = BOOLEAN_TO_JSVAL( JS_TRUE );
- break;
- } else if (result == SQLITE_BUSY) {
- running++;
- continue;
- }
- switch_core_db_finalize(dbo->stmt);
- dbo->stmt = NULL;
- break;
- }
- }
-
- return JS_TRUE;
-}
-
-static JSBool db_fetch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
-{
- struct db_obj *dbo = JS_GetPrivate(cx, obj);
- int colcount = switch_core_db_column_count(dbo->stmt);
- char code[1024];
- int x;
-
- snprintf(code, sizeof(code), "~var _dB_RoW_DaTa_ = {}");
- eval_some_js(code, dbo->cx, dbo->obj, rval);
- if (*rval == JS_FALSE) {
- return JS_TRUE;
- }
- for (x = 0; x < colcount; x++) {
- snprintf(code, sizeof(code), "~_dB_RoW_DaTa_[\"%s\"] = \"%s\"",
- (char *) switch_core_db_column_name(dbo->stmt, x),
- (char *) switch_core_db_column_text(dbo->stmt, x));
-
- eval_some_js(code, dbo->cx, dbo->obj, rval);
- if (*rval == JS_FALSE) {
- return JS_TRUE;
- }
- }
-
- JS_GetProperty(cx, obj, "_dB_RoW_DaTa_", rval);
-
- return JS_TRUE;
-}
-
-
-static JSBool db_prepare(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
-{
- struct db_obj *dbo = JS_GetPrivate(cx, obj);
-
- *rval = BOOLEAN_TO_JSVAL( JS_FALSE );
-
- if (dbo->stmt) {
- switch_core_db_finalize(dbo->stmt);
- dbo->stmt = NULL;
- }
-
- if (argc > 0) {
- char *sql = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
-
- if(switch_core_db_prepare(dbo->db, sql, 0, &dbo->stmt, 0)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error %s\n", switch_core_db_errmsg(dbo->db));
- } else {
- *rval = BOOLEAN_TO_JSVAL( JS_TRUE );
- }
- }
- return JS_TRUE;
-}
-
-enum db_tinyid {
- DB_NAME
-};
-
-static JSFunctionSpec db_methods[] = {
- {"exec", db_exec, 1},
- {"next", db_next, 0},
- {"fetch", db_fetch, 1},
- {"prepare", db_prepare, 0},
- {0}
-};
-
-
-static JSPropertySpec db_props[] = {
- {"path", DB_NAME, JSPROP_READONLY|JSPROP_PERMANENT},
- {0}
-};
-
-
-static JSBool db_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
-{
- JSBool res = JS_TRUE;
- struct db_obj *dbo = JS_GetPrivate(cx, obj);
- char *name;
- int param = 0;
-
- name = JS_GetStringBytes(JS_ValueToString(cx, id));
- /* numbers are our props anything else is a method */
- if (name[0] >= 48 && name[0] <= 57) {
- param = atoi(name);
- } else {
- return JS_TRUE;
- }
-
- switch(param) {
- case DB_NAME:
- *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, dbo->dbname));
- break;
- }
-
- return res;
-}
-
-JSClass db_class = {
- "DB", JSCLASS_HAS_PRIVATE,
- JS_PropertyStub, JS_PropertyStub, db_getProperty, JS_PropertyStub,
- JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, db_destroy, NULL, NULL, NULL,
- db_construct
-};
-
-/* TeleTone Object */
-/*********************************************************************************/
-static JSBool teletone_construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
-{
- int32 memory = 65535;
- JSObject *session_obj;
- struct teletone_obj *tto = NULL;
- struct js_session *jss = NULL;
- switch_codec_t *read_codec;
- switch_memory_pool_t *pool;
- char *timer_name = NULL;
-
- if (argc > 0) {
- if (JS_ValueToObject(cx, argv[0], &session_obj)) {
- if (!(jss = JS_GetPrivate(cx, session_obj))) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Find Session [1]\n");
- return JS_FALSE;
- }
- } else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Find Session [2]\n");
- return JS_FALSE;
- }
- } else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing Session Arg\n");
- return JS_FALSE;
- }
- if (argc > 1) {
- timer_name = JS_GetStringBytes(JS_ValueToString(cx, argv[1]));
- }
-
- if (argc > 2) {
- if (!JS_ValueToInt32(cx, argv[2], &memory)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Convert to INT\n");
- return JS_FALSE;
- }
- }
- switch_core_new_memory_pool(&pool);
-
- if (!(tto = switch_core_alloc(pool, sizeof(*tto)))) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error\n");
- return JS_FALSE;
- }
-
- read_codec = switch_core_session_get_read_codec(jss->session);
-
- if (switch_core_codec_init(&tto->codec,
- "L16",
- NULL,
- read_codec->implementation->samples_per_second,
- read_codec->implementation->microseconds_per_frame / 1000,
- read_codec->implementation->number_of_channels,
- SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE,
- NULL, pool) == SWITCH_STATUS_SUCCESS) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activated\n");
- } else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed\n");
- return JS_FALSE;
- }
-
- if (timer_name) {
- unsigned int ms = read_codec->implementation->microseconds_per_frame / 1000;
- if (switch_core_timer_init(&tto->timer_base,
- timer_name,
- ms,
- (read_codec->implementation->samples_per_second / 50) * read_codec->implementation->number_of_channels,
- pool) == SWITCH_STATUS_SUCCESS) {
- tto->timer = &tto->timer_base;
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Timer INIT Success %u\n", ms);
- } else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Timer INIT Failed\n");
- }
- }
-
- switch_buffer_create_dynamic(&tto->audio_buffer, JS_BLOCK_SIZE, JS_BUFFER_SIZE, 0);
- tto->pool = pool;
- tto->obj = obj;
- tto->cx = cx;
- tto->session = jss->session;
- teletone_init_session(&tto->ts, memory, teletone_handler, tto);
- JS_SetPrivate(cx, obj, tto);
-
- return JS_TRUE;
-}
-
-static void teletone_destroy(JSContext *cx, JSObject *obj)
-{
- struct teletone_obj *tto = JS_GetPrivate(cx, obj);
- switch_memory_pool_t *pool;
- if (tto) {
- if (tto->timer) {
- switch_core_timer_destroy(tto->timer);
- }
- teletone_destroy_session(&tto->ts);
- switch_buffer_destroy(&tto->audio_buffer);
- switch_buffer_destroy(&tto->loop_buffer);
- switch_core_codec_destroy(&tto->codec);
- pool = tto->pool;
- tto->pool = NULL;
- if (pool) {
- switch_core_destroy_memory_pool(&pool);
- }
- }
-}
-
-static JSBool teletone_add_tone(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
-{
- struct teletone_obj *tto = JS_GetPrivate(cx, obj);
- if (argc > 2) {
- int x;
- char *fval;
- char *map_str;
- map_str = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
-
- for(x = 1; x < TELETONE_MAX_TONES; x++) {
- fval = JS_GetStringBytes(JS_ValueToString(cx, argv[x]));
- tto->ts.TONES[(int)*map_str].freqs[x-1] = strtod(fval, NULL);
- }
- return JS_TRUE;
- }
-
- return JS_FALSE;
-}
-
-static JSBool teletone_on_dtmf(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
-{
- struct teletone_obj *tto = JS_GetPrivate(cx, obj);
- if (argc > 0) {
- tto->function = JS_ValueToFunction(cx, argv[0]);
- if (argc > 1) {
- tto->arg = argv[1];
- }
- switch_set_flag(tto, TTF_DTMF);
- }
- return JS_TRUE;
-}
-
-static JSBool teletone_generate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
-{
- struct teletone_obj *tto = JS_GetPrivate(cx, obj);
- int32 loops = 0;
-
- if (argc > 0) {
- char *script;
- switch_core_session_t *session;
- switch_frame_t write_frame = {0};
- unsigned char *fdata[1024];
- switch_frame_t *read_frame;
- int stream_id;
- switch_core_thread_session_t thread_session;
- switch_channel_t *channel;
-
- if (argc > 1) {
- if (!JS_ValueToInt32(cx, argv[1], &loops)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Convert to INT\n");
- return JS_FALSE;
- }
- loops--;
- if (!tto->loop_buffer) {
- switch_buffer_create_dynamic(&tto->loop_buffer, JS_BLOCK_SIZE, JS_BUFFER_SIZE, 0);
- }
- }
-
- if (tto->audio_buffer) {
- switch_buffer_zero(tto->audio_buffer);
- }
- if (tto->loop_buffer) {
- switch_buffer_zero(tto->loop_buffer);
- }
- tto->ts.debug = 1;
- tto->ts.debug_stream = switch_core_get_console();
-
- script = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
- teletone_run(&tto->ts, script);
-
- session = tto->session;
- write_frame.codec = &tto->codec;
- write_frame.data = fdata;
-
- channel = switch_core_session_get_channel(session);
-
- if (tto->timer) {
- for (stream_id = 0; stream_id < switch_core_session_get_stream_count(session); stream_id++) {
- switch_core_service_session(session, &thread_session, stream_id);
- }
- }
-
- for(;;) {
-
- if (switch_test_flag(tto, TTF_DTMF)) {
- char dtmf[128];
- char *ret;
-
- if (switch_channel_has_dtmf(channel)) {
- uintN aargc = 0;
- jsval aargv[4];
-
- switch_channel_dequeue_dtmf(channel, dtmf, sizeof(dtmf));
- aargv[aargc++] = STRING_TO_JSVAL (JS_NewStringCopyZ(cx, dtmf));
- JS_CallFunction(cx, obj, tto->function, aargc, aargv, &tto->ret);
- ret = JS_GetStringBytes(JS_ValueToString(cx, tto->ret));
- if (strcmp(ret, "true") && strcmp(ret, "undefined")) {
- *rval = tto->ret;
- return JS_TRUE;
- }
- }
- }
-
- if (tto->timer) {
- if (switch_core_timer_next(tto->timer)< 0) {
- break;
- }
-
- } else {
- switch_status_t status;
- status = switch_core_session_read_frame(session, &read_frame, -1, 0);
-
- if (!SWITCH_READ_ACCEPTABLE(status)) {
- break;
- }
- }
- if ((write_frame.datalen = (uint32_t)switch_buffer_read(tto->audio_buffer, fdata, write_frame.codec->implementation->bytes_per_frame)) <= 0) {
- if (loops) {
- switch_buffer_t *tmp;
-
- /* Switcharoo*/
- tmp = tto->audio_buffer;
- tto->audio_buffer = tto->loop_buffer;
- tto->loop_buffer = tmp;
- loops--;
- /* try again */
- if ((write_frame.datalen =
- (uint32_t)switch_buffer_read(tto->audio_buffer, fdata, write_frame.codec->implementation->bytes_per_frame)) <= 0) {
- break;
- }
- } else {
- break;
- }
- }
-
- write_frame.samples = write_frame.datalen / 2;
- for (stream_id = 0; stream_id < switch_core_session_get_stream_count(session); stream_id++) {
- if (switch_core_session_write_frame(session, &write_frame, -1, stream_id) != SWITCH_STATUS_SUCCESS) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Bad Write\n");
- break;
- }
- }
- if (tto->loop_buffer && loops) {
- switch_buffer_write(tto->loop_buffer, write_frame.data, write_frame.datalen);
- }
- }
-
- if (tto->timer) {
- switch_core_thread_session_end(&thread_session);
- }
- return JS_TRUE;
- }
-
- return JS_FALSE;
-}
-
-enum teletone_tinyid {
- TELETONE_NAME
-};
-
-static JSFunctionSpec teletone_methods[] = {
- {"generate", teletone_generate, 1},
- {"onDTMF", teletone_on_dtmf, 1},
- {"addTone", teletone_add_tone, 10},
- {0}
-};
-
-
-static JSPropertySpec teletone_props[] = {
- {"name", TELETONE_NAME, JSPROP_READONLY|JSPROP_PERMANENT},
- {0}
-};
-
-
-static JSBool teletone_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
-{
- JSBool res = JS_TRUE;
-
- return res;
-}
-
-JSClass teletone_class = {
- "TeleTone", JSCLASS_HAS_PRIVATE,
- JS_PropertyStub, JS_PropertyStub, teletone_getProperty, JS_PropertyStub,
- JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, teletone_destroy, NULL, NULL, NULL,
- teletone_construct
-};
-
-
/* Built-In*/
/*********************************************************************************/
static JSBool js_exit(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
@@ -2411,6 +1995,27 @@
return 1;
}
+static JSBool js_api_use(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ char *mod_name = NULL;
+
+ if (argc > 0 && (mod_name = JS_GetStringBytes(JS_ValueToString(cx, argv[0])))) {
+ const sm_module_interface_t *mp;
+
+ if ((mp = switch_core_hash_find(module_manager.load_hash, mod_name))) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Loading %s\n", mod_name);
+ mp->spidermonkey_load(cx, obj);
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error loading %s\n", mod_name);
+ }
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Filename\n");
+ }
+
+ return JS_TRUE;
+
+}
+
static JSBool js_api_execute(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
@@ -2632,6 +2237,7 @@
{"email", js_email, 2},
{"bridge", js_bridge, 2},
{"apiExecute", js_api_execute, 2},
+ {"use", js_api_use, 1},
#ifdef HAVE_CURL
{"fetchURLHash", js_fetchurl_hash, 1},
{"fetchURLFile", js_fetchurl_file, 1},
@@ -2640,7 +2246,7 @@
};
-static int eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval)
+SWITCH_DECLARE(int) eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval)
{
JSScript *script = NULL;
char *cptr;
@@ -2676,17 +2282,6 @@
JS_InitStandardClasses(cx, javascript_object);
- JS_InitClass(cx,
- javascript_object,
- NULL,
- &teletone_class,
- teletone_construct,
- 3,
- teletone_props,
- teletone_methods,
- teletone_props,
- teletone_methods
- );
JS_InitClass(cx,
javascript_object,
@@ -2715,18 +2310,6 @@
JS_InitClass(cx,
javascript_object,
NULL,
- &db_class,
- db_construct,
- 3,
- db_props,
- db_methods,
- db_props,
- db_methods
- );
-
- JS_InitClass(cx,
- javascript_object,
- NULL,
&event_class,
event_construct,
3,
@@ -2751,6 +2334,7 @@
if ((cx = JS_NewContext(globals.rt, globals.gStackChunkSize))) {
+ JS_BeginRequest(cx);
JS_SetErrorReporter(cx, js_error);
javascript_global_object = JS_NewObject(cx, &global_class, NULL, NULL);
env_init(cx, javascript_global_object);
@@ -2878,7 +2462,7 @@
if ((status = init_js()) != SWITCH_STATUS_SUCCESS) {
return status;
}
-
+
/* connect my internal structure to the blank pointer passed to me */
*module_interface = &spidermonkey_module_interface;
Added: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h Fri Nov 10 16:49:57 2006
@@ -0,0 +1,89 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II <anthmct(a)yahoo.com>
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Anthony Minessale II <anthmct(a)yahoo.com>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Anthony Minessale II <anthmct(a)yahoo.com>
+ *
+ *
+ * mod_spidermonkey.h -- Javascript Module
+ *
+ */
+#ifndef SWITCH_MOD_SPIDERMONKEY_H
+#define SWITCH_MOD_SPIDERMONKEY_H
+
+
+#include <switch.h>
+#include "jstypes.h"
+#include "jsarena.h"
+#include "jsutil.h"
+#include "jsprf.h"
+#include "jsapi.h"
+#include "jsatom.h"
+#include "jscntxt.h"
+#include "jsdbgapi.h"
+#include "jsemit.h"
+#include "jsfun.h"
+#include "jsgc.h"
+#include "jslock.h"
+#include "jsobj.h"
+#include "jsparse.h"
+#include "jsscope.h"
+#include "jsscript.h"
+#include <libteletone.h>
+
+SWITCH_BEGIN_EXTERN_C
+
+#define JS_BUFFER_SIZE 1024 * 32
+#define JS_BLOCK_SIZE JS_BUFFER_SIZE
+#ifdef __ICC
+#pragma warning (disable:310 193 1418)
+#endif
+
+
+SWITCH_DECLARE(int) eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval);
+
+typedef switch_status_t(*spidermonkey_load_t)(JSContext *cx, JSObject *obj);
+
+struct sm_module_interface {
+ const char *name;
+ spidermonkey_load_t spidermonkey_load;
+ const struct sm_module_interface *next;
+};
+
+typedef struct sm_module_interface sm_module_interface_t;
+typedef switch_status_t(*spidermonkey_init_t)(const sm_module_interface_t **module_interface);
+
+struct js_session {
+ switch_core_session_t *session;
+ JSContext *cx;
+ JSObject *obj;
+ unsigned int flags;
+};
+
+
+
+SWITCH_END_EXTERN_C
+
+#endif
+
Added: freeswitch/trunk/src/mod/languages/mod_spidermonkey/sm.mak
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/sm.mak Fri Nov 10 16:49:57 2006
@@ -0,0 +1,67 @@
+# This is all used to make sure we use the right options during build and link.
+
+OS_ARCH := $(subst /,_,$(shell uname -s | sed /\ /s//_/))
+#VER=DBG
+#BO=0
+VER=OPT
+BO=1
+
+# Attempt to differentiate between SunOS 5.4 and x86 5.4
+OS_CPUARCH := $(shell uname -m)
+ifeq ($(OS_CPUARCH),i86pc)
+OS_RELEASE := $(shell uname -r)_$(OS_CPUARCH)
+else
+ifeq ($(OS_ARCH),AIX)
+OS_RELEASE := $(shell uname -v).$(shell uname -r)
+else
+OS_RELEASE := $(shell uname -r)
+endif
+endif
+ifeq ($(OS_ARCH),IRIX64)
+OS_ARCH := IRIX
+endif
+
+# Handle output from win32 unames other than Netscape's version
+ifeq (,$(filter-out Windows_95 Windows_98 CYGWIN_95-4.0 CYGWIN_98-4.10, $(OS_ARCH)))
+ OS_ARCH := WIN95
+endif
+ifeq ($(OS_ARCH),WIN95)
+ OS_ARCH := WINNT
+ OS_RELEASE := 4.0
+endif
+ifeq ($(OS_ARCH), Windows_NT)
+ OS_ARCH := WINNT
+ OS_MINOR_RELEASE := $(shell uname -v)
+ ifeq ($(OS_MINOR_RELEASE),00)
+ OS_MINOR_RELEASE = 0
+ endif
+ OS_RELEASE := $(OS_RELEASE).$(OS_MINOR_RELEASE)
+endif
+ifeq (CYGWIN_NT,$(findstring CYGWIN_NT,$(OS_ARCH)))
+ OS_RELEASE := $(patsubst CYGWIN_NT-%,%,$(OS_ARCH))
+ OS_ARCH := WINNT
+endif
+ifeq ($(OS_ARCH), CYGWIN32_NT)
+ OS_ARCH := WINNT
+endif
+ifeq (MINGW32_NT,$(findstring MINGW32_NT,$(OS_ARCH)))
+ OS_RELEASE := $(patsubst MINGW32_NT-%,%,$(OS_ARCH))
+ OS_ARCH := WINNT
+endif
+
+ifeq ($(OS_ARCH),Linux)
+OS_CONFIG := Linux_All
+else
+ifeq ($(OS_ARCH),dgux)
+OS_CONFIG := dgux
+else
+ifeq ($(OS_ARCH),Darwin)
+OS_CONFIG := Darwin
+else
+OS_CONFIG := $(OS_ARCH)$(OS_OBJTYPE)$(OS_RELEASE)
+endif
+endif
+endif
+
+CFLAGS += -I../mod_spidermonkey -I$(BASE)/libs/mozilla/js/src -Wall -Wno-format -g -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R -DX86_LINUX -DDEBUG -DDEBUG_root -DJS_THREADSAFE -I$(BASE)/libs/mozilla/js/src -I$(BASE)/libs/mozilla/js/src/$(OS_CONFIG)_$(VER).OBJ -Wall -Wno-format -g -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R -DX86_LINUX -DDEBUG -DDEBUG_root -DJS_THREADSAFE -I$(BASE)/libs/mozilla/nsprpub/dist/include/nspr -I$(OS_CONFIG)_$(VER).OBJ
+LDFLAGS +=-DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R -DX86_LINUX -DDEBUG -DDEBUG_root -DJS_THREADSAFE -I$(BASE)/libs/mozilla/nsprpub/dist/include/nspr -Wall -Wno-format -g -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R -DX86_LINUX -DDEBUG -DDEBUG_root -DJS_THREADSAFE -I$(BASE)/libs/mozilla/nsprpub/dist/include/nspr -lteletone
Added: freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/Makefile
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/Makefile Fri Nov 10 16:49:57 2006
@@ -0,0 +1,19 @@
+include ../mod_spidermonkey/sm.mak
+
+OBJS=#$(BASE)/libs/mozilla/js/src/$(OS_CONFIG)_$(VER).OBJ/libjs.a $(BASE)/libs/mozilla/nsprpub/dist/lib/libnspr4.a
+LINKER=$(CC)
+
+
+all: depends $(MODNAME).$(DYNAMIC_LIB_EXTEN)
+
+depends:
+
+$(MODNAME).$(DYNAMIC_LIB_EXTEN): $(MODNAME).c
+ $(CC) $(CFLAGS) -fPIC -c $(MODNAME).c -o $(MODNAME).o
+ $(LINKER) $(SOLINK) -o $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(MODNAME).o $(OBJS) $(LDFLAGS)
+
+clean:
+ rm -fr *.$(DYNAMIC_LIB_EXTEN) *.o *~
+
+install:
+ cp -f $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(PREFIX)/mod
Added: freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.c
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.c Fri Nov 10 16:49:57 2006
@@ -0,0 +1,309 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II <anthmct(a)yahoo.com>
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Anthony Minessale II <anthmct(a)yahoo.com>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Anthony Minessale II <anthmct(a)yahoo.com>
+ *
+ *
+ * mod_spidermonkey_DB.c -- DB Javascript Module
+ *
+ */
+#include "mod_spidermonkey.h"
+
+static const char modname[] = "DB";
+
+struct db_obj {
+ switch_memory_pool_t *pool;
+ switch_core_db_t *db;
+ switch_core_db_stmt_t *stmt;
+ char *dbname;
+ char code_buffer[2048];
+ JSContext *cx;
+ JSObject *obj;
+};
+
+
+/* DB Object */
+/*********************************************************************************/
+static JSBool db_construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ switch_memory_pool_t *pool;
+ switch_core_db_t *db;
+ struct db_obj *dbo;
+
+ if (argc > 0) {
+ char *dbname = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
+ switch_core_new_memory_pool(&pool);
+ if (! (db = switch_core_db_open_file(dbname))) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Open DB!\n");
+ switch_core_destroy_memory_pool(&pool);
+ return JS_FALSE;
+ }
+ dbo = switch_core_alloc(pool, sizeof(*dbo));
+ dbo->pool = pool;
+ dbo->dbname = switch_core_strdup(pool, dbname);
+ dbo->cx = cx;
+ dbo->obj = obj;
+ dbo->db = db;
+ JS_SetPrivate(cx, obj, dbo);
+ return JS_TRUE;
+ }
+
+ return JS_FALSE;
+}
+
+static void db_destroy(JSContext *cx, JSObject *obj)
+{
+ struct db_obj *dbo = JS_GetPrivate(cx, obj);
+
+ if (dbo) {
+ switch_memory_pool_t *pool = dbo->pool;
+ if (dbo->stmt) {
+ switch_core_db_finalize(dbo->stmt);
+ dbo->stmt = NULL;
+ }
+ switch_core_db_close(dbo->db);
+ switch_core_destroy_memory_pool(&pool);
+ pool = NULL;
+ }
+}
+
+
+static int db_callback(void *pArg, int argc, char **argv, char **columnNames)
+{
+ struct db_obj *dbo = pArg;
+ char code[1024];
+ jsval rval;
+ int x = 0;
+
+ snprintf(code, sizeof(code), "~var _Db_RoW_ = {}");
+ eval_some_js(code, dbo->cx, dbo->obj, &rval);
+
+ for(x=0; x < argc; x++) {
+ snprintf(code, sizeof(code), "~_Db_RoW_[\"%s\"] = \"%s\"", columnNames[x], argv[x]);
+ eval_some_js(code, dbo->cx, dbo->obj, &rval);
+ }
+
+ snprintf(code, sizeof(code), "~%s(_Db_RoW_)", dbo->code_buffer);
+ eval_some_js(code, dbo->cx, dbo->obj, &rval);
+
+ snprintf(code, sizeof(code), "~delete _Db_RoW_");
+ eval_some_js(code, dbo->cx, dbo->obj, &rval);
+
+ return 0;
+}
+
+static JSBool db_exec(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ struct db_obj *dbo = JS_GetPrivate(cx, obj);
+ *rval = BOOLEAN_TO_JSVAL( JS_TRUE );
+
+ if (argc > 0) {
+ char *sql = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
+ char *err = NULL;
+ void *arg = NULL;
+ switch_core_db_callback_func_t cb_func = NULL;
+
+
+ if (argc > 1) {
+ char *js_func = JS_GetStringBytes(JS_ValueToString(cx, argv[1]));
+ switch_copy_string(dbo->code_buffer, js_func, sizeof(dbo->code_buffer));
+ cb_func = db_callback;
+ arg = dbo;
+ }
+
+ switch_core_db_exec(dbo->db, sql, cb_func, arg, &err);
+ if (err) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error %s\n", err);
+ switch_core_db_free(err);
+ *rval = BOOLEAN_TO_JSVAL( JS_FALSE );
+ }
+ }
+ return JS_TRUE;
+}
+
+
+static JSBool db_next(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ struct db_obj *dbo = JS_GetPrivate(cx, obj);
+ *rval = BOOLEAN_TO_JSVAL( JS_FALSE );
+
+ if (dbo->stmt) {
+ int running = 1;
+
+ while (running < 5000) {
+ int result = switch_core_db_step(dbo->stmt);
+ if (result == SQLITE_ROW) {
+ *rval = BOOLEAN_TO_JSVAL( JS_TRUE );
+ break;
+ } else if (result == SQLITE_BUSY) {
+ running++;
+ continue;
+ }
+ switch_core_db_finalize(dbo->stmt);
+ dbo->stmt = NULL;
+ break;
+ }
+ }
+
+ return JS_TRUE;
+}
+
+static JSBool db_fetch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ struct db_obj *dbo = JS_GetPrivate(cx, obj);
+ int colcount = switch_core_db_column_count(dbo->stmt);
+ char code[1024];
+ int x;
+
+ snprintf(code, sizeof(code), "~var _dB_RoW_DaTa_ = {}");
+ eval_some_js(code, dbo->cx, dbo->obj, rval);
+ if (*rval == JS_FALSE) {
+ return JS_TRUE;
+ }
+ for (x = 0; x < colcount; x++) {
+ snprintf(code, sizeof(code), "~_dB_RoW_DaTa_[\"%s\"] = \"%s\"",
+ (char *) switch_core_db_column_name(dbo->stmt, x),
+ (char *) switch_core_db_column_text(dbo->stmt, x));
+
+ eval_some_js(code, dbo->cx, dbo->obj, rval);
+ if (*rval == JS_FALSE) {
+ return JS_TRUE;
+ }
+ }
+
+ JS_GetProperty(cx, obj, "_dB_RoW_DaTa_", rval);
+
+ return JS_TRUE;
+}
+
+
+static JSBool db_prepare(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ struct db_obj *dbo = JS_GetPrivate(cx, obj);
+
+ *rval = BOOLEAN_TO_JSVAL( JS_FALSE );
+
+ if (dbo->stmt) {
+ switch_core_db_finalize(dbo->stmt);
+ dbo->stmt = NULL;
+ }
+
+ if (argc > 0) {
+ char *sql = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
+
+ if(switch_core_db_prepare(dbo->db, sql, 0, &dbo->stmt, 0)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error %s\n", switch_core_db_errmsg(dbo->db));
+ } else {
+ *rval = BOOLEAN_TO_JSVAL( JS_TRUE );
+ }
+ }
+ return JS_TRUE;
+}
+
+enum db_tinyid {
+ DB_NAME
+};
+
+static JSFunctionSpec db_methods[] = {
+ {"exec", db_exec, 1},
+ {"next", db_next, 0},
+ {"fetch", db_fetch, 1},
+ {"prepare", db_prepare, 0},
+ {0}
+};
+
+
+static JSPropertySpec db_props[] = {
+ {"path", DB_NAME, JSPROP_READONLY|JSPROP_PERMANENT},
+ {0}
+};
+
+
+static JSBool db_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
+{
+ JSBool res = JS_TRUE;
+ struct db_obj *dbo = JS_GetPrivate(cx, obj);
+ char *name;
+ int param = 0;
+
+ name = JS_GetStringBytes(JS_ValueToString(cx, id));
+ /* numbers are our props anything else is a method */
+ if (name[0] >= 48 && name[0] <= 57) {
+ param = atoi(name);
+ } else {
+ return JS_TRUE;
+ }
+
+ switch(param) {
+ case DB_NAME:
+ *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, dbo->dbname));
+ break;
+ }
+
+ return res;
+}
+
+JSClass db_class = {
+ "DB", JSCLASS_HAS_PRIVATE,
+ JS_PropertyStub, JS_PropertyStub, db_getProperty, JS_PropertyStub,
+ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, db_destroy, NULL, NULL, NULL,
+ db_construct
+};
+
+
+
+
+
+
+switch_status_t spidermonkey_load(JSContext *cx, JSObject *obj)
+{
+
+ JS_InitClass(cx,
+ obj,
+ NULL,
+ &db_class,
+ db_construct,
+ 3,
+ db_props,
+ db_methods,
+ db_props,
+ db_methods
+ );
+
+ return SWITCH_STATUS_SUCCESS;
+}
+
+
+const sm_module_interface_t DB_module_interface = {
+ /*.name = */ modname,
+ /*.spidermonkey_load*/ spidermonkey_load,
+ /*.next*/ NULL
+};
+
+SWITCH_MOD_DECLARE(switch_status_t) spidermonkey_init(const sm_module_interface_t **module_interface)
+{
+ *module_interface = &DB_module_interface;
+ return SWITCH_STATUS_SUCCESS;
+}
Added: freeswitch/trunk/src/mod/languages/mod_spidermonkey_skel/Makefile
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_skel/Makefile Fri Nov 10 16:49:57 2006
@@ -0,0 +1,19 @@
+include ../mod_spidermonkey/sm.mak
+
+OBJS=#$(BASE)/libs/mozilla/js/src/$(OS_CONFIG)_$(VER).OBJ/libjs.a $(BASE)/libs/mozilla/nsprpub/dist/lib/libnspr4.a
+LINKER=$(CC)
+
+
+all: depends $(MODNAME).$(DYNAMIC_LIB_EXTEN)
+
+depends:
+
+$(MODNAME).$(DYNAMIC_LIB_EXTEN): $(MODNAME).c
+ $(CC) $(CFLAGS) -fPIC -c $(MODNAME).c -o $(MODNAME).o
+ $(LINKER) $(SOLINK) -o $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(MODNAME).o $(OBJS) $(LDFLAGS)
+
+clean:
+ rm -fr *.$(DYNAMIC_LIB_EXTEN) *.o *~
+
+install:
+ cp -f $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(PREFIX)/mod
Added: freeswitch/trunk/src/mod/languages/mod_spidermonkey_skel/mod_spidermonkey_skel.c
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_skel/mod_spidermonkey_skel.c Fri Nov 10 16:49:57 2006
@@ -0,0 +1,110 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II <anthmct(a)yahoo.com>
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Anthony Minessale II <anthmct(a)yahoo.com>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Anthony Minessale II <anthmct(a)yahoo.com>
+ *
+ *
+ * mod_spidermonkey_skel.c -- Skel Javascript Module
+ *
+ */
+#include "mod_spidermonkey.h"
+
+static const char modname[] = "Skel";
+
+/* Skel Object */
+/*********************************************************************************/
+static JSBool skel_construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ return JS_TRUE;
+}
+
+static void skel_destroy(JSContext *cx, JSObject *obj)
+{
+}
+
+static JSBool skel_my_method(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ return JS_FALSE;
+}
+
+enum skel_tinyid {
+ SKEL_NAME
+};
+
+static JSFunctionSpec skel_methods[] = {
+ {"myMethod", skel_my_method, 1},
+ {0}
+};
+
+
+static JSPropertySpec skel_props[] = {
+ {"name", SKEL_NAME, JSPROP_READONLY|JSPROP_PERMANENT},
+ {0}
+};
+
+
+static JSBool skel_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
+{
+ JSBool res = JS_TRUE;
+
+ return res;
+}
+
+JSClass skel_class = {
+ modname, JSCLASS_HAS_PRIVATE,
+ JS_PropertyStub, JS_PropertyStub, skel_getProperty, JS_PropertyStub,
+ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, skel_destroy, NULL, NULL, NULL,
+ skel_construct
+};
+
+
+switch_status_t spidermonkey_load(JSContext *cx, JSObject *obj)
+{
+ JS_InitClass(cx,
+ obj,
+ NULL,
+ &skel_class,
+ skel_construct,
+ 3,
+ skel_props,
+ skel_methods,
+ skel_props,
+ skel_methods
+ );
+ return SWITCH_STATUS_SUCCESS;
+}
+
+
+const sm_module_interface_t skel_module_interface = {
+ /*.name = */ modname,
+ /*.spidermonkey_load*/ spidermonkey_load,
+ /*.next*/ NULL
+};
+
+SWITCH_MOD_DECLARE(switch_status_t) spidermonkey_init(const sm_module_interface_t **module_interface)
+{
+ *module_interface = &skel_module_interface;
+ return SWITCH_STATUS_SUCCESS;
+}
Added: freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/Makefile
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/Makefile Fri Nov 10 16:49:57 2006
@@ -0,0 +1,19 @@
+include ../mod_spidermonkey/sm.mak
+
+OBJS=#$(BASE)/libs/mozilla/js/src/$(OS_CONFIG)_$(VER).OBJ/libjs.a $(BASE)/libs/mozilla/nsprpub/dist/lib/libnspr4.a
+LINKER=$(CC)
+
+
+all: depends $(MODNAME).$(DYNAMIC_LIB_EXTEN)
+
+depends:
+
+$(MODNAME).$(DYNAMIC_LIB_EXTEN): $(MODNAME).c
+ $(CC) $(CFLAGS) -fPIC -c $(MODNAME).c -o $(MODNAME).o
+ $(LINKER) $(SOLINK) -o $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(MODNAME).o $(OBJS) $(LDFLAGS)
+
+clean:
+ rm -fr *.$(DYNAMIC_LIB_EXTEN) *.o *~
+
+install:
+ cp -f $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(PREFIX)/mod
Added: freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c Fri Nov 10 16:49:57 2006
@@ -0,0 +1,394 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II <anthmct(a)yahoo.com>
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Anthony Minessale II <anthmct(a)yahoo.com>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Anthony Minessale II <anthmct(a)yahoo.com>
+ *
+ *
+ * mod_spidermonkey_teletone.c -- TeleTone Javascript Module
+ *
+ */
+#include "mod_spidermonkey.h"
+
+static const char modname[] = "TeleTone";
+
+typedef enum {
+ TTF_DTMF = (1 << 0)
+} teletone_flag_t;
+
+
+struct teletone_obj {
+ teletone_generation_session_t ts;
+ JSContext *cx;
+ JSObject *obj;
+ switch_core_session_t *session;
+ switch_codec_t codec;
+ switch_buffer_t *audio_buffer;
+ switch_buffer_t *loop_buffer;
+ switch_memory_pool_t *pool;
+ switch_timer_t *timer;
+ switch_timer_t timer_base;
+ JSFunction *function;
+ jsval arg;
+ jsval ret;
+ unsigned int flags;
+};
+
+
+static int teletone_handler(teletone_generation_session_t *ts, teletone_tone_map_t *map)
+{
+ struct teletone_obj *tto = ts->user_data;
+ int wrote;
+
+ if (!tto) {
+ return -1;
+ }
+ wrote = teletone_mux_tones(ts, map);
+ switch_buffer_write(tto->audio_buffer, ts->buffer, wrote * 2);
+
+ return 0;
+}
+
+
+/* TeleTone Object */
+/*********************************************************************************/
+static JSBool teletone_construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ int32 memory = 65535;
+ JSObject *session_obj;
+ struct teletone_obj *tto = NULL;
+ struct js_session *jss = NULL;
+ switch_codec_t *read_codec;
+ switch_memory_pool_t *pool;
+ char *timer_name = NULL;
+
+ if (argc > 0) {
+ if (JS_ValueToObject(cx, argv[0], &session_obj)) {
+ if (!(jss = JS_GetPrivate(cx, session_obj))) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Find Session [1]\n");
+ return JS_FALSE;
+ }
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Find Session [2]\n");
+ return JS_FALSE;
+ }
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing Session Arg\n");
+ return JS_FALSE;
+ }
+ if (argc > 1) {
+ timer_name = JS_GetStringBytes(JS_ValueToString(cx, argv[1]));
+ }
+
+ if (argc > 2) {
+ if (!JS_ValueToInt32(cx, argv[2], &memory)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Convert to INT\n");
+ return JS_FALSE;
+ }
+ }
+ switch_core_new_memory_pool(&pool);
+
+ if (!(tto = switch_core_alloc(pool, sizeof(*tto)))) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error\n");
+ return JS_FALSE;
+ }
+
+ read_codec = switch_core_session_get_read_codec(jss->session);
+
+ if (switch_core_codec_init(&tto->codec,
+ "L16",
+ NULL,
+ read_codec->implementation->samples_per_second,
+ read_codec->implementation->microseconds_per_frame / 1000,
+ read_codec->implementation->number_of_channels,
+ SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE,
+ NULL, pool) == SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activated\n");
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed\n");
+ return JS_FALSE;
+ }
+
+ if (timer_name) {
+ unsigned int ms = read_codec->implementation->microseconds_per_frame / 1000;
+ if (switch_core_timer_init(&tto->timer_base,
+ timer_name,
+ ms,
+ (read_codec->implementation->samples_per_second / 50) * read_codec->implementation->number_of_channels,
+ pool) == SWITCH_STATUS_SUCCESS) {
+ tto->timer = &tto->timer_base;
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Timer INIT Success %u\n", ms);
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Timer INIT Failed\n");
+ }
+ }
+
+ switch_buffer_create_dynamic(&tto->audio_buffer, JS_BLOCK_SIZE, JS_BUFFER_SIZE, 0);
+ tto->pool = pool;
+ tto->obj = obj;
+ tto->cx = cx;
+ tto->session = jss->session;
+ teletone_init_session(&tto->ts, memory, teletone_handler, tto);
+ JS_SetPrivate(cx, obj, tto);
+
+ return JS_TRUE;
+}
+
+static void teletone_destroy(JSContext *cx, JSObject *obj)
+{
+ struct teletone_obj *tto = JS_GetPrivate(cx, obj);
+ switch_memory_pool_t *pool;
+ if (tto) {
+ if (tto->timer) {
+ switch_core_timer_destroy(tto->timer);
+ }
+ teletone_destroy_session(&tto->ts);
+ switch_buffer_destroy(&tto->audio_buffer);
+ switch_buffer_destroy(&tto->loop_buffer);
+ switch_core_codec_destroy(&tto->codec);
+ pool = tto->pool;
+ tto->pool = NULL;
+ if (pool) {
+ switch_core_destroy_memory_pool(&pool);
+ }
+ }
+}
+
+static JSBool teletone_add_tone(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ struct teletone_obj *tto = JS_GetPrivate(cx, obj);
+ if (argc > 2) {
+ int x;
+ char *fval;
+ char *map_str;
+ map_str = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
+
+ for(x = 1; x < TELETONE_MAX_TONES; x++) {
+ fval = JS_GetStringBytes(JS_ValueToString(cx, argv[x]));
+ tto->ts.TONES[(int)*map_str].freqs[x-1] = strtod(fval, NULL);
+ }
+ return JS_TRUE;
+ }
+
+ return JS_FALSE;
+}
+
+static JSBool teletone_on_dtmf(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ struct teletone_obj *tto = JS_GetPrivate(cx, obj);
+ if (argc > 0) {
+ tto->function = JS_ValueToFunction(cx, argv[0]);
+ if (argc > 1) {
+ tto->arg = argv[1];
+ }
+ switch_set_flag(tto, TTF_DTMF);
+ }
+ return JS_TRUE;
+}
+
+static JSBool teletone_generate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ struct teletone_obj *tto = JS_GetPrivate(cx, obj);
+ int32 loops = 0;
+
+ if (argc > 0) {
+ char *script;
+ switch_core_session_t *session;
+ switch_frame_t write_frame = {0};
+ unsigned char *fdata[1024];
+ switch_frame_t *read_frame;
+ int stream_id;
+ switch_core_thread_session_t thread_session;
+ switch_channel_t *channel;
+
+ if (argc > 1) {
+ if (!JS_ValueToInt32(cx, argv[1], &loops)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Convert to INT\n");
+ return JS_FALSE;
+ }
+ loops--;
+ if (!tto->loop_buffer) {
+ switch_buffer_create_dynamic(&tto->loop_buffer, JS_BLOCK_SIZE, JS_BUFFER_SIZE, 0);
+ }
+ }
+
+ if (tto->audio_buffer) {
+ switch_buffer_zero(tto->audio_buffer);
+ }
+ if (tto->loop_buffer) {
+ switch_buffer_zero(tto->loop_buffer);
+ }
+ tto->ts.debug = 1;
+ tto->ts.debug_stream = switch_core_get_console();
+
+ script = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
+ teletone_run(&tto->ts, script);
+
+ session = tto->session;
+ write_frame.codec = &tto->codec;
+ write_frame.data = fdata;
+
+ channel = switch_core_session_get_channel(session);
+
+ if (tto->timer) {
+ for (stream_id = 0; stream_id < switch_core_session_get_stream_count(session); stream_id++) {
+ switch_core_service_session(session, &thread_session, stream_id);
+ }
+ }
+
+ for(;;) {
+
+ if (switch_test_flag(tto, TTF_DTMF)) {
+ char dtmf[128];
+ char *ret;
+
+ if (switch_channel_has_dtmf(channel)) {
+ uintN aargc = 0;
+ jsval aargv[4];
+
+ switch_channel_dequeue_dtmf(channel, dtmf, sizeof(dtmf));
+ aargv[aargc++] = STRING_TO_JSVAL (JS_NewStringCopyZ(cx, dtmf));
+ JS_CallFunction(cx, obj, tto->function, aargc, aargv, &tto->ret);
+ ret = JS_GetStringBytes(JS_ValueToString(cx, tto->ret));
+ if (strcmp(ret, "true") && strcmp(ret, "undefined")) {
+ *rval = tto->ret;
+ return JS_TRUE;
+ }
+ }
+ }
+
+ if (tto->timer) {
+ if (switch_core_timer_next(tto->timer)< 0) {
+ break;
+ }
+
+ } else {
+ switch_status_t status;
+ status = switch_core_session_read_frame(session, &read_frame, -1, 0);
+
+ if (!SWITCH_READ_ACCEPTABLE(status)) {
+ break;
+ }
+ }
+ if ((write_frame.datalen = (uint32_t)switch_buffer_read(tto->audio_buffer, fdata, write_frame.codec->implementation->bytes_per_frame)) <= 0) {
+ if (loops) {
+ switch_buffer_t *tmp;
+
+ /* Switcharoo*/
+ tmp = tto->audio_buffer;
+ tto->audio_buffer = tto->loop_buffer;
+ tto->loop_buffer = tmp;
+ loops--;
+ /* try again */
+ if ((write_frame.datalen =
+ (uint32_t)switch_buffer_read(tto->audio_buffer, fdata, write_frame.codec->implementation->bytes_per_frame)) <= 0) {
+ break;
+ }
+ } else {
+ break;
+ }
+ }
+
+ write_frame.samples = write_frame.datalen / 2;
+ for (stream_id = 0; stream_id < switch_core_session_get_stream_count(session); stream_id++) {
+ if (switch_core_session_write_frame(session, &write_frame, -1, stream_id) != SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Bad Write\n");
+ break;
+ }
+ }
+ if (tto->loop_buffer && loops) {
+ switch_buffer_write(tto->loop_buffer, write_frame.data, write_frame.datalen);
+ }
+ }
+
+ if (tto->timer) {
+ switch_core_thread_session_end(&thread_session);
+ }
+ return JS_TRUE;
+ }
+
+ return JS_FALSE;
+}
+
+enum teletone_tinyid {
+ TELETONE_NAME
+};
+
+static JSFunctionSpec teletone_methods[] = {
+ {"generate", teletone_generate, 1},
+ {"onDTMF", teletone_on_dtmf, 1},
+ {"addTone", teletone_add_tone, 10},
+ {0}
+};
+
+
+static JSPropertySpec teletone_props[] = {
+ {"name", TELETONE_NAME, JSPROP_READONLY|JSPROP_PERMANENT},
+ {0}
+};
+
+
+static JSBool teletone_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
+{
+ JSBool res = JS_TRUE;
+
+ return res;
+}
+
+JSClass teletone_class = {
+ modname, JSCLASS_HAS_PRIVATE,
+ JS_PropertyStub, JS_PropertyStub, teletone_getProperty, JS_PropertyStub,
+ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, teletone_destroy, NULL, NULL, NULL,
+ teletone_construct
+};
+
+
+switch_status_t spidermonkey_load(JSContext *cx, JSObject *obj)
+{
+ JS_InitClass(cx,
+ obj,
+ NULL,
+ &teletone_class,
+ teletone_construct,
+ 3,
+ teletone_props,
+ teletone_methods,
+ teletone_props,
+ teletone_methods
+ );
+ return SWITCH_STATUS_SUCCESS;
+}
+
+
+const sm_module_interface_t teletone_module_interface = {
+ /*.name = */ modname,
+ /*.spidermonkey_load*/ spidermonkey_load,
+ /*.next*/ NULL
+};
+
+SWITCH_MOD_DECLARE(switch_status_t) spidermonkey_init(const sm_module_interface_t **module_interface)
+{
+ *module_interface = &teletone_module_interface;
+ return SWITCH_STATUS_SUCCESS;
+}
1
0