Browse Source

none: Refactor

master
Kamil Biały 1 year ago
parent
commit
d640b8bee1
8 changed files with 44 additions and 22 deletions
  1. +1
    -0
      .gitattributes
  2. +2
    -0
      .gitignore
  3. +2
    -1
      Makefile
  4. +1
    -1
      inc/moss.h
  5. +0
    -1
      inc/moss/array.h
  6. +17
    -6
      inc/moss/string.h
  7. +2
    -2
      main.c
  8. +19
    -11
      src/string.c

+ 1
- 0
.gitattributes View File

@@ -0,0 +1 @@
*.sh eol=lf

+ 2
- 0
.gitignore View File

@@ -7,3 +7,5 @@ tst/gen/*
obj/*
moss
!moss/

.vscode

+ 2
- 1
Makefile View File

@@ -18,9 +18,10 @@ OBJS = $(patsubst %,$(ODIR)/%,$(_OBJS))
.PHONY: doc

moss: obj/main.o $(OBJS)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
$(CC) -o build/$@ $^ $(CFLAGS) $(LIBS)

directories:
$(MKDIR) $(ODIR)
$(MKDIR) $(ODIR)/hash

obj/main.o: main.c $(DEPS)

+ 1
- 1
inc/moss.h View File

@@ -35,4 +35,4 @@
#include <moss/hash.h>
#include <moss/string.h>

#endif
#endif

+ 0
- 1
inc/moss/array.h View File

@@ -31,7 +31,6 @@
#define __MSH_ARRAY__

#include <msconf.h>
#include <mstpl/array_template.h>

#include <stdlib.h>
#include <math.h>

+ 17
- 6
inc/moss/string.h View File

@@ -123,12 +123,23 @@ int ms_string_realloc( MS_STRING *str, size_t capacity );
int ms_string_realloc_min( MS_STRING *str, size_t min );

int ms_string_insert_cs( MS_STRING *str, size_t index, const char *cstr, size_t count );
int ms_string_insert_mbs( MS_STRING *str, size_t index, const char *mbstr, size_t bytes );
// int ms_string_insert_mbsc( MS_STRING *str, size_t index, const char *mbstr, size_t count );
int ms_string_insert_mbs( MS_STRING *str, size_t index, const char *mbstr, size_t count );
int ms_string_insert_wcs( MS_STRING *str, size_t index, const wchar_t *wcstr, size_t count );

// int ms_string_insert_c( MS_STRING *str, size_t index, char chr );
// int ms_string_insert_wc( MS_STRING *str, size_t index, wchar_t wchr );
#define ms_string_insert_c(str, index, chr) \
ms_string_insert_cs( str, index, &chr, 1 )
#define ms_string_push_c(str, chr) \
ms_string_insert_cs( str, (str)->Length, &chr, 1 )

#define ms_string_insert_mbc(str, index, mbc) \
ms_string_insert_mbs( str, index, mbc, 1 )
#define ms_string_push_mbc(str, mbc) \
ms_string_insert_mbs( str, (str)->Length, mbc, 1 )

#define ms_string_insert_wc(str, index, wchr) \
ms_string_insert_wcs( str, index, &wchr, 1 )
#define ms_string_push_wc(str, wchr) \
ms_string_insert_wcs( str, (str)->Length, &wchr, 1 )

// size_t ms_string_hash( MS_STRING *str );

@@ -145,10 +156,10 @@ void ms_string_free( MS_STRING *str );
? (str)->MBInfo->Length \
: (str)->Length, cstr, count )

#define ms_string_push_mbs(str, mbstr, bytes) \
#define ms_string_push_mbs(str, mbstr, count) \
ms_string_insert_mbs( str, (str)->MBInfo \
? (str)->MBInfo->Length \
: (str)->Length, mbstr, bytes )
: (str)->Length, mbstr, count )

#define ms_string_push_wcs(str, wcstr, count) \
ms_string_insert_wcs( str, (str)->MBInfo \

+ 2
- 2
main.c View File

@@ -63,7 +63,7 @@ int main( int argc, char **argv )
if( ms_string_init_cs(&str1, "TestCSTRc", 0) )
printf( "Błąd podczas tworzenia CSTR\n" );
if( (retval = ms_string_init_mbs(&str2, "Zażółć gęślą jaźń", 0)) )
printf( "Błąd podczas tworzenia MBSTR %X\n", retval );
printf( "Błąd podczas tworzenia MBSTR 0x%X\n", retval );
// if( ms_string_init_wcs(&str3, L"Źdźbło łączy trawy", 0) )
if( ms_string_init_wcs(&str3, L"Poczekaj tu!", 0) )
printf( "Błąd podczas tworzenia WSTR\n" );
@@ -106,7 +106,7 @@ int main( int argc, char **argv )
{
MS_MBINFO info = ms_array_get( str2.MBInfo, MS_MBINFO, retval );
memcpy( chr, &str2.Data.Char[info.Offset], info.Bytes );
chr[info.Bytes] = '\0';
chr[(int)info.Bytes] = '\0';
printf( "Size: %d > Char: %s > Shift: 0x%02lX\n", info.Bytes, chr, info.Offset );
}


+ 19
- 11
src/string.c View File

@@ -321,7 +321,13 @@ int ms_string_insert_cs( MS_STRING *str, size_t index, const char *cstr, size_t

/* gdy ilość znaków nie została podana, oblicz ją */
if( !count )
{
count = strlen( cstr );

/* wszystko w porządku, po prostu ciąg znaków pozostaje bez zmian */
if( !count )
return MSEC_OK;
}
/* ilość znaków jest zależna od typu tekstu
w przypadku typu wielobajtowego znaki mogą się składać z kilku bajtów... */
@@ -339,8 +345,6 @@ int ms_string_insert_cs( MS_STRING *str, size_t index, const char *cstr, size_t
if( ercode )
return ercode;
}
else if( !count )
SETERRNOANDRETURN( MSEC_INVALID_ARGUMENT );

/* kopiuj w przypadku gdy jest to standardowy ciąg znaków */
if( !str->MBInfo && !str->Wide )
@@ -436,7 +440,13 @@ int ms_string_insert_mbs( MS_STRING *str, size_t index, const char *mbstr, size_

/* gdy ilość znaków nie została podana, oblicz ją */
if( !count )
{
count = strlen( mbstr );

/* pusty ciąg znaków, nie zmienaj nic */
if( !count )
return MSEC_OK;
}
/* ilość znaków jest zależna od typu tekstu */
length = str->MBInfo
@@ -467,12 +477,6 @@ int ms_string_insert_mbs( MS_STRING *str, size_t index, const char *mbstr, size_
return
ms_array_free( &mbinfo ),
ercode;
else;
else if( !count )
{
ms_array_free( &mbinfo );
SETERRNOANDRETURN( MSEC_INVALID_ARGUMENT );
}

/* gdy jest to zwykły ciąg znaków, skracaj wielobajtowe ciągi do jednobajtowego */
if( !str->MBInfo && !str->Wide )
@@ -562,9 +566,13 @@ int ms_string_insert_wcs( MS_STRING *str, size_t index, const wchar_t *wstr, siz

/* gdy ilość znaków nie została podana, oblicz ją */
if( !count )
{
count = wcslen( wstr );
if( !count )
SETERRNOANDRETURN( MSEC_INVALID_ARGUMENT );
/* nic nie jest dodawane, zostaw jak jest */
if( !count )
return MSEC_OK;
}

/* ciąg znaków o zmiennej wielkości */
if( str->MBInfo )
@@ -660,7 +668,7 @@ int ms_string_insert_wcs( MS_STRING *str, size_t index, const wchar_t *wstr, siz
IGRET memmove( ptr + count * sizeof(wchar_t), ptr, (length - index) * sizeof(wchar_t) );
IGRET memcpy( ptr, wstr, count * sizeof(wchar_t) );

str->Length += count;
str->Length += count;
str->Data.Wide[str->Length] = L'\0';

return MSEC_OK;

Loading…
Cancel
Save