Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge pull request #111 from starpax/master

webworks Compass sensor Javascript API
  • Loading branch information...
commit d37a891b397be03712497e0ac5db3a31ba31bde7 2 parents 21cf0ec + bf4920d
@timwindsor timwindsor authored
Showing with 3,144 additions and 0 deletions.
  1. +4 −0 .gitignore
  2. +81 −0 BB10/COMPASS/README.md
  3. +3 −0  BB10/COMPASS/TestApplication/README.md
  4. +30 −0 BB10/COMPASS/TestApplication/config.xml
  5. +42 −0 BB10/COMPASS/TestApplication/index.htm
  6. +38 −0 BB10/COMPASS/javascript_src/client.js
  7. +121 −0 BB10/COMPASS/javascript_src/index.js
  8. +5 −0 BB10/COMPASS/javascript_src/manifest.json
  9. +320 −0 BB10/COMPASS/native_src/public/plugin.cpp
  10. +70 −0 BB10/COMPASS/native_src/public/plugin.h
  11. +222 −0 BB10/COMPASS/native_src/public/tokenizer.cpp
  12. +55 −0 BB10/COMPASS/native_src/public/tokenizer.h
  13. +301 −0 BB10/COMPASS/native_src/src/compass_js.cpp
  14. +53 −0 BB10/COMPASS/native_src/src/compass_js.hpp
  15. +38 −0 BB10/COMPASS/output/community.compass/client.js
  16. BIN  BB10/COMPASS/output/community.compass/device/compassJnext.so
  17. +121 −0 BB10/COMPASS/output/community.compass/index.js
  18. +5 −0 BB10/COMPASS/output/community.compass/manifest.json
  19. BIN  BB10/COMPASS/output/community.compass/simulator/compassJnext.so
  20. +525 −0 BB10/COMPASS/project/compassJnext/.cproject
  21. +89 −0 BB10/COMPASS/project/compassJnext/.project
  22. +320 −0 BB10/COMPASS/project/compassJnext/public/plugin.cpp
  23. +70 −0 BB10/COMPASS/project/compassJnext/public/plugin.h
  24. +222 −0 BB10/COMPASS/project/compassJnext/public/tokenizer.cpp
  25. +55 −0 BB10/COMPASS/project/compassJnext/public/tokenizer.h
  26. +301 −0 BB10/COMPASS/project/compassJnext/src/compass_js.cpp
  27. +53 −0 BB10/COMPASS/project/compassJnext/src/compass_js.hpp
View
4 .gitignore
@@ -1,2 +1,6 @@
add
.DS_Store
+.metadata/
+.settings/
+*.[o]
+webworks-1.0.2.9.js
View
81 BB10/COMPASS/README.md
@@ -0,0 +1,81 @@
+# Compass API
+
+The Compass API allows you to read the leading of the compass in your device.
+
+**Tested On**
+
+* BlackBerry 10.0.9.388
+
+**Author(s)**
+
+* [Arman Fallah](https://github.com/starpax)
+
+**To contribute code to this repository you must be [signed up as an official contributor](http://blackberry.github.com/howToContribute.html).**
+
+## How To Install The Extension
+
+1. Clone the repo to your local machine
+2. Locate your BlackBerry WebWorks SDK **C:\Program Files\Research In Motion\BlackBerry 10 WebWorks SDK <version>\Framework\ext** (Windows) or **~/SDKs/BlackBerry 10 WebWorks SDK <version>/Framework/ext** (Mac)
+3. Create a new directory **community.compass** in the **ext** directory
+4. Copy **output/community.compass/compassJnext.so** to **/path/to/sdk/ext/community.compass/device/compassJnext.so**
+5. Copy everything in **javascript_src** to **/path/to/sdk/ext/community.compass/**
+
+## Required Feature ID
+Whenever you use the below feature id in any of your WebWorks applications this extension will be loaded for use.
+
+ <feature id="community.compass" required="true" version="1.0.0.0" />
+
+## Summary
+
+**community.compass.readCompass()**
+
+Return:
+number - degrees from Magnetic North
+
+Example:
+
+ <script type="text/javascript">
+ var leading = community.compass.readCompass();
+ </script>
+
+**community.compass.startMonitoringCompass([Function:fun])**
+
+Parameter:
+fun: a one parameter method to call each second, that parameter stores the compass leading
+
+Return:
+[String] - status message of monitoring the compass
+
+Example:
+
+ <script type="text/javascript">
+ function compassCallback(compassLeading)
+ {
+ document.getElementById("leading").innerHTML = "Degrees from Magnetic North: " + compassLeading;
+ }
+
+ function startMonitoringCompass()
+ {
+ var ret = community.compass.startMonitoringCompass(compassCallback);
+ alert(ret);
+ }
+ </script>
+
+**community.compass.stopMonitoringCompass()**
+
+Return:
+[String] - status message of stopping the monitoring the compass
+
+Example:
+
+ <script type="text/javascript">
+ function stopMonitoringCompass()
+ {
+ var ret = community.compass.stopMonitoringCompass();
+ alert(ret);
+ }
+ </script>
+
+## Disclaimer
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
View
3  BB10/COMPASS/TestApplication/README.md
@@ -0,0 +1,3 @@
+# Where to find the missing file webworks-1.0.0.7.js
+
+You will find it under Framework/clientFiles/webworks-1.0.0.7.js in your WebWorks SDK installation folder and copy it to this folder.
View
30 BB10/COMPASS/TestApplication/config.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2012 Research In Motion Limited.
+
+ Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<widget xmlns="http://www.w3.org/ns/widgets"
+ xmlns:rim="http://www.blackberry.com/ns/widgets"
+ version="1.0.0"
+ id="CompassExtension">
+ <name>Compass Test</name>
+ <content src="index.htm"/>
+ <author>
+ Research In Motion Ltd.
+ </author>
+ <description>This application shows how to use the compass extension.</description>
+ <feature id="community.compass" required="true" version="1.0.0.0"/>
+ <access uri="*"/>
+ <license href="http://www.apache.org/licenses/LICENSE-2.0">My License</license>
+</widget>
View
42 BB10/COMPASS/TestApplication/index.htm
@@ -0,0 +1,42 @@
+<html>
+ <head>
+ <title>Community - Compass Extension</title>
+ <script type="text/javascript" src="webworks-1.0.2.9.js"></script>
+ <script type="text/javascript">
+ function compassCallback(compassLeading) {
+ document.getElementById("leading").innerHTML = "Degrees from Magnetic North: " + compassLeading;
+ }
+
+ function startMonitoringCompass() {
+ var ret = community.compass.startMonitoringCompass(compassCallback);
+ alert(ret);
+ }
+
+ function getCompassLeading() {
+ var ret = community.compass.readCompass();
+ alert(ret);
+ }
+
+ function stopMonitoringCompass() {
+ var ret = community.compass.stopMonitoringCompass();
+ alert(ret);
+ }
+ </script>
+ </head>
+ <body bgcolor="#FF9900">
+ <div align="center">
+ <button style="width:280px; height: 240px; font-size: 200%; background-color: lightgreen" onClick="startMonitoringCompass()">
+ Start Monitoring Compass
+ </button>
+ <button style="width:280px; height: 240px; font-size: 200%; background-color: lightgreen" onClick="stopMonitoringCompass()">
+ Stop Monitoring Compass
+ </button>
+ <button style="width:280px; height: 240px; font-size: 200%; background-color: lightgreen" onClick="getCompassLeading()">
+ Get Compass Leading
+ </button>
+ <br />
+ </div>
+ <div id="leading" style="font-size: 200%; background-color: lightblue">
+ </div>
+ </body>
+</html>
View
38 BB10/COMPASS/javascript_src/client.js
@@ -0,0 +1,38 @@
+/*
+* Copyright 2012 Research In Motion Limited.
+*
+* Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+var _self = {},
+ _ID = require("./manifest.json").namespace;
+
+_self.readCompass = function (cb)
+{
+ return window.webworks.execSync(_ID, "readCompassServer", null);
+};
+
+_self.stopMonitoringCompass = function (cb)
+{
+ return window.webworks.execSync(_ID, "stopMonitoringCompassServer", null);
+};
+
+
+_self.startMonitoringCompass = function (cb)
+{
+ window.webworks.event.add(_ID, "community.compass.compassEvent", cb);
+
+ return window.webworks.execSync(_ID, "startMonitoringCompassServer", null);
+};
+
+module.exports = _self;
View
121 BB10/COMPASS/javascript_src/index.js
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var compassJNext,
+ _event = require("../../lib/event");
+
+module.exports =
+{
+ startMonitoringCompassServer: function (success, fail, args, env)
+ {
+ try
+ {
+ success(compassJNext.startMonitoringCompassJNext());
+ }
+ catch (e)
+ {
+ fail(-1, e);
+ }
+ },
+
+ stopMonitoringCompassServer: function (success, fail, args, env)
+ {
+ try
+ {
+ success(compassJNext.stopMonitoringCompassJNext());
+ }
+ catch (e)
+ {
+ fail(-1, e);
+ }
+ },
+
+ readCompassServer: function (success, fail, args, env)
+ {
+ try
+ {
+ success(compassJNext.readCompassJNext());
+ }
+ catch (e)
+ {
+ fail(-1, e);
+ }
+ },
+};
+
+///////////////////////////////////////////////////////////////////
+// JavaScript wrapper for JNEXT plugin
+///////////////////////////////////////////////////////////////////
+
+JNEXT.CompassJNext = function ()
+{
+ var _self = this;
+
+ _self.startMonitoringCompassJNext = function ()
+ {
+ return JNEXT.invoke(_self._id, "startMonitoringNative");
+ };
+
+ _self.stopMonitoringCompassJNext = function ()
+ {
+ return JNEXT.invoke(_self._id, "stopMonitoringNative");
+ };
+
+ _self.readCompassJNext = function ()
+ {
+ return JNEXT.invoke(_self._id, "readCompassNative");
+ };
+
+ _self.getId = function ()
+ {
+ return _self._id;
+ };
+
+ _self.init = function ()
+ {
+ if (!JNEXT.require("compassJnext"))
+ {
+ return false;
+ }
+
+ _self._id = JNEXT.createObject("compassJnext.Compass");
+
+ if (!_self._id || _self._id === "")
+ {
+ return false;
+ }
+
+ JNEXT.registerEvents(_self);
+ };
+
+ _self.onEvent = function (strData)
+ {
+ var arData = strData.split(" "),
+ strEventId = arData[0],
+ arg = arData[1];
+
+ // Trigger the event handler of specific Push events
+ if (strEventId === "CompassLeading")
+ {
+ _event.trigger("community.compass.compassEvent", arg);
+ }
+ };
+
+ _self._id = "";
+
+ _self.init();
+};
+
+compassJNext = new JNEXT.CompassJNext();
View
5 BB10/COMPASS/javascript_src/manifest.json
@@ -0,0 +1,5 @@
+{
+ "global": false,
+ "namespace": "community.compass",
+ "dependencies": []
+}
View
320 BB10/COMPASS/native_src/public/plugin.cpp
@@ -0,0 +1,320 @@
+#include "plugin.h"
+#include "tokenizer.h"
+
+#ifdef _WINDOWS
+#include <windows.h>
+BOOL APIENTRY DllMain( HANDLE hModule,
+ DWORD ul_reason_for_call,
+ LPVOID lpReserved )
+{
+ return TRUE;
+}
+#else
+#include <errno.h>
+#include <string.h>
+
+extern int errno;
+#endif
+
+SendPluginEv SendPluginEvent;
+
+string g_GetSysErrMsg( void )
+{
+ string strError = "Unknown";
+ // Problem loading
+#ifdef _WINDOWS
+ int nErrorCode = GetLastError();
+ LPTSTR s;
+ if ( ::FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL, nErrorCode, 0, ( LPTSTR ) &s, 0, NULL ) )
+ {
+ strError = s;
+ }
+ else
+ {
+ char szBuf[ 20 ];
+ _snprintf_s( szBuf, _countof(szBuf), 19, "%d", nErrorCode );
+ strError = szBuf;
+ }
+#else
+ char szError[80];
+ if ( strerror_r( errno, szError, sizeof(szError) ) )
+ {
+ strError = "no description found";
+ }
+ else
+ {
+ strError = szError;
+ }
+#endif
+ return strError;
+}
+
+void g_sleep( unsigned int mseconds )
+{
+#ifdef _WINDOWS
+ Sleep( mseconds );
+#else
+ usleep( mseconds * 1000 );
+#endif
+}
+
+string& g_trim( string& str )
+{
+ // Whitespace characters
+ char whspc[] = " \t\r\n\v\f";
+
+ // Whack off first part
+ size_t pos = str.find_first_not_of( whspc );
+
+ if ( pos != string::npos )
+ str.replace( 0, pos, "" );
+
+ // Whack off trailing stuff
+ pos = str.find_last_not_of( whspc );
+
+ if ( pos != string::npos )
+ str.replace( pos + 1, str.length() - pos, "" );
+
+ return str;
+}
+
+void g_tokenize( const string& str, const string& delimiters, vector<string>& tokens )
+{
+ tokenize( str, tokens, delimiters );
+}
+
+char* SetEventFunc( SendPluginEv funcPtr )
+{
+ static char * szObjList = onGetObjList();
+ SendPluginEvent = funcPtr;
+ return szObjList;
+}
+
+
+const int nMAXSIZE = 512;
+char* g_pszRetVal = NULL;
+
+//-----------------------------------------------------------
+// Map from an object Id to an object instance
+//-----------------------------------------------------------
+typedef std::map<string, JSExt*> StringToJExt_T;
+
+//-----------------------------------------------------------
+// Map from a browser context to an id mapping
+//-----------------------------------------------------------
+typedef std::map<void*, StringToJExt_T*> VoidToMap_T;
+
+VoidToMap_T g_context2Map;
+
+class GlobalSharedModule
+{
+
+public:
+ GlobalSharedModule( void )
+ {
+ g_pszRetVal = new char[ nMAXSIZE ];
+ }
+
+ ~GlobalSharedModule()
+ {
+ delete [] g_pszRetVal;
+
+ VoidToMap_T::iterator posMaps;
+
+ for ( posMaps = g_context2Map.begin(); posMaps != g_context2Map.end(); ++posMaps )
+ {
+ StringToJExt_T& id2Obj = *posMaps->second;
+ StringToJExt_T::iterator posMap;
+
+ for ( posMap = id2Obj.begin(); posMap != id2Obj.end(); ++posMap )
+ {
+ JSExt* pJSExt = posMap->second;
+
+ if ( pJSExt->CanDelete() )
+ {
+ delete pJSExt;
+ }
+ }
+
+ id2Obj.erase( id2Obj.begin(), id2Obj.end() );
+ }
+
+ g_context2Map.erase( g_context2Map.begin(), g_context2Map.end() );
+ }
+};
+
+GlobalSharedModule g_sharedModule;
+
+char* g_str2global( const string& strRetVal )
+{
+ int nLen = strRetVal.size();
+
+ if ( nLen >= nMAXSIZE )
+ {
+ delete [] g_pszRetVal;
+ g_pszRetVal = new char[ nLen + 1 ];
+ }
+
+ else
+ {
+ // To minimaize the number of memory reallocations, the assumption
+ // is that in most times this will be the case
+ delete [] g_pszRetVal;
+ g_pszRetVal = new char[ nMAXSIZE ];
+ }
+
+ strcpy( g_pszRetVal, strRetVal.c_str() );
+ return g_pszRetVal;
+}
+
+bool g_unregisterObject( const string& strObjId, void* pContext )
+{
+ // Called by the plugin extension implementation
+ // if the extension handles the deletion of its object
+
+ StringToJExt_T * pID2Obj = NULL;
+
+ VoidToMap_T::iterator iter = g_context2Map.find( pContext );
+
+ if ( iter != g_context2Map.end() )
+ {
+ pID2Obj = iter->second;
+ }
+ else
+ {
+ return false;
+ }
+
+ StringToJExt_T& mapID2Obj = *pID2Obj;
+
+ StringToJExt_T::iterator r = mapID2Obj.find( strObjId );
+
+ if ( r == mapID2Obj.end() )
+ {
+ return false;
+ }
+
+ mapID2Obj.erase( strObjId );
+ return true;
+}
+
+char* InvokeFunction( const char* szCommand, void* pContext )
+{
+ StringToJExt_T * pID2Obj = NULL;
+
+ VoidToMap_T::iterator iter = g_context2Map.find( pContext );
+
+ if ( iter != g_context2Map.end() )
+ {
+ pID2Obj = iter->second;
+ }
+ else
+ {
+ pID2Obj = new StringToJExt_T;
+ g_context2Map[ pContext ] = pID2Obj;
+ }
+
+ StringToJExt_T& mapID2Obj = *pID2Obj;
+
+ string strFullCommand = szCommand;
+ vector<string> arParams;
+ g_tokenize( strFullCommand, " ", arParams );
+ string strCommand = arParams[ 0 ];
+ string strRetVal = szERROR;
+
+ if ( strCommand == szCREATE )
+ {
+ string strClassName = arParams[ 1 ];
+ string strObjId = arParams[ 2 ];
+
+ StringToJExt_T::iterator r = mapID2Obj.find( strObjId );
+
+ if ( r != mapID2Obj.end() )
+ {
+ strRetVal += strObjId;
+ strRetVal += " :Object already exists.";
+ return g_str2global( strRetVal );
+ }
+
+ JSExt* pJSExt = onCreateObject( strClassName, strObjId );
+
+ if ( pJSExt == NULL )
+ {
+ strRetVal += strObjId;
+ strRetVal += " :Unknown object type ";
+ strRetVal += strClassName;
+ return g_str2global( strRetVal );
+ }
+
+ pJSExt->m_pContext = pContext;
+ mapID2Obj[ strObjId ] = pJSExt;
+
+ strRetVal = szOK;
+ strRetVal += strObjId;
+ return g_str2global( strRetVal );
+ }
+ else
+ if ( strCommand == szINVOKE )
+ {
+ string strObjId = arParams[ 1 ];
+ string strMethod = arParams[ 2 ];
+
+ StringToJExt_T::iterator r = mapID2Obj.find( strObjId );
+
+ if ( r == mapID2Obj.end() )
+ {
+ strRetVal += strObjId;
+ strRetVal += " :No object found for id.";
+ return g_str2global( strRetVal );
+ }
+
+ JSExt* pJSExt = r->second;
+
+ size_t nLoc = strFullCommand.find( strObjId );
+
+ if ( nLoc == string::npos )
+ {
+ strRetVal += strObjId;
+ strRetVal += " :Internal InvokeMethod error.";
+ return g_str2global( strRetVal );
+ }
+
+ if ( strMethod == szDISPOSE )
+ {
+ StringToJExt_T::iterator r = mapID2Obj.find( strObjId );
+
+ if ( r == mapID2Obj.end() )
+ {
+ strRetVal = szERROR;
+ strRetVal += strObjId;
+ return g_str2global( strRetVal );
+ }
+
+ JSExt * pJSExt = mapID2Obj[ strObjId ];
+
+ if ( pJSExt->CanDelete() )
+ {
+ delete pJSExt;
+ }
+
+ mapID2Obj.erase( strObjId );
+ strRetVal = szOK;
+ strRetVal += strObjId;
+ return g_str2global( strRetVal );
+ }
+
+ size_t nSuffixLoc = nLoc + strObjId.size();
+ string strInvoke = strFullCommand.substr( nSuffixLoc );
+ strInvoke = g_trim( strInvoke );
+ strRetVal = pJSExt->InvokeMethod( strInvoke );
+ return g_str2global( strRetVal );
+ }
+
+ strRetVal += " :Unknown command ";
+ strRetVal += strCommand;
+ return g_str2global( strRetVal );
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
View
70 BB10/COMPASS/native_src/public/plugin.h
@@ -0,0 +1,70 @@
+#ifndef _PLUGIN_H
+#define _PLUGIN_H
+
+#include <map>
+#include <string>
+#include <vector>
+#include <unistd.h>
+//#include "tokenizer.h"
+
+using namespace std;
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+//%% Functions exported by this DLL
+//%% Should always be only SetEventFunc and InvokeFunction
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+// g++ requires extern "C" otherwise the names of SetEventFunc and InvokeFunction
+// are mangled C++ style. MS Visual Studio doesn't seem to care though.
+extern "C"
+{
+ typedef void (*SendPluginEv)( const char* szEvent, void* pContext );
+ char* SetEventFunc(SendPluginEv funcPtr);
+ char* InvokeFunction( const char* szCommand, void* pContext );
+}
+
+// JNEXT Framework function of the form:
+// typedef void (*SendPluginEv)( const char* szEvent );
+// used to notify JavaScript of an asynchronous event
+extern SendPluginEv SendPluginEvent;
+
+/////////////////////////////////////////////////////////////////////////
+// Constants and methods common to all JNEXT extensions types
+/////////////////////////////////////////////////////////////////////////
+#define szERROR "Error "
+#define szOK "Ok "
+
+#define szDISPOSE "Dispose"
+#define szINVOKE "InvokeMethod"
+#define szCREATE "CreateObj"
+
+/////////////////////////////////////////////////////////////////////////
+// Utility functions
+/////////////////////////////////////////////////////////////////////////
+string& g_trim( string& str );
+void g_tokenize(const string& str,const string& delimiters, vector<string>& tokens);
+char* g_str2static( const string& strRetVal );
+void g_sleep( unsigned int mseconds );
+bool g_unregisterObject( const string& strObjId, void* pContext );
+
+
+/////////////////////////////////////////////////////////////////////////
+// Abstract extension object
+/////////////////////////////////////////////////////////////////////////
+class JSExt
+{
+public:
+ virtual ~JSExt() {};
+ virtual string InvokeMethod( const string& strCommand ) = 0;
+ virtual bool CanDelete( void ) = 0;
+ virtual void TryDelete( void ) {}
+public:
+ void* m_pContext;
+};
+
+/////////////////////////////////////////////////////////////////////////
+// Callback functions to be implemented by the plugin implementation
+/////////////////////////////////////////////////////////////////////////
+extern char* onGetObjList( void );
+extern JSExt* onCreateObject( const string& strClassName, const string& strObjId );
+
+#endif
View
222 BB10/COMPASS/native_src/public/tokenizer.cpp
@@ -0,0 +1,222 @@
+/************************************************************************
+The zlib/libpng License
+
+Copyright (c) 2006 Joerg Wiedenmann
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from
+the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented;
+you must not claim that you wrote the original software.
+If you use this software in a product, an acknowledgment
+in the product documentation would be appreciated but is
+not required.
+
+2. Altered source versions must be plainly marked as such,
+and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+
+***********************************************************************/
+
+/********************************************************************
+ created: 2006-01-28
+ filename: tokenizer.cpp
+ author: Jörg Wiedenmann
+
+ purpose: A tokenizer function which provides a very
+ customizable way of breaking up strings.
+
+ history: 2006-01-28, Original version
+ 2006-03-04, Fixed a small parsing bug, thanks Elias.
+*********************************************************************/
+
+#include "tokenizer.h"
+
+using namespace std;
+
+void tokenize ( const string& str, vector<string>& result,
+ const string& delimiters, const string& delimiters_preserve,
+ const string& quote, const string& esc )
+{
+ // clear the vector
+ if ( false == result.empty() )
+ {
+ result.clear();
+ }
+
+ string::size_type pos = 0; // the current position (char) in the string
+ char ch = 0; // buffer for the current character
+ char delimiter = 0; // the buffer for the delimiter char which
+ // will be added to the tokens if the delimiter
+ // is preserved
+ char current_quote = 0; // the char of the current open quote
+ bool quoted = false; // indicator if there is an open quote
+ string token; // string buffer for the token
+ bool token_complete = false; // indicates if the current token is
+ // read to be added to the result vector
+ string::size_type len = str.length(); // length of the input-string
+
+ // for every char in the input-string
+ while ( len > pos )
+ {
+ // get the character of the string and reset the delimiter buffer
+ ch = str.at(pos);
+ delimiter = 0;
+
+ // assume ch isn't a delimiter
+ bool add_char = true;
+
+ // check ...
+
+ // ... if the delimiter is an escaped character
+ bool escaped = false; // indicates if the next char is protected
+ if ( false == esc.empty() ) // check if esc-chars are provided
+ {
+ if ( string::npos != esc.find_first_of(ch) )
+ {
+ // get the escaped char
+ ++pos;
+ if ( pos < len ) // if there are more chars left
+ {
+ // get the next one
+ ch = str.at(pos);
+
+ // add the escaped character to the token
+ add_char = true;
+ }
+ else // cannot get any more characters
+ {
+ // don't add the esc-char
+ add_char = false;
+ }
+
+ // ignore the remaining delimiter checks
+ escaped = true;
+ }
+ }
+
+ // ... if the delimiter is a quote
+ if ( false == quote.empty() && false == escaped )
+ {
+ // if quote chars are provided and the char isn't protected
+ if ( string::npos != quote.find_first_of(ch) )
+ {
+ // if not quoted, set state to open quote and set
+ // the quote character
+ if ( false == quoted )
+ {
+ quoted = true;
+ current_quote = ch;
+
+ // don't add the quote-char to the token
+ add_char = false;
+ }
+ else // if quote is open already
+ {
+ // check if it is the matching character to close it
+ if ( current_quote == ch )
+ {
+ // close quote and reset the quote character
+ quoted = false;
+ current_quote = 0;
+
+ // don't add the quote-char to the token
+ add_char = false;
+ }
+ } // else
+ }
+ }
+
+ // ... if the delimiter isn't preserved
+ if ( false == delimiters.empty() && false == escaped &&
+ false == quoted )
+ {
+ // if a delimiter is provided and the char isn't protected by
+ // quote or escape char
+ if ( string::npos != delimiters.find_first_of(ch) )
+ {
+ // if ch is a delimiter and the token string isn't empty
+ // the token is complete
+ if ( false == token.empty() ) // BUGFIX: 2006-03-04
+ {
+ token_complete = true;
+ }
+
+ // don't add the delimiter to the token
+ add_char = false;
+ }
+ }
+
+ // ... if the delimiter is preserved - add it as a token
+ bool add_delimiter = false;
+ if ( false == delimiters_preserve.empty() && false == escaped &&
+ false == quoted )
+ {
+ // if a delimiter which will be preserved is provided and the
+ // char isn't protected by quote or escape char
+ if ( string::npos != delimiters_preserve.find_first_of(ch) )
+ {
+ // if ch is a delimiter and the token string isn't empty
+ // the token is complete
+ if ( false == token.empty() ) // BUGFIX: 2006-03-04
+ {
+ token_complete = true;
+ }
+
+ // don't add the delimiter to the token
+ add_char = false;
+
+ // add the delimiter
+ delimiter = ch;
+ add_delimiter = true;
+ }
+ }
+
+
+ // add the character to the token
+ if ( true == add_char )
+ {
+ // add the current char
+ token.push_back( ch );
+ }
+
+ // add the token if it is complete
+ if ( true == token_complete && false == token.empty() )
+ {
+ // add the token string
+ result.push_back( token );
+
+ // clear the contents
+ token.clear();
+
+ // build the next token
+ token_complete = false;
+ }
+
+ // add the delimiter
+ if ( true == add_delimiter )
+ {
+ // the next token is the delimiter
+ string delim_token;
+ delim_token.push_back( delimiter );
+ result.push_back( delim_token );
+
+ // REMOVED: 2006-03-04, Bugfix
+ }
+
+ // repeat for the next character
+ ++pos;
+ } // while
+
+ // add the final token
+ if ( false == token.empty() )
+ {
+ result.push_back( token );
+ }
+}
View
55 BB10/COMPASS/native_src/public/tokenizer.h
@@ -0,0 +1,55 @@
+/************************************************************************
+The zlib/libpng License
+
+Copyright (c) 2006 Joerg Wiedenmann
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from
+the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented;
+ you must not claim that you wrote the original software.
+ If you use this software in a product, an acknowledgment
+ in the product documentation would be appreciated but is
+ not required.
+
+2. Altered source versions must be plainly marked as such,
+ and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+
+***********************************************************************/
+
+/********************************************************************
+ created: 2006-01-28
+ filename: tokenizer.cpp
+ author: Jörg Wiedenmann
+
+ purpose: A tokenizer function which provides a very
+ customizable way of breaking up strings.
+*********************************************************************/
+
+#include <vector>
+#include <string>
+using namespace std;
+
+// Function to break up a string into tokens
+//
+// Parameters:
+//-----------
+// str = the input string that will be tokenized
+// result = the tokens for str
+// delimiters = the delimiter characters
+// delimiters preserve = same as above, but the delimiter characters
+// will be put into the result as a token
+// quote = characters to protect the enclosed characters
+// esc = characters to protect a single character
+//
+
+void tokenize ( const string& str, vector<string>& result,
+ const string& delimiters, const string& delimiters_preserve = "",
+ const string& quote = "\"", const string& esc = "\\" );
View
301 BB10/COMPASS/native_src/src/compass_js.cpp
@@ -0,0 +1,301 @@
+/*
+ * compass_js.cpp
+ *
+ * Created on: 2012-09-29
+ * Author: starpax
+ */
+
+#include <sstream>
+#include <errno.h>
+#include <sensor/sensor.h>
+#include <fcntl.h>
+#include <devctl.h>
+#include <math.h>
+
+#include "compass_js.hpp"
+
+/**
+ * Default constructor.
+ */
+Compass::Compass(const string& id)
+ : m_id(id)
+ , m_compassExists(false)
+ , m_thread(0)
+{
+ isDeviceCompatible();
+}
+
+/**
+ * Memory destructor.
+ */
+Compass::~Compass()
+{
+}
+
+/**
+ * This method returns the list of objects implemented by this native
+ * extension.
+ */
+char* onGetObjList()
+{
+ static char name[] = "Compass";
+ return name;
+}
+
+/**
+ * This method is used by JSExt to instantiate the Compass object when
+ * an object is created on the JavaScript server side.
+ */
+JSExt* onCreateObject(const string& className, const string& id)
+{
+ if (className == "Compass")
+ {
+ return new Compass(id);
+ }
+
+ return NULL;
+}
+
+/**
+ * Method used by JNext to determine if the object can be deleted.
+ */
+bool Compass::CanDelete()
+{
+ return true;
+}
+
+/**
+ * It will be called from JNext JavaScript side with passed string.
+ * This method implements the interface for the JavaScript to native binding
+ * for invoking native code. This method is triggered when JNext.invoke is
+ * called on the JavaScript side with this native objects id.
+ */
+string Compass::InvokeMethod(const string& command)
+{
+ // Determine which function should be executed
+ if (command == "startMonitoringNative")
+ {
+ return StartMonitoringNative();
+ }
+ else if (command == "stopMonitoringNative")
+ {
+ return StopMonitoringNative();
+ }
+ else if (command == "readCompassNative")
+ {
+ return convertFloatToString(readCompass());
+ }
+ else
+ {
+ return "Unsupported Method";
+ }
+}
+
+/**
+ * Method to check if this device has a working compass.
+ * @return: bool - true if working compass is available
+ */
+bool Compass::isDeviceCompatible()
+{
+ const char* compassPath = "/dev/sensor/compass";
+ int checkResult = access(compassPath, F_OK);
+
+ if ( checkResult != -1 )
+ {
+ m_compassExists = true;
+ }
+ else
+ {
+ m_compassExists = false;
+ }
+
+ return m_compassExists;
+}
+
+float Compass::readCompass()
+{
+ if ( m_compassExists )
+ {
+ const char* sensorPath = "/dev/sensor/compass";
+ sensor_event_t sensorEvent;
+ ssize_t length = 0;
+
+ // Open the sensor with read-only access
+ int checkSensor = open(sensorPath, O_RDONLY);
+
+ if ( checkSensor == -1 )
+ {
+ // Log error here - Accessing path sensorPath
+ fprintf(stderr, "Error Accessing sensor path");
+ return 0.0f;
+ }
+
+ // Send the skip duplicate event device control.
+ // The device must be moved for a new event to be sent.
+ sensor_devctl_skipdupevent_u deviceControl;
+ memset(&deviceControl, 0, sizeof(deviceControl));
+ deviceControl.tx.enable = 1;
+ int readCheck = devctl(checkSensor, DCMD_SENSOR_SKIPDUPEVENT, &deviceControl, sizeof(deviceControl), NULL);
+
+ if ( readCheck != EOK )
+ {
+ // Log error here - Attempting to skip duplicates
+ fprintf(stderr, "Error: Attempting to skip duplicates");
+ }
+
+ while (true)
+ {
+ memset(&sensorEvent, 0, sizeof(sensorEvent));
+
+ // Block waiting for new sensor data
+ length = read(checkSensor, &sensorEvent, sizeof(sensorEvent));
+
+ // Check for errors
+ if ( length == -1 )
+ {
+ // Log error here - Read error
+ fprintf(stderr, "Error: Reading the sensor");
+ break;
+ }
+ if ( length < (int)sizeof(sensorEvent) )
+ {
+ // Log error here - Read size less than expected
+ fprintf(stderr, "Error: Read size less than expected");
+ continue;
+ }
+ if ( sensorEvent.type != SENSOR_TYPE_COMPASS )
+ {
+ // Log error here - Sensor type different than expected
+ fprintf(stderr, "Error: Sensor type different than expected");
+ continue;
+ }
+
+ // Get compass azimuth (0->360 degrees from magnetic north)
+ if ( sensorEvent.compass_s.is_face_down == 0 )
+ {
+ return sensorEvent.compass_s.azimuth;
+ }
+ else
+ {
+ // Device is upside down, flip compass heading
+ return fmodf(sensorEvent.compass_s.azimuth + 180.0f, 360.0f);
+ }
+ }
+ }
+
+ return 0.0f;
+}
+
+/**
+ * Thread that retrieves the current leading of the compass every second and
+ * sends it to the JavaScript side using an event. The thread shall continue
+ * to retrieve the compass leading until the native object is destroyed on the
+ * JavaScript side.
+ */
+void* CompassThread(void* parent)
+{
+ Compass *pParent = static_cast<Compass *>(parent);
+
+ // Endless loop that collects compass information and send it to JNext JavaScript side
+ while (true)
+ {
+ pParent->SendCompassInfo();
+ sleep(1);
+ }
+
+ return NULL;
+}
+
+/**
+ * Method responsible for starting the thread to get compass leading. Only one
+ * thread can be created per native JavaScript instance. This method returns
+ * true if the thread was created successfully and false otherwise.
+ */
+bool Compass::StartMonitoringThread()
+{
+ if (!m_thread)
+ {
+ pthread_attr_t thread_attr;
+ pthread_attr_init(&thread_attr);
+ pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED);
+
+ pthread_create(&m_thread, &thread_attr, CompassThread, static_cast<void *>(this));
+ pthread_attr_destroy(&thread_attr);
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+/**
+ * Method used to start the monitoring thread. The method shall return a
+ * string to the JavaScript side indicating whether or not the compass
+ * monitoring was initialised.
+ */
+string Compass::StartMonitoringNative()
+{
+ if (StartMonitoringThread())
+ {
+ return "Compass monitored";
+ }
+ else
+ {
+ return "Compass already being monitored";
+ }
+}
+
+/*
+ * Stops monitoring the compass.
+ * @pre - none
+ * @post - m_thread = 0
+ * @return - string - a message to describe the halting of the thread
+ */
+string Compass::StopMonitoringNative()
+{
+ if (m_thread)
+ {
+ // Abort current thread
+ pthread_abort(m_thread);
+ m_thread = 0;
+
+ return "Compass monitoring has stopped";
+ }
+ else
+ {
+ return "Compass isn't already being monitored";
+ }
+}
+
+/**
+ * Method used by the Compass thread to pass the compass leading
+ * on the JavaScript side by firing an event.
+ */
+void Compass::SendCompassInfo()
+{
+ string eventString = "CompassLeading " + convertFloatToString(readCompass());
+ NotifyEvent(eventString);
+}
+
+// Notifies JavaScript of an event
+void Compass::NotifyEvent(const string& event)
+{
+ string eventString = m_id + " ";
+ eventString.append(event);
+ SendPluginEvent(eventString.c_str(), m_pContext);
+}
+
+/**
+ * Utility function to convert a float into a string
+ */
+string Compass::convertFloatToString(float l)
+{
+ stringstream ss;
+ ss << l;
+ return ss.str();
+}
+
+
+
+
View
53 BB10/COMPASS/native_src/src/compass_js.hpp
@@ -0,0 +1,53 @@
+/*
+ * compass_js.hpp
+ *
+ * Created on: 2012-09-29
+ * Author: starpax
+ */
+
+#ifndef COMPASS_JS_HPP_
+#define COMPASS_JS_HPP_
+
+#include <string>
+#include <pthread.h>
+#include "../public/plugin.h"
+
+using std::string;
+
+class Compass: public JSExt
+{
+public:
+
+ explicit Compass(const string& id);
+ virtual ~Compass();
+
+ // Interfaces of JSNext
+ virtual bool CanDelete();
+ virtual string InvokeMethod(const string& command);
+
+ // Methods for the Monitoring thread
+ void SendCompassInfo();
+ void NotifyEvent(const string& event);
+
+ bool isDeviceCompatible();
+ float readCompass();
+
+private:
+
+ string convertFloatToString(float l);
+
+ // Compass Thread Monitoring Methods
+ string StartMonitoringNative();
+ string StopMonitoringNative();
+ bool StartMonitoringThread();
+
+ string m_id;
+
+ // member flag to check for compass availability
+ bool m_compassExists;
+
+ pthread_t m_thread;
+};
+
+
+#endif
View
38 BB10/COMPASS/output/community.compass/client.js
@@ -0,0 +1,38 @@
+/*
+* Copyright 2012 Research In Motion Limited.
+*
+* Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+var _self = {},
+ _ID = require("./manifest.json").namespace;
+
+_self.readCompass = function (cb)
+{
+ return window.webworks.execSync(_ID, "readCompassServer", null);
+};
+
+_self.stopMonitoringCompass = function (cb)
+{
+ return window.webworks.execSync(_ID, "stopMonitoringCompassServer", null);
+};
+
+
+_self.startMonitoringCompass = function (cb)
+{
+ window.webworks.event.add(_ID, "community.compass.compassEvent", cb);
+
+ return window.webworks.execSync(_ID, "startMonitoringCompassServer", null);
+};
+
+module.exports = _self;
View
BIN  BB10/COMPASS/output/community.compass/device/compassJnext.so
Binary file not shown
View
121 BB10/COMPASS/output/community.compass/index.js
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var compassJNext,
+ _event = require("../../lib/event");
+
+module.exports =
+{
+ startMonitoringCompassServer: function (success, fail, args, env)
+ {
+ try
+ {
+ success(compassJNext.startMonitoringCompassJNext());
+ }
+ catch (e)
+ {
+ fail(-1, e);
+ }
+ },
+
+ stopMonitoringCompassServer: function (success, fail, args, env)
+ {
+ try
+ {
+ success(compassJNext.stopMonitoringCompassJNext());
+ }
+ catch (e)
+ {
+ fail(-1, e);
+ }
+ },
+
+ readCompassServer: function (success, fail, args, env)
+ {
+ try
+ {
+ success(compassJNext.readCompassJNext());
+ }
+ catch (e)
+ {
+ fail(-1, e);
+ }
+ },
+};
+
+///////////////////////////////////////////////////////////////////
+// JavaScript wrapper for JNEXT plugin
+///////////////////////////////////////////////////////////////////
+
+JNEXT.CompassJNext = function ()
+{
+ var _self = this;
+
+ _self.startMonitoringCompassJNext = function ()
+ {
+ return JNEXT.invoke(_self._id, "startMonitoringNative");
+ };
+
+ _self.stopMonitoringCompassJNext = function ()
+ {
+ return JNEXT.invoke(_self._id, "stopMonitoringNative");
+ };
+
+ _self.readCompassJNext = function ()
+ {
+ return JNEXT.invoke(_self._id, "readCompassNative");
+ };
+
+ _self.getId = function ()
+ {
+ return _self._id;
+ };
+
+ _self.init = function ()
+ {
+ if (!JNEXT.require("compassJnext"))
+ {
+ return false;
+ }
+
+ _self._id = JNEXT.createObject("compassJnext.Compass");
+
+ if (!_self._id || _self._id === "")
+ {
+ return false;
+ }
+
+ JNEXT.registerEvents(_self);
+ };
+
+ _self.onEvent = function (strData)
+ {
+ var arData = strData.split(" "),
+ strEventId = arData[0],
+ arg = arData[1];
+
+ // Trigger the event handler of specific Push events
+ if (strEventId === "CompassLeading")
+ {
+ _event.trigger("community.compass.compassEvent", arg);
+ }
+ };
+
+ _self._id = "";
+
+ _self.init();
+};
+
+compassJNext = new JNEXT.CompassJNext();
View
5 BB10/COMPASS/output/community.compass/manifest.json
@@ -0,0 +1,5 @@
+{
+ "global": false,
+ "namespace": "community.compass",
+ "dependencies": []
+}
View
BIN  BB10/COMPASS/output/community.compass/simulator/compassJnext.so
Binary file not shown
View
525 BB10/COMPASS/project/compassJnext/.cproject
@@ -0,0 +1,525 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+ <storageModule moduleId="org.eclipse.cdt.core.settings">
+ <cconfiguration id="com.qnx.qcc.configuration.sharedLib.debug.125035711">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.sharedLib.debug.125035711" moduleId="org.eclipse.cdt.core.settings" name="Device-Debug">
+ <externalSettings>
+ <externalSetting>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/memoryJnext/public"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/memoryJnext"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/compassJnext"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/memoryJnext/Device-Debug"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/compassJnext/Device-Debug"/>
+ <entry flags="" kind="libraryFile" name="memoryJnext"/>
+ <entry flags="RESOLVED" kind="libraryFile" name="compassJnext"/>
+ </externalSetting>
+ </externalSettings>
+ <extensions>
+ <extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="so" artifactName="compassJnext" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib" description="" id="com.qnx.qcc.configuration.sharedLib.debug.125035711" name="Device-Debug" parent="com.qnx.qcc.configuration.sharedLib.debug" postbuildStep="mv compassJnext.so ../../../output/community.compass/device/; cp -r ../../../output/community.compass/* E:/UBC/CPSC448/RIM/Framework/ext/community.compass/" prebuildStep="cp -r ../../../javascript_src/* ../../../output/community.compass/; cp -r ../public/* ../../../native_src/public/; cp -r ../src/* ../../../native_src/src/; cp -r ../../../TestApplication/* C:/Users/starpax/RippleSites/TestApplication/">
+ <folderInfo id="com.qnx.qcc.configuration.sharedLib.debug.125035711." name="/" resourcePath="">
+ <toolChain id="com.qnx.qcc.toolChain.sharedLib.debug.353520242" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
+ <option id="com.qnx.qcc.option.cpu.491029821" name="Target CPU:" superClass="com.qnx.qcc.option.cpu" value="com.qnx.qcc.option.gen.cpu.armle-v7" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.1275584474" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
+ <builder buildPath="${workspace_loc:/memoryJnext/Device-Debug}" id="com.qnx.nto.1864301038" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
+ <tool id="com.qnx.qcc.tool.compiler.1327890545" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
+ <option id="com.qnx.qcc.option.compiler.shared.455049759" name="Shared (-shared)" superClass="com.qnx.qcc.option.compiler.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.optlevel.1934550955" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
+ <option id="com.qnx.qcc.option.compile.debug.341015609" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.includePath.160608157" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
+ <listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/public}"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
+ </option>
+ <option id="com.qnx.qcc.option.compiler.security.1159840403" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.defines.1406076333" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
+ </option>
+ <inputType id="com.qnx.qcc.inputType.compiler.1935973102" superClass="com.qnx.qcc.inputType.compiler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.assembler.1784665987" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
+ <option id="com.qnx.qcc.option.assembler.debug.265653256" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.assembler.1852973446" superClass="com.qnx.qcc.inputType.assembler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.linker.955898350" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
+ <option id="com.qnx.qcc.option.linker.debug.2145099088" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.shared.2069746516" name="Shared (-shared)" superClass="com.qnx.qcc.option.linker.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.langcpp.1150249018" name="C++ (-lang-c++)" superClass="com.qnx.qcc.option.linker.langcpp" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.libraryPaths.809098864" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
+ </option>
+ <option id="com.qnx.qcc.option.linker.security.910973133" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.linker.2123459601" superClass="com.qnx.qcc.inputType.linker">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ <outputType id="com.qnx.qcc.outputType.linker.sharedLib.123674749" outputPrefix="" superClass="com.qnx.qcc.outputType.linker.sharedLib"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.archiver.1727305086" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="public"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="com.qnx.qcc.configuration.sharedLib.release.202015619">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.sharedLib.release.202015619" moduleId="org.eclipse.cdt.core.settings" name="Device-Release">
+ <externalSettings>
+ <externalSetting>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/memoryJnext/public"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/compassJnext"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/memoryJnext/Device-Release"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/compassJnext/Device-Release"/>
+ <entry flags="" kind="libraryFile" name="memoryJnext"/>
+ <entry flags="RESOLVED" kind="libraryFile" name="compassJnext"/>
+ </externalSetting>
+ </externalSettings>
+ <extensions>
+ <extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="so" artifactName="compassJnext" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib" description="" id="com.qnx.qcc.configuration.sharedLib.release.202015619" name="Device-Release" parent="com.qnx.qcc.configuration.sharedLib.release" postbuildStep="mv compassJnext.so ../../../output/community.compass/device/; cp -r ../../../output/community.compass/* E:/UBC/CPSC448/RIM/Framework/ext/community.compass/" prebuildStep="cp -r ../../../javascript_src/* ../../../output/community.compass/; cp -r ../public/* ../../../native_src/public/; cp -r ../src/* ../../../native_src/src/; cp -r ../../../TestApplication/* C:/Users/starpax/RippleSites/TestApplication/">
+ <folderInfo id="com.qnx.qcc.configuration.sharedLib.release.202015619." name="/" resourcePath="">
+ <toolChain id="com.qnx.qcc.toolChain.sharedLib.release.441257790" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
+ <option id="com.qnx.qcc.option.cpu.695582029" name="Target CPU:" superClass="com.qnx.qcc.option.cpu" value="com.qnx.qcc.option.gen.cpu.armle-v7" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.1984878818" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
+ <builder buildPath="${workspace_loc:/memoryJnext/Device-Release}" id="com.qnx.nto.1755973016" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
+ <tool id="com.qnx.qcc.tool.compiler.1149643904" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
+ <option id="com.qnx.qcc.option.compiler.shared.117317922" name="Shared (-shared)" superClass="com.qnx.qcc.option.compiler.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.optlevel.810859033" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.2" valueType="enumerated"/>
+ <option id="com.qnx.qcc.option.compiler.includePath.1127228400" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
+ <listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/public}"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
+ </option>
+ <option id="com.qnx.qcc.option.compiler.security.1581182630" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.defines.305871840" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
+ </option>
+ <option id="com.qnx.qcc.option.compiler.qccoptions.1307581909" name="QCC Options" superClass="com.qnx.qcc.option.compiler.qccoptions" valueType="stringList">
+ <listOptionValue builtIn="false" value="-frecord-gcc-switches"/>
+ </option>
+ <inputType id="com.qnx.qcc.inputType.compiler.1652586544" superClass="com.qnx.qcc.inputType.compiler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.assembler.1230240106" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
+ <inputType id="com.qnx.qcc.inputType.assembler.967995327" superClass="com.qnx.qcc.inputType.assembler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.linker.841954742" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
+ <option id="com.qnx.qcc.option.linker.shared.1119901783" name="Shared (-shared)" superClass="com.qnx.qcc.option.linker.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.langcpp.322659806" name="C++ (-lang-c++)" superClass="com.qnx.qcc.option.linker.langcpp" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.libraryPaths.1727154652" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
+ </option>
+ <option id="com.qnx.qcc.option.linker.security.1656434097" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.linker.1514995513" superClass="com.qnx.qcc.inputType.linker">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ <outputType id="com.qnx.qcc.outputType.linker.sharedLib.1425432197" outputPrefix="" superClass="com.qnx.qcc.outputType.linker.sharedLib"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.archiver.1719660809" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="public"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="com.qnx.qcc.configuration.sharedLib.profile.1614208761">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.sharedLib.profile.1614208761" moduleId="org.eclipse.cdt.core.settings" name="Device-Profile">
+ <externalSettings>
+ <externalSetting>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/memoryJnext/public"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/memoryJnext/Device-Profile"/>
+ <entry flags="" kind="libraryFile" name="memoryJnext"/>
+ </externalSetting>
+ </externalSettings>
+ <extensions>
+ <extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="so" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildType=com.qnx.buildType.profile,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib" description="Build for Profiling" id="com.qnx.qcc.configuration.sharedLib.profile.1614208761" name="Device-Profile" parent="com.qnx.qcc.configuration.sharedLib.profile">
+ <folderInfo id="com.qnx.qcc.configuration.sharedLib.profile.1614208761." name="/" resourcePath="">
+ <toolChain id="com.qnx.qcc.toolChain.sharedLib.profile.961058618" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
+ <option id="com.qnx.qcc.option.cpu.3440724" name="Target CPU:" superClass="com.qnx.qcc.option.cpu" value="com.qnx.qcc.option.gen.cpu.armle-v7" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.418399923" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
+ <builder buildPath="${workspace_loc:/memoryJnext/Device-Profile}" id="com.qnx.nto.245705047" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
+ <tool id="com.qnx.qcc.tool.compiler.1437491560" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
+ <option id="com.qnx.qcc.option.compiler.shared.2087356629" name="Shared (-shared)" superClass="com.qnx.qcc.option.compiler.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.optlevel.89489568" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
+ <option id="com.qnx.qcc.option.compile.debug.1817310045" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.profile2.1379193389" name="Build for Profiling (Function Instrumentation) (-finstrument-functions)" superClass="com.qnx.qcc.option.compiler.profile2" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.includePath.491638834" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
+ <listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/public}"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
+ </option>
+ <option id="com.qnx.qcc.option.compiler.security.5206437" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.defines.1418722160" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
+ </option>
+ <inputType id="com.qnx.qcc.inputType.compiler.1563207767" superClass="com.qnx.qcc.inputType.compiler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.assembler.661728997" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
+ <option id="com.qnx.qcc.option.assembler.debug.1847430122" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.assembler.1168865001" superClass="com.qnx.qcc.inputType.assembler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.linker.1468584822" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
+ <option id="com.qnx.qcc.option.linker.debug.1963242566" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.profile2.2117370607" name="Build for Profiling (Function Instrumentation) (-lprofiling)" superClass="com.qnx.qcc.option.linker.profile2" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.shared.566192174" name="Shared (-shared)" superClass="com.qnx.qcc.option.linker.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.langcpp.352793962" name="C++ (-lang-c++)" superClass="com.qnx.qcc.option.linker.langcpp" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.libraryPaths.340423170" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
+ </option>
+ <option id="com.qnx.qcc.option.linker.security.974753716" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.linker.1108879179" superClass="com.qnx.qcc.inputType.linker">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="com.qnx.qcc.tool.archiver.1713815467" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="public"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="com.qnx.qcc.configuration.sharedLib.coverage.658200853">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.sharedLib.coverage.658200853" moduleId="org.eclipse.cdt.core.settings" name="Device-Coverage">
+ <externalSettings>
+ <externalSetting>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/memoryJnext/public"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/memoryJnext/Device-Coverage"/>
+ <entry flags="" kind="libraryFile" name="memoryJnext"/>
+ </externalSetting>
+ </externalSettings>
+ <extensions>
+ <extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="so" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildType=com.qnx.buildType.coverage,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib" description="Build with Code Coverage" id="com.qnx.qcc.configuration.sharedLib.coverage.658200853" name="Device-Coverage" parent="com.qnx.qcc.configuration.sharedLib.coverage">
+ <folderInfo id="com.qnx.qcc.configuration.sharedLib.coverage.658200853." name="/" resourcePath="">
+ <toolChain id="com.qnx.qcc.toolChain.sharedLib.coverage.1428616410" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
+ <option id="com.qnx.qcc.option.cpu.1985897665" name="Target CPU:" superClass="com.qnx.qcc.option.cpu" value="com.qnx.qcc.option.gen.cpu.armle-v7" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.1710685464" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
+ <builder buildPath="${workspace_loc:/memoryJnext/Device-Coverage}" id="com.qnx.nto.2073331078" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
+ <tool id="com.qnx.qcc.tool.compiler.1174394044" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
+ <option id="com.qnx.qcc.option.compiler.shared.783197862" name="Shared (-shared)" superClass="com.qnx.qcc.option.compiler.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.optlevel.321390943" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
+ <option id="com.qnx.qcc.option.compile.debug.610606219" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.coverage.1546014619" name="Build for Code Coverage (-Wc,-ftest-coverage -Wc,-fprofile-arcs)" superClass="com.qnx.qcc.option.compiler.coverage" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.includePath.1993124147" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
+ <listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/public}"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
+ </option>
+ <option id="com.qnx.qcc.option.compiler.security.593963329" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.defines.2143258986" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
+ </option>
+ <inputType id="com.qnx.qcc.inputType.compiler.1591482619" superClass="com.qnx.qcc.inputType.compiler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.assembler.1019446592" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
+ <option id="com.qnx.qcc.option.assembler.debug.2084335877" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.assembler.1854621246" superClass="com.qnx.qcc.inputType.assembler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.linker.1484840880" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
+ <option id="com.qnx.qcc.option.linker.debug.488461239" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.coverage.1630307765" name="Build for Code Coverage (-ftest-coverage -fprofile-arcs)" superClass="com.qnx.qcc.option.linker.coverage" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.shared.973891241" name="Shared (-shared)" superClass="com.qnx.qcc.option.linker.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.langcpp.853027828" name="C++ (-lang-c++)" superClass="com.qnx.qcc.option.linker.langcpp" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.libraryPaths.2037789194" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
+ </option>
+ <option id="com.qnx.qcc.option.linker.security.1906786075" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.linker.371753046" superClass="com.qnx.qcc.inputType.linker">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="com.qnx.qcc.tool.archiver.491839287" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="public"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="com.qnx.qcc.configuration.sharedLib.debug.1686388255">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.sharedLib.debug.1686388255" moduleId="org.eclipse.cdt.core.settings" name="Simulator-Debug">
+ <externalSettings>
+ <externalSetting>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/memoryJnext/public"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/memoryJnext"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/compassJnext"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/memoryJnext/Simulator-Debug"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/compassJnext/Simulator-Debug"/>
+ <entry flags="" kind="libraryFile" name="memoryJnext"/>
+ <entry flags="RESOLVED" kind="libraryFile" name="compassJnext"/>
+ </externalSetting>
+ </externalSettings>
+ <extensions>
+ <extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="so" artifactName="compassJnext" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib" description="" id="com.qnx.qcc.configuration.sharedLib.debug.1686388255" name="Simulator-Debug" parent="com.qnx.qcc.configuration.sharedLib.debug" postbuildStep="mv compassJnext.so ../../../output/community.compass/simulator/; cp -r ../../../output/community.compass/* E:/UBC/CPSC448/RIM/Framework/ext/community.compass/" prebuildStep="cp -r ../../../javascript_src/* ../../../output/community.compass/; cp -r ../public/* ../../../native_src/public/; cp -r ../src/* ../../../native_src/src/">
+ <folderInfo id="com.qnx.qcc.configuration.sharedLib.debug.1686388255." name="/" resourcePath="">
+ <toolChain id="com.qnx.qcc.toolChain.sharedLib.debug.171281672" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
+ <targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.355276991" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
+ <builder buildPath="${workspace_loc:/memoryJnext/Simulator-Debug}" id="com.qnx.nto.314884623" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
+ <tool id="com.qnx.qcc.tool.compiler.749421311" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
+ <option id="com.qnx.qcc.option.compiler.shared.1948280058" name="Shared (-shared)" superClass="com.qnx.qcc.option.compiler.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.optlevel.956699579" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
+ <option id="com.qnx.qcc.option.compile.debug.767259141" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.includePath.1338009094" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
+ <listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/public}"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
+ </option>
+ <option id="com.qnx.qcc.option.compiler.security.1936896901" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.defines.416951630" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
+ </option>
+ <inputType id="com.qnx.qcc.inputType.compiler.1591461996" superClass="com.qnx.qcc.inputType.compiler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.assembler.802075220" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
+ <option id="com.qnx.qcc.option.assembler.debug.152571405" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.assembler.866177880" superClass="com.qnx.qcc.inputType.assembler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.linker.1433158553" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
+ <option id="com.qnx.qcc.option.linker.debug.1568426676" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.shared.1597061245" name="Shared (-shared)" superClass="com.qnx.qcc.option.linker.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.langcpp.725701434" name="C++ (-lang-c++)" superClass="com.qnx.qcc.option.linker.langcpp" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.libraryPaths.1037355355" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
+ </option>
+ <option id="com.qnx.qcc.option.linker.security.1964097131" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.linker.1258218331" superClass="com.qnx.qcc.inputType.linker">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ <outputType id="com.qnx.qcc.outputType.linker.sharedLib.678234262" outputPrefix="" superClass="com.qnx.qcc.outputType.linker.sharedLib"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.archiver.730535209" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="public"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="com.qnx.qcc.configuration.sharedLib.profile.577203162">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.sharedLib.profile.577203162" moduleId="org.eclipse.cdt.core.settings" name="Simulator-Profile">
+ <externalSettings>
+ <externalSetting>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/memoryJnext/public"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/memoryJnext/Simulator-Profile"/>
+ <entry flags="" kind="libraryFile" name="memoryJnext"/>
+ </externalSetting>
+ </externalSettings>
+ <extensions>
+ <extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="so" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildType=com.qnx.buildType.profile,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib" description="Build for Profiling" id="com.qnx.qcc.configuration.sharedLib.profile.577203162" name="Simulator-Profile" parent="com.qnx.qcc.configuration.sharedLib.profile">
+ <folderInfo id="com.qnx.qcc.configuration.sharedLib.profile.577203162." name="/" resourcePath="">
+ <toolChain id="com.qnx.qcc.toolChain.sharedLib.profile.1449318257" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
+ <targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.2060032972" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
+ <builder buildPath="${workspace_loc:/memoryJnext/Simulator-Profile}" id="com.qnx.nto.1335395873" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
+ <tool id="com.qnx.qcc.tool.compiler.793423723" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
+ <option id="com.qnx.qcc.option.compiler.shared.962303380" name="Shared (-shared)" superClass="com.qnx.qcc.option.compiler.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.optlevel.1236315777" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
+ <option id="com.qnx.qcc.option.compile.debug.1499287522" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.profile2.1870282455" name="Build for Profiling (Function Instrumentation) (-finstrument-functions)" superClass="com.qnx.qcc.option.compiler.profile2" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.includePath.927124502" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
+ <listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/public}"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
+ </option>
+ <option id="com.qnx.qcc.option.compiler.security.133729898" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.defines.1697734031" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
+ </option>
+ <inputType id="com.qnx.qcc.inputType.compiler.1667556058" superClass="com.qnx.qcc.inputType.compiler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.assembler.541147178" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
+ <option id="com.qnx.qcc.option.assembler.debug.1849293168" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.assembler.895768544" superClass="com.qnx.qcc.inputType.assembler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.linker.2045933329" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
+ <option id="com.qnx.qcc.option.linker.debug.794487167" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.profile2.379173578" name="Build for Profiling (Function Instrumentation) (-lprofiling)" superClass="com.qnx.qcc.option.linker.profile2" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.shared.1189927162" name="Shared (-shared)" superClass="com.qnx.qcc.option.linker.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.langcpp.1686324064" name="C++ (-lang-c++)" superClass="com.qnx.qcc.option.linker.langcpp" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.libraryPaths.934656800" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
+ </option>
+ <option id="com.qnx.qcc.option.linker.security.909082804" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.linker.1854065201" superClass="com.qnx.qcc.inputType.linker">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="com.qnx.qcc.tool.archiver.1510783071" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="public"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="com.qnx.qcc.configuration.sharedLib.coverage.2037488127">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.configuration.sharedLib.coverage.2037488127" moduleId="org.eclipse.cdt.core.settings" name="Simulator-Coverage">
+ <externalSettings>
+ <externalSetting>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/memoryJnext/public"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/memoryJnext/Simulator-Coverage"/>
+ <entry flags="" kind="libraryFile" name="memoryJnext"/>
+ </externalSetting>
+ </externalSettings>
+ <extensions>
+ <extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="com.qnx.tools.ide.qde.core.QDELinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="so" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildType=com.qnx.buildType.coverage,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib" description="Build with Code Coverage" id="com.qnx.qcc.configuration.sharedLib.coverage.2037488127" name="Simulator-Coverage" parent="com.qnx.qcc.configuration.sharedLib.coverage">
+ <folderInfo id="com.qnx.qcc.configuration.sharedLib.coverage.2037488127." name="/" resourcePath="">
+ <toolChain id="com.qnx.qcc.toolChain.sharedLib.coverage.1467354384" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
+ <targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.1781419128" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
+ <builder buildPath="${workspace_loc:/memoryJnext/Simulator-Coverage}" id="com.qnx.nto.1902648464" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="com.qnx.nto"/>
+ <tool id="com.qnx.qcc.tool.compiler.336038301" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
+ <option id="com.qnx.qcc.option.compiler.shared.1561939248" name="Shared (-shared)" superClass="com.qnx.qcc.option.compiler.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.optlevel.1596778797" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
+ <option id="com.qnx.qcc.option.compile.debug.1380074635" name="Debug (-g)" superClass="com.qnx.qcc.option.compile.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.coverage.1685801289" name="Build for Code Coverage (-Wc,-ftest-coverage -Wc,-fprofile-arcs)" superClass="com.qnx.qcc.option.compiler.coverage" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.includePath.1260471937" name="Include Directories (-I)" superClass="com.qnx.qcc.option.compiler.includePath" valueType="includePath">
+ <listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/public}"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/usr/include/freetype2"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/usr/include"/>
+ </option>
+ <option id="com.qnx.qcc.option.compiler.security.1256316884" name="Enhanced Security (-fstack-protector-all)" superClass="com.qnx.qcc.option.compiler.security" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.compiler.defines.1874431730" name="Defines (-D)" superClass="com.qnx.qcc.option.compiler.defines" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_FORTIFY_SOURCE=2"/>
+ </option>
+ <inputType id="com.qnx.qcc.inputType.compiler.162395236" superClass="com.qnx.qcc.inputType.compiler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.assembler.1062678331" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
+ <option id="com.qnx.qcc.option.assembler.debug.1849848683" name="Debug (-g)" superClass="com.qnx.qcc.option.assembler.debug" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.assembler.225128870" superClass="com.qnx.qcc.inputType.assembler"/>
+ </tool>
+ <tool id="com.qnx.qcc.tool.linker.663399821" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
+ <option id="com.qnx.qcc.option.linker.debug.1832530384" name="Debug (-g)" superClass="com.qnx.qcc.option.linker.debug" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.coverage.1707942318" name="Build for Code Coverage (-ftest-coverage -fprofile-arcs)" superClass="com.qnx.qcc.option.linker.coverage" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.shared.1882052002" name="Shared (-shared)" superClass="com.qnx.qcc.option.linker.shared" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.langcpp.329188492" name="C++ (-lang-c++)" superClass="com.qnx.qcc.option.linker.langcpp" value="true" valueType="boolean"/>
+ <option id="com.qnx.qcc.option.linker.libraryPaths.333389657" name="Library Paths (-L)" superClass="com.qnx.qcc.option.linker.libraryPaths" valueType="libPaths">
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/lib"/>
+ <listOptionValue builtIn="false" value="${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib"/>
+ </option>
+ <option id="com.qnx.qcc.option.linker.security.1526470150" name="Enhanced Security (-Wl,-z,relro -Wl,-z,now)" superClass="com.qnx.qcc.option.linker.security" value="true" valueType="boolean"/>
+ <inputType id="com.qnx.qcc.inputType.linker.575580154" superClass="com.qnx.qcc.inputType.linker">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="com.qnx.qcc.tool.archiver.855829307" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="public"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <project id="memoryJnext.null.433618383" name="memoryJnext"/>
+ </storageModule>
+ <storageModule moduleId="refreshScope" versionNumber="1">
+ <resource resourceType="PROJECT" workspacePath="/memoryJnext"/>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
+ <scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.sharedLib.profile.577203162">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.sharedLib.debug.125035711">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.sharedLib.debug.1686388255">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.sharedLib.coverage.2037488127">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.sharedLib.release.202015619">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.sharedLib.coverage.658200853">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.sharedLib.profile.1614208761">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
+ </scannerConfigBuildInfo>
+ </storageModule>
+</cproject>