remove QCOM-isms -- memscpy, memsmove; clean up documentation; at least one basic test; put into XCode project
diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..a05a102
--- /dev/null
+++ b/.DS_Store
Binary files differ
diff --git a/basic_test.c b/basic_test.c
new file mode 100644
index 0000000..b9baa88
--- /dev/null
+++ b/basic_test.c
@@ -0,0 +1,9 @@
+//
+//  basic_test.c
+//  QCBOR
+//
+//  Created by Laurence Lundblade on 9/13/18.
+//  Copyright © 2018 Laurence Lundblade. All rights reserved.
+//
+
+#include "basic_test.h"
diff --git a/basic_test.h b/basic_test.h
new file mode 100644
index 0000000..da9a3c6
--- /dev/null
+++ b/basic_test.h
@@ -0,0 +1,14 @@
+//
+//  basic_test.h
+//  QCBOR
+//
+//  Created by Laurence Lundblade on 9/13/18.
+//  Copyright © 2018 Laurence Lundblade. All rights reserved.
+//
+
+#ifndef basic_test_h
+#define basic_test_h
+
+#include <stdio.h>
+
+#endif /* basic_test_h */
diff --git a/cmd_line_main.c b/cmd_line_main.c
new file mode 100644
index 0000000..54adb50
--- /dev/null
+++ b/cmd_line_main.c
@@ -0,0 +1,19 @@
+//
+//  main.c
+//  QCBOR
+//
+//  Created by Laurence Lundblade on 9/13/18.
+//  Copyright © 2018 Laurence Lundblade. All rights reserved.
+//
+
+#include <stdio.h>
+
+#include "basic_test.h"
+
+int main(int argc, const char * argv[]) {
+    // insert code here...
+    printf("Hello, World! %d\n", basic_test_one());
+    
+    
+    return 0;
+}
diff --git a/inc/UsefulBuf.h b/inc/UsefulBuf.h
index aed6644..b78d0c7 100644
--- a/inc/UsefulBuf.h
+++ b/inc/UsefulBuf.h
@@ -55,8 +55,8 @@
 #define _UsefulBuf_h
 
 
-#include <stdint.h>
-#include <string.h>
+#include <stdint.h> // for uint8_t, uint16_t....
+#include <string.h> // for strlen, memcpy, memmove, memset
 #include <stddef.h> // for size_t
 
 /**
@@ -130,13 +130,13 @@
  
 */
 
-typedef struct __UsefulBuf {
+typedef struct {
    void  *ptr;
    size_t len;
 } UsefulBuf;
 
 
-typedef struct __UsefulBufC {
+typedef struct {
    const void *ptr;
    size_t      len;
 } UsefulBufC;
@@ -157,12 +157,6 @@
    return (UsefulBufC){UB.ptr, UB.len};
 }
 
-// Old form. Should be deprecated.
-static inline UsefulBufC UsefulBufConst(const UsefulBuf UB)
-{
-   return (UsefulBufC){UB.ptr, UB.len};
-}
-
 
 /**
  @brief Convert a const UsefulBufC to a non-const UsefulBuf
@@ -261,8 +255,9 @@
 /**
  @brief Copy a pointer into a UsefulBuf
  
- @param[in] pDest The destination buffer to copy into
- @param[out] Src  The source to copy from
+ @param[in,out] pDest The destination buffer to copy into
+ @param[in] ptr  The source to copy from
+ @param[in] len  Length of the source; amoutn to copy
  
  @return 0 on success, 1 on failure
  
@@ -418,7 +413,7 @@
  can go on the stack or be a C99 function parameter.
  */
 
-typedef struct __UsefulOutBuf {
+typedef struct {
    UsefulBuf  UB;
    size_t     size;  // size of the buffer (not the valid data in the buffer)
    uint16_t   magic; // Used to detect corruption and lack of initialization
@@ -429,11 +424,9 @@
 /**
  @brief Initialize and supply the actual output buffer
  
- @param[out] pOutBuf The UsefulOutBuf to initialize
+ @param[out] me The UsefulOutBuf to initialize
  @param[in] pStorage Pointer to data buffer to use
- @param[in] nStorageSize Size of buffer pStorage
- 
- @return None
+ @param[in] uStorageSize Size of buffer pStorage
  
  Intializes the UsefulOutBuf with storage. Sets the current position
  to the beginning of the buffer clears the error.
@@ -516,8 +509,6 @@
  @param[in] NewData UsefulBuf with the bytes to insert
  @param[in] uPos Index in output buffer at which to insert
  
- @return None
- 
  NewData is the pointer and length for the bytes to be added to the
  output buffer. There must be room in the output buffer for all of
  NewData or an error will occur.
@@ -552,8 +543,6 @@
  @param[in] pBytes Pointer to the bytes to insert
  @param[in] uLen Length of the bytes to insert
  @param[in] uPos Index in output buffer at which to insert
-
- @return None
  
  See UsefulOutBuf_InsertUsefulBuf() for details. This is the same with
  the difference being a pointer and length is passed in rather than an
@@ -574,7 +563,6 @@
  @param[in] me Pointer to the UsefulOutBuf
  @param[in] szString string to append
  
- @return None
  */
 static inline void UsefulOutBuf_InsertString(UsefulOutBuf *me, const char *szString, size_t uPos)
 {
@@ -586,10 +574,8 @@
  @brief Insert a byte into the UsefulOutBuf
  
  @param[in] me Pointer to the UsefulOutBul
- @param[in] pByte Bytes to insert
- @param[in] nPos Index in output buffer at which to insert
- 
- @return None
+ @param[in] byte Bytes to insert
+ @param[in] uPos Index in output buffer at which to insert
  
  See UsefulOutBuf_InsertUsefulBuf() for details. This is the same with
  the difference being a single byte is to be inserted.
@@ -605,9 +591,7 @@
  
  @param[in] me Pointer to the UsefulOutBul
  @param[in] uInteger16 Integer to insert
- @param[in] nPos Index in output buffer at which to insert
- 
- @return None
+ @param[in] uPos Index in output buffer at which to insert
  
  See UsefulOutBuf_InsertUsefulBuf() for details. This is the same with
  the difference being a single byte is to be inserted.
@@ -629,9 +613,7 @@
  
  @param[in] me Pointer to the UsefulOutBul
  @param[in] uInteger32 Integer to insert
- @param[in] nPos Index in output buffer at which to insert
- 
- @return None
+ @param[in] uPos Index in output buffer at which to insert
  
  See UsefulOutBuf_InsertUsefulBuf() for details. This is the same with
  the difference being a single byte is to be inserted.
@@ -655,9 +637,7 @@
  
  @param[in] me Pointer to the UsefulOutBul
  @param[in] uInteger64 Integer to insert
- @param[in] nPos Index in output buffer at which to insert
- 
- @return None
+ @param[in] uPos Index in output buffer at which to insert
  
  See UsefulOutBuf_InsertUsefulBuf() for details. This is the same with
  the difference being a single byte is to be inserted.
@@ -685,9 +665,7 @@
  
  @param[in] me Pointer to the UsefulOutBul
  @param[in] f Integer to insert
- @param[in] nPos Index in output buffer at which to insert
- 
- @return None
+ @param[in] uPos Index in output buffer at which to insert
  
  See UsefulOutBuf_InsertUsefulBuf() for details. This is the same with
  the difference being a single byte is to be inserted.
@@ -707,9 +685,7 @@
  
  @param[in] me Pointer to the UsefulOutBul
  @param[in] d Integer to insert
- @param[in] nPos Index in output buffer at which to insert
- 
- @return None
+ @param[in] uPos Index in output buffer at which to insert
  
  See UsefulOutBuf_InsertUsefulBuf() for details. This is the same with
  the difference being a single byte is to be inserted.
@@ -730,8 +706,6 @@
  @param[in] me Pointer to the UsefulOutBuf
  @param[in] NewData UsefulBuf with the bytes to append
  
- @return None
- 
  See UsefulOutBuf_InsertUsefulBuf() for details. This does the same
  with the insertion point at the end of the valid data.
  
@@ -748,9 +722,7 @@
  
  @param[in] me Pointer to the UsefulOutBuf
  @param[in] pBytes Pointer to bytes to append
- @param[in] nLen Index in output buffer at which to append
- 
- @return None
+ @param[in] uLen Index in output buffer at which to append
  
  See UsefulOutBuf_InsertUsefulBuf() for details. This does the same
  with the insertion point at the end of the valid data.
@@ -769,7 +741,6 @@
  @param[in] me Pointer to the UsefulOutBuf
  @param[in] szString string to append
  
- @return None
  */
 static inline void UsefulOutBuf_AppendString(UsefulOutBuf *me, const char *szString)
 {
@@ -1001,7 +972,7 @@
 
 #define UIB_MAGIC (0xB00F)
 
-typedef struct __UsefulInputBuf {
+typedef struct {
    UsefulBufC UB;
    size_t     cursor;
    uint16_t   magic;
@@ -1044,9 +1015,7 @@
  Sets current position in input buffer
  
  @param[in] me Pointer to the UsefulInputBuf.
- @param[in] nPos  Position to set to
- 
- @return None.
+ @param[in] uPos  Position to set to
  
  If the position is off the end of the input buffer, the error state
  is entered and all functions will do nothing.
diff --git a/inc/qcbor.h b/inc/qcbor.h
index 130d05a..cf34844 100644
--- a/inc/qcbor.h
+++ b/inc/qcbor.h
@@ -722,7 +722,7 @@
  */
 static inline EncodedCBORC EncodedCBORConst(const EncodedCBOR ECBOR)
 {
-   return (EncodedCBORC){UsefulBufConst(ECBOR.Bytes), ECBOR.uItems};
+   return (EncodedCBORC){UsefulBuf_Const(ECBOR.Bytes), ECBOR.uItems};
 }
 
 
@@ -744,9 +744,6 @@
  @param[out]     pBuf    The buffer into which this encoded result will be placed.
  @param[in]      uBufLen The length of pBuf.
  
- @return
- None.
- 
  Call this once at the start of an encoding of a CBOR structure. Then
  call the various QCBOREncode_AddXXX() functions to add the data
  items. Then call QCBOREncode_Finish().
@@ -782,10 +779,7 @@
  @param[in] szLabel   The string map label for this integer value.
  @param[in] nLabel    The integer map label for this integer value.
  @param[in] uTag      A CBOR type 6 tag
- @param[in] uNum      The integer to add.
- 
- @return
- None.
+ @param[in] nNum      The integer to add.
  
  The functions and macros with a "U" add unsigned integers and those
  without add signed. The main reason to use the unsigned versions is
@@ -854,10 +848,7 @@
  @param[in] szLabel   The string map label for this integer value.
  @param[in] nLabel    The integer map label for this integer value.
  @param[in] uTag      A CBOR type 6 tag
- @param[in] Num       The float to add.
- 
- @return
- None.
+ @param[in] fNum       The float to add.
  
  This works the same as QCBOREncode_AddInt64_3() except it is for floats and doubles.
  
@@ -894,9 +885,6 @@
  @param[in] nLabel   The integer map label for this integer value.
  @param[in] date     Number of seconds since 1970-01-01T00:00Z in UTC time.
  
- @return
- None.
- 
  As per RFC 7049 this is similar to UNIX/Linux/POSIX dates. This is
  the most compact way to specify a date and time in CBOR. Note that this
  is always UTC and does not include the time zone.  Use
@@ -943,12 +931,9 @@
  @param[in] pCtx      The context to initialize.
  @param[in] szLabel   The string map label for this integer value.
  @param[in] nLabel    The integer map label for this integer value.
- @param[in[ uTag      Optional CBOR data tag or CBOR_TAG_NONE.
+ @param[in] uTag      Optional CBOR data tag or CBOR_TAG_NONE.
  @param[in] Bytes     Pointer and length of the input data.
  
- @return
- None.
- 
  Simply adds the bytes to the encoded output and CBOR major type 2.
  
  If called with Bytes.len equal to 0, an empty string will be
@@ -1006,12 +991,9 @@
  @param[in] pCtx     The context to initialize.
  @param[in] szLabel  The string map label for this integer value.
  @param[in] nLabel   The integer map label for this integer value.
- @param[in[ uTag     Optional CBOR data tag or CBOR_TAG_NONE.
+ @param[in] uTag     Optional CBOR data tag or CBOR_TAG_NONE.
  @param[in] Bytes    Pointer and length of text to add.
  
- @return
- None
- 
  The text passed in must be unencoded UTF-8 according to RFC
  3629. There is no NULL termination.
  
@@ -1143,9 +1125,6 @@
  @param[in] nLabel    The integer map label for this integer value.
  @param[in] uTag      Optional CBOR data tag or CBOR_TAG_NONE.
  @param[in] uSimple   One of CBOR_SIMPLEV_FALSE through _UNDEF
- 
- @return
- None.
 
  CBOR defines encoding for special values "true", "false", "null" and "undef". This
  function can add these values.
@@ -1172,10 +1151,7 @@
  @param[in] szLabel   A string label for the bytes to add. NULL if no label.
  @param[in] nLabel    The integer map label for this integer value.
  @param[in] uTag      Optional CBOR data tag or CBOR_TAG_NONE.
- @param[in] bool      true or false from stdbool. Anything will result in an error.
- 
- @return
- None.
+ @param[in] b      true or false from stdbool. Anything will result in an error.
  
  Error handling is the same as QCBOREncode_AddInt64_3().
  */
@@ -1207,9 +1183,6 @@
  @param[in] uTag A tag for the whole map or CBOR_TAG_NONE.
  @param[in] bBstrWrap Indicates entire map should be wrapped as a binary string. Normally 0.
  
- @return
- None.
- 
  Arrays are the basic CBOR aggregate or structure type. Call this
  function to start or open an array. The call the various AddXXX
  functions to add the items that go into the array. Then call
@@ -1269,9 +1242,6 @@
  @param[in] uTag A tag for the whole map or CBOR_TAG_NONE.
  @param[in] bBstrWrap Indicates entire map should be wrapped as a binary string. Normally 0.
  
- @return
- None.
- 
  See QCBOREncode_OpenArray() for more information.
  
  When adding items to maps, they must be added in pairs, the label and
@@ -1309,9 +1279,6 @@
  
  @param[in] pCtx The context to add to.
  
- @return
- None.
- 
  This reduces the nesting level by one.
  
  If more Close's have been called than Open's the error state is
@@ -1330,12 +1297,7 @@
  Add some already-encoded CBOR bytes
  
  @param[in] pCtx The context to add to.
- @param[in] pEncodedCBOR The already-encoded CBOR to add to the context.
- @param[in] nEncodedLength The length of pEncodedCBOR.
- @param[in] nItems The number of items in the encoded CBOR.
- 
- @return
- None.
+ @param[in] Encoded The already-encoded CBOR to add to the context.
  
  The CBOR added here must be self-consistent and not have any arrays
  or maps open. Specifically, if an array or map with N encoded items is
@@ -1368,12 +1330,9 @@
  @param[in] pCtx      The encoding context to add the simple value to.
  @param[in] szLabel   A string label for the bytes to add. NULL if no label.
  @param[in] nLabel    The integer map tag / label for this integer value.
- @param[in[ uTag      Optional CBOR data tag or CBOR_TAG_NONE.
+ @param[in] uTag      Optional CBOR data tag or CBOR_TAG_NONE.
  @param[in] uSimple   One of CBOR_SIMPLEV_xxx.
  
- @return
- None.
- 
  There should be no need to use this function directly unless some
  extensions to the CBOR standard are created and put to use.  All the defined
  simple types are available via the macros for false...null
@@ -1473,9 +1432,6 @@
  @param[in] EncodedCBOR The buffer with CBOR encoded bytes to be decoded.
  @param[in] nMode One of QCBOR_DECODE_MODE_xxx
  
- @return
- None.
- 
  Initialize context for a pre-order traveral of the encoded CBOR tree.
  
  Three decoding modes are supported.  In normal mode, maps are decoded
@@ -1606,8 +1562,8 @@
 /**
   Convert int64_t to smaller int's safely
  
- @param src[in]    An int64_t
- @param dest[out]  A smaller sized int to convert to
+ @param [in]  src    An int64_t
+ @param [out] dest   A smaller sized int to convert to
   
  @return 0 on success -1 if not
  
diff --git a/src/UsefulBuf.c b/src/UsefulBuf.c
index 7fc5e12..a0cc9b6 100644
--- a/src/UsefulBuf.c
+++ b/src/UsefulBuf.c
@@ -50,9 +50,7 @@
  
  =====================================================================================*/
 
-#include <string.h>
 #include "UsefulBuf.h"
-#include <stringl.h>
 
 #define USEFUL_OUT_BUF_MAGIC  (0x0B0F) // used to catch use of uninitialized or corrupted UOBs
 
@@ -64,7 +62,7 @@
    if(Src.len > pDest->len)
       return 1;
    
-   memscpy(pDest->ptr, pDest->len, Src.ptr, Src.len);
+   memcpy(pDest->ptr, Src.ptr, Src.len);
    
    pDest->len = Src.len;
    
@@ -228,14 +226,14 @@
    size_t   uRoomInDestination  = me->size - (uInsertionPos + NewData.len); // PtrMath #4
    
    if(uNumBytesToMove && me->UB.ptr) {
-      memsmove(pDestinationOfMove, uRoomInDestination, pSourceOfMove, uNumBytesToMove);
+      memmove(pDestinationOfMove, pSourceOfMove, uNumBytesToMove);
    }
    
    /* 4. Put the new data in */
    uint8_t *pInsertionPoint = ((uint8_t *)me->UB.ptr) + uInsertionPos; // PtrMath #5
    uRoomInDestination       = me->size - uInsertionPos; // PtrMath #6
    if(me->UB.ptr) {
-      memsmove(pInsertionPoint, uRoomInDestination, NewData.ptr, NewData.len);
+      memmove(pInsertionPoint, NewData.ptr, NewData.len);
    }
    me->UB.len += NewData.len ;
 }
@@ -307,7 +305,7 @@
       return 1; // buffer was too small
    }
    
-   memsmove(pBuf, uBufSize, B.ptr, B.len);
+   memmove(pBuf, B.ptr, B.len);
 
    *puCopied = me->UB.len;
    
diff --git a/src/qcbor_decode.c b/src/qcbor_decode.c
index b412205..90d3bf3 100644
--- a/src/qcbor_decode.c
+++ b/src/qcbor_decode.c
@@ -50,11 +50,6 @@
 
 #include "qcbor.h"
 
-#include <stdint.h>
-
-#ifdef QSEE
-#include "stringl.h"
-#endif
 
 
 /*
diff --git a/src/qcbor_encode.c b/src/qcbor_encode.c
index 7b53ac1..14e13e8 100644
--- a/src/qcbor_encode.c
+++ b/src/qcbor_encode.c
@@ -50,11 +50,7 @@
  =====================================================================================*/
 
 #include "qcbor.h"
-#include <stdint.h>
 
-#ifdef QSEE
-#include "stringl.h"
-#endif
 
 /*...... This is a ruler that is 80 characters long...........................*/