OSDN Git Service

(none)
[hos/hos-v4a.git] / aplfw / library / algorithm / stringformat / stringformat_string.c
1 /** 
2  *  Hyper Operating System  Application Framework
3  *
4  * @file  stringformat.c
5  * @brief %jp{文字列フォーマット生成ライブラリ}
6  *
7  * Copyright (C) 2008 by Project HOS
8  * http://sourceforge.jp/projects/hos/
9  */
10
11
12 #include <string.h>
13 #include "stringformat_local.h"
14
15
16
17 /* 文字列を出力 */
18 int StringFormat_String(int (*pfncPut)(int c, void *Param), void *Param, const char *pszStr, int iWidth, int iFlag)
19 {
20         int     iLen = 0;
21         int     iSize = 0;
22         int     iPadSize;
23         
24         /* 最低限表示に必要なサイズを算出 */
25         iSize = strlen(pszStr);
26         
27         /* パティングサイズ決定 */
28         iPadSize = iWidth - iSize;
29         
30         /* 左詰属性が無ければ先にパディング */
31         if ( iFlag != '-' )
32         {
33                 while ( iPadSize > 0 )
34                 {
35                         if ( pfncPut(' ', Param) <= 0 )
36                         {
37                                 return iLen;
38                         }
39                         iLen++;
40
41                         iPadSize--;
42                 }
43         }
44         
45         /* 文字列出力 */
46         while ( iSize > 0 )
47         {
48                 if ( pfncPut(*pszStr++, Param) <= 0 )
49                 {
50                         return iLen;
51                 }
52                 iLen++;
53         
54                 iSize--;
55         }
56         
57         
58         /* 左詰属性なら後ろをパディング */
59         if ( iFlag == '-' )
60         {
61                 while ( iPadSize > 0 )
62                 {
63                         if ( pfncPut(' ', Param) <= 0 )
64                         {
65                                 return iLen;
66                         }
67                         iLen++;
68
69                         iPadSize--;
70                 }
71         }
72         
73         return iLen;
74 }
75
76
77 /* end of file */