Merge 603ac44d1a
into c5cd2a7a89
This commit is contained in:
commit
3640a336f0
4 changed files with 104 additions and 1 deletions
29
src/cfwrange.c
Normal file
29
src/cfwrange.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* Copyright (c) 2012, Jos Kuijpers <jos@kuijpersvof.nl>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "cfwrange.h"
|
||||
|
||||
cfw_range_t cfw_range_all = { 0, SIZE_MAX };
|
37
src/cfwrange.h
Normal file
37
src/cfwrange.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (c) 2012, Jos Kuijpers <jos@kuijpersvof.nl>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __CFWRANGE_H__
|
||||
#define __CFWRANGE_H__
|
||||
|
||||
typedef struct cfw_range_t
|
||||
{
|
||||
size_t location, length;
|
||||
} cfw_range_t;
|
||||
|
||||
extern cfw_range_t cfw_range_all;
|
||||
|
||||
#endif
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2012, Jonathan Schleifer <js@webkeks.org>
|
||||
* Copyright (c) 2012, Jos Kuijpers <jos@kuijpersvof.nl>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -131,6 +132,37 @@ cfw_string_set(CFWString *str, const char *cstr)
|
|||
return true;
|
||||
}
|
||||
|
||||
cfw_unichar
|
||||
cfw_string_char(CFWString *str, size_t index)
|
||||
{
|
||||
if(len > index)
|
||||
return str->data[index];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size_t
|
||||
cfw_string_find(CFWString *strA, CFWString *strB, cfw_range_t range)
|
||||
{
|
||||
char *cstrA = strA->data+range.location;
|
||||
size_t i, max = MIN(range.length+range.location, strB->len);
|
||||
|
||||
if(strA->len == 0)
|
||||
return 0;
|
||||
|
||||
if(strA->len-range.location < strB->len)
|
||||
return SIZE_MAX;
|
||||
|
||||
for(i = range.location;
|
||||
i <= strA->len-strB->len && i <= max;
|
||||
i++)
|
||||
{
|
||||
if(!memcmp(strA->data+i, strB->data, max-i))
|
||||
return i;
|
||||
}
|
||||
|
||||
return SIZE_MAX;
|
||||
}
|
||||
|
||||
bool
|
||||
cfw_string_append(CFWString *str, CFWString *append)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2012, Jonathan Schleifer <js@webkeks.org>
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2012, Jos Kuijpers <jos@kuijpersvof.nl>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
|
@ -28,12 +28,17 @@
|
|||
#define __CFWSTRING_H__
|
||||
|
||||
#include "cfwclass.h"
|
||||
#include "cfwrange.h"
|
||||
|
||||
typedef struct CFWString CFWString;
|
||||
typedef uint32_t cfw_unichar;
|
||||
|
||||
extern CFWClass *cfw_string;
|
||||
extern const char* cfw_string_c(CFWString*);
|
||||
extern size_t cfw_string_len(CFWString*);
|
||||
extern bool cfw_string_set(CFWString*, const char*);
|
||||
extern cfw_unichar cfw_string_char(CFWString*, size_t);
|
||||
extern size_t cfw_string_find(CFWString*, CFWString*, cfw_range_t);
|
||||
extern bool cfw_string_append(CFWString*, CFWString*);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue