OSDN Git Service

update libMiMic
[mimic/MiMicSDK.git] / lib / src / utils / NyLPC_cFormatWriter.c
index 26af5fc..070549b 100644 (file)
 #define NUM_OF_WORK 16\r
 NyLPC_TBool NyLPC_cFormatWriter_print(NyLPC_cFormatWriter_printHandler i_handler,void* i_inst,const NyLPC_TChar* i_fmt,va_list args)\r
 {\r
-       const char* rp=i_fmt;\r
-       const char* sp;\r
-       char wk[NUM_OF_WORK];\r
-       NyLPC_TUInt8 ftype;\r
-       NyLPC_TUInt32 ut;\r
-       NyLPC_TInt16 ol=0;\r
-       while(*rp!='\0'){\r
-               if(*rp=='%'){\r
-                       ftype=FTYPE_NOTHING;\r
-                       rp++;\r
-               FMT_NEXT:\r
-                       switch (*rp){\r
-                       case '.':\r
-                               //%.*(s)\r
-                               if(*(rp+1)=='*'){\r
-                                       //%.*\r
-                                       ftype=FTYPE_LENGTH;\r
-                                       rp+=2;\r
-                                       goto FMT_NEXT;\r
-                               }\r
-                               //その他\r
-                               wk[ol]=*rp;\r
-                               ol++;\r
-                               rp++;\r
-                               break;\r
-                       case 's':\r
-                               switch(ftype){\r
-                               case FTYPE_LENGTH:\r
-                                       //%.*sの場合\r
-                                       ut=va_arg(args,NyLPC_TUInt32);\r
-                                       break;\r
-                               default:\r
-                                       ut=0x7FFFFFFF;\r
-                               }\r
-                               sp=va_arg(args,const char*);\r
-                               while(*sp!=0 && ut>0){\r
-                                       wk[ol]=*sp;\r
-                                       ol++;\r
-                                       sp++;\r
-                                       //バッファフルなら書込み。\r
-                                       if(ol>=NUM_OF_WORK){\r
-                                               i_handler(i_inst,wk,NUM_OF_WORK);\r
-                                               ol=0;\r
-                                       }\r
-                                       ut--;\r
-                               }\r
-                               rp++;\r
-                               continue;\r
-                       case 'c':\r
-                               wk[ol]=(char)va_arg(args,int);\r
-                               rp++;\r
-                               ol++;\r
-                               break;\r
-                       case 'd':\r
-                               //ワークを空にする。\r
-                               if(ol>0){\r
-                                       i_handler(i_inst,wk,ol);\r
-                                       ol=0;\r
-                               }\r
-                               NyLPC_itoa((va_arg(args,int)),wk,10);\r
-                               //強制コミット\r
-                               i_handler(i_inst,wk,strlen(wk));\r
-                               rp++;\r
-                               continue;\r
-                       case 'u':\r
-                               //ワークを空にする。\r
-                               if (ol>0){\r
-                                       i_handler(i_inst, wk, ol);\r
-                                       ol = 0;\r
-                               }\r
-                               NyLPC_uitoa((va_arg(args, NyLPC_TUInt32)), wk, 10);\r
-                               //強制コミット\r
-                               i_handler(i_inst, wk, strlen(wk));\r
-                               rp++;\r
-                               continue;\r
-                       //16進数\r
-                       case 'x':\r
-                               //ワークを空にする。\r
-                               if(ol>0){\r
-                                       i_handler(i_inst,wk,ol);\r
-                                       ol=0;\r
-                               }\r
-                               NyLPC_uitoa((va_arg(args,unsigned int)),wk,16);\r
-                               //強制コミット\r
-                               i_handler(i_inst,wk,strlen(wk));\r
-                               rp++;\r
-                               continue;\r
-                       //BYTE値のHEXエンコード文字列(XX形式のテキスト。%.*Bのみ)\r
-                       case 'B':\r
-                               switch(ftype){\r
-                               case FTYPE_LENGTH:\r
-                                       //%.*Bの場合\r
-                                       ut=va_arg(args,NyLPC_TUInt32);\r
-                                       break;\r
-                               default:\r
-                                       ut=0;\r
-                               }\r
-                               sp=va_arg(args,const char*);\r
-                               while(ut>0){\r
-                                       //2文字以上の空きがないなら書き込み\r
-                                       if (ol >= (NUM_OF_WORK - 2)){\r
-                                               i_handler(i_inst, wk, ol);\r
-                                               ol = 0;\r
-                                       }\r
-                                       NyLPC_uitoa2((int)(*sp), wk + ol, 16, 2);\r
-                                       ol += 2;\r
-                                       sp++;\r
-                                       ut--;\r
-                               }\r
-                               rp++;\r
-                               continue;\r
-                       case '%':\r
-                               wk[ol]='%';\r
-                               ol++;\r
-                               rp++;\r
-                               break;\r
-                       case '\0':\r
-                               //オワタ(ループ抜けるためにrpはそのまま。)\r
-                               break;\r
-                       default:\r
-                               wk[ol]=*rp;\r
-                               ol++;\r
-                       }\r
-                       //バッファフルなら書込み。\r
-                       if(ol>=NUM_OF_WORK){\r
-                               i_handler(i_inst,wk,NUM_OF_WORK);\r
-                               ol=0;\r
-                       }\r
-               }else if(*rp==0){\r
-                       //オワタ\r
-                       break;\r
-               }else{\r
-                       wk[ol]=*rp;\r
-                       ol++;\r
-                       rp++;\r
-                       if(ol>=NUM_OF_WORK){\r
-                               i_handler(i_inst,wk,NUM_OF_WORK);\r
-                               ol=0;\r
-                       }\r
-               }\r
-       }\r
-       //どこかでエラーが起こってればFALSE返す。\r
-       return i_handler(i_inst,wk,ol);\r
+    const char* rp=i_fmt;\r
+    const char* sp;\r
+    char wk[NUM_OF_WORK];\r
+    NyLPC_TUInt8 ftype;\r
+    NyLPC_TUInt32 ut;\r
+    NyLPC_TInt16 ol=0;\r
+    while(*rp!='\0'){\r
+        if(*rp=='%'){\r
+            ftype=FTYPE_NOTHING;\r
+            rp++;\r
+        FMT_NEXT:\r
+            switch (*rp){\r
+            case '.':\r
+                //%.*(s)\r
+                if(*(rp+1)=='*'){\r
+                    //%.*\r
+                    ftype=FTYPE_LENGTH;\r
+                    rp+=2;\r
+                    goto FMT_NEXT;\r
+                }\r
+                //その他\r
+                wk[ol]=*rp;\r
+                ol++;\r
+                rp++;\r
+                break;\r
+            case 's':\r
+                switch(ftype){\r
+                case FTYPE_LENGTH:\r
+                    //%.*sの場合\r
+                    ut=va_arg(args,NyLPC_TUInt32);\r
+                    break;\r
+                default:\r
+                    ut=0x7FFFFFFF;\r
+                }\r
+                sp=va_arg(args,const char*);\r
+                while(*sp!=0 && ut>0){\r
+                    wk[ol]=*sp;\r
+                    ol++;\r
+                    sp++;\r
+                    //バッファフルなら書込み。\r
+                    if(ol>=NUM_OF_WORK){\r
+                        i_handler(i_inst,wk,NUM_OF_WORK);\r
+                        ol=0;\r
+                    }\r
+                    ut--;\r
+                }\r
+                rp++;\r
+                continue;\r
+            case 'c':\r
+                wk[ol]=(char)va_arg(args,int);\r
+                rp++;\r
+                ol++;\r
+                break;\r
+            case 'd':\r
+                //ワークを空にする。\r
+                if(ol>0){\r
+                    i_handler(i_inst,wk,ol);\r
+                    ol=0;\r
+                }\r
+                NyLPC_itoa((va_arg(args,int)),wk,10);\r
+                //強制コミット\r
+                i_handler(i_inst,wk,strlen(wk));\r
+                rp++;\r
+                continue;\r
+            case 'u':\r
+                //ワークを空にする。\r
+                if (ol>0){\r
+                    i_handler(i_inst, wk, ol);\r
+                    ol = 0;\r
+                }\r
+                NyLPC_uitoa((va_arg(args, NyLPC_TUInt32)), wk, 10);\r
+                //強制コミット\r
+                i_handler(i_inst, wk, strlen(wk));\r
+                rp++;\r
+                continue;\r
+            //16進数\r
+            case 'x':\r
+                //ワークを空にする。\r
+                if(ol>0){\r
+                    i_handler(i_inst,wk,ol);\r
+                    ol=0;\r
+                }\r
+                NyLPC_uitoa((va_arg(args,unsigned int)),wk,16);\r
+                //強制コミット\r
+                i_handler(i_inst,wk,strlen(wk));\r
+                rp++;\r
+                continue;\r
+            //BYTE値のHEXエンコード文字列(XX形式のテキスト。%.*Bのみ)\r
+            case 'B':\r
+                switch(ftype){\r
+                case FTYPE_LENGTH:\r
+                    //%.*Bの場合\r
+                    ut=va_arg(args,NyLPC_TUInt32);\r
+                    break;\r
+                default:\r
+                    ut=0;\r
+                }\r
+                sp=va_arg(args,const char*);\r
+                while(ut>0){\r
+                    //2文字以上の空きがないなら書き込み\r
+                    if (ol >= (NUM_OF_WORK - 2)){\r
+                        i_handler(i_inst, wk, ol);\r
+                        ol = 0;\r
+                    }\r
+                    NyLPC_uitoa2((int)(*sp), wk + ol, 16, 2);\r
+                    ol += 2;\r
+                    sp++;\r
+                    ut--;\r
+                }\r
+                rp++;\r
+                continue;\r
+            case '%':\r
+                wk[ol]='%';\r
+                ol++;\r
+                rp++;\r
+                break;\r
+            case '\0':\r
+                //オワタ(ループ抜けるためにrpはそのまま。)\r
+                break;\r
+            default:\r
+                wk[ol]=*rp;\r
+                ol++;\r
+            }\r
+            //バッファフルなら書込み。\r
+            if(ol>=NUM_OF_WORK){\r
+                i_handler(i_inst,wk,NUM_OF_WORK);\r
+                ol=0;\r
+            }\r
+        }else if(*rp==0){\r
+            //オワタ\r
+            break;\r
+        }else{\r
+            wk[ol]=*rp;\r
+            ol++;\r
+            rp++;\r
+            if(ol>=NUM_OF_WORK){\r
+                i_handler(i_inst,wk,NUM_OF_WORK);\r
+                ol=0;\r
+            }\r
+        }\r
+    }\r
+    //どこかでエラーが起こってればFALSE返す。\r
+    return i_handler(i_inst,wk,ol);\r
 }\r
 \r
 NyLPC_TInt16 NyLPC_cFormatWriter_length(const NyLPC_TChar* i_fmt,va_list args)\r
 {\r
-       const char* rp=i_fmt;\r
-       const char* sp;\r
-       char wk[NUM_OF_WORK];\r
-       NyLPC_TUInt32 ut;\r
-       NyLPC_TUInt8 ftype;\r
-       NyLPC_TInt16 len=0;\r
-       while(*rp!='\0'){\r
-               if(*rp=='%'){\r
-                       ftype=FTYPE_NOTHING;\r
-                       rp++;\r
-               FMT_NEXT:\r
-                       switch (*rp){\r
-                       case '.':\r
-                               //%.*(s)\r
-                               if(*(rp+1)=='*'){\r
-                                       //%.*\r
-                                       ftype=FTYPE_LENGTH;\r
-                                       rp+=2;\r
-                                       goto FMT_NEXT;\r
-                               }\r
-                               //その他\r
-                               len++;\r
-                               rp++;\r
-                               break;\r
-                       case 's':\r
-                               switch(ftype){\r
-                               case FTYPE_LENGTH:\r
-                                       //%.*sの場合\r
-                                       ut=va_arg(args,NyLPC_TUInt32);\r
-                                       break;\r
-                               default:\r
-                                       ut=0x7FFFFFFF;\r
-                               }\r
-                               sp=va_arg(args,const char*);\r
-                               while(*sp!=0 && ut>0){\r
-                                       len++;\r
-                                       sp++;\r
-                                       ut--;\r
-                               }\r
-                               rp++;\r
-                               continue;\r
-                       case 'c':\r
-                               va_arg(args,int);\r
-                               len++;\r
-                               rp++;\r
-                               break;\r
-                       case 'd':\r
-                               NyLPC_itoa((va_arg(args,int)),wk,10);\r
-                               //強制コミット\r
-                               len+=(NyLPC_TInt16)strlen(wk);\r
-                               rp++;\r
-                               continue;\r
-                       case 'u':\r
-                               //ワークを空にする。\r
-                               NyLPC_uitoa((va_arg(args, NyLPC_TUInt32)), wk, 10);\r
-                               //強制コミット\r
-                               len += (NyLPC_TInt16)strlen(wk);\r
-                               rp++;\r
-                               continue;\r
-                       case 'x':\r
-                               NyLPC_uitoa((va_arg(args,unsigned int)),wk,16);\r
-                               //強制コミット\r
-                               len+=(NyLPC_TInt16)strlen(wk);\r
-                               rp++;\r
-                               continue;\r
-                       //BYTE値のHEXエンコード文字列(XX形式のテキスト。%.*Bのみ)\r
-                       case 'B':\r
-                               switch(ftype){\r
-                               case FTYPE_LENGTH:\r
-                                       //%.*Bの場合\r
-                                       ut=va_arg(args,NyLPC_TUInt32);\r
-                                       break;\r
-                               default:\r
-                                       ut=0;\r
-                               }\r
-                               sp=va_arg(args,const char*);\r
-                               len += (NyLPC_TInt16)ut * 2;\r
-                               rp++;\r
-                               continue;\r
-                       case '%':\r
-                               len++;\r
-                               rp++;\r
-                               break;\r
-                       case '\0':\r
-                               //オワタ(ループ抜けるためにrpはそのまま。)\r
-                               break;\r
-                       default:\r
-                               len++;\r
-                       }\r
-               }else if(*rp==0){\r
-                       //オワタ\r
-                       break;\r
-               }else{\r
-                       len++;\r
-                       rp++;\r
-               }\r
-       }\r
-       //どこかでエラーが起こってればFALSE返す。\r
-       return len;\r
+    const char* rp=i_fmt;\r
+    const char* sp;\r
+    char wk[NUM_OF_WORK];\r
+    NyLPC_TUInt32 ut;\r
+    NyLPC_TUInt8 ftype;\r
+    NyLPC_TInt16 len=0;\r
+    while(*rp!='\0'){\r
+        if(*rp=='%'){\r
+            ftype=FTYPE_NOTHING;\r
+            rp++;\r
+        FMT_NEXT:\r
+            switch (*rp){\r
+            case '.':\r
+                //%.*(s)\r
+                if(*(rp+1)=='*'){\r
+                    //%.*\r
+                    ftype=FTYPE_LENGTH;\r
+                    rp+=2;\r
+                    goto FMT_NEXT;\r
+                }\r
+                //その他\r
+                len++;\r
+                rp++;\r
+                break;\r
+            case 's':\r
+                switch(ftype){\r
+                case FTYPE_LENGTH:\r
+                    //%.*sの場合\r
+                    ut=va_arg(args,NyLPC_TUInt32);\r
+                    break;\r
+                default:\r
+                    ut=0x7FFFFFFF;\r
+                }\r
+                sp=va_arg(args,const char*);\r
+                while(*sp!=0 && ut>0){\r
+                    len++;\r
+                    sp++;\r
+                    ut--;\r
+                }\r
+                rp++;\r
+                continue;\r
+            case 'c':\r
+                va_arg(args,int);\r
+                len++;\r
+                rp++;\r
+                break;\r
+            case 'd':\r
+                NyLPC_itoa((va_arg(args,int)),wk,10);\r
+                //強制コミット\r
+                len+=(NyLPC_TInt16)strlen(wk);\r
+                rp++;\r
+                continue;\r
+            case 'u':\r
+                //ワークを空にする。\r
+                NyLPC_uitoa((va_arg(args, NyLPC_TUInt32)), wk, 10);\r
+                //強制コミット\r
+                len += (NyLPC_TInt16)strlen(wk);\r
+                rp++;\r
+                continue;\r
+            case 'x':\r
+                NyLPC_uitoa((va_arg(args,unsigned int)),wk,16);\r
+                //強制コミット\r
+                len+=(NyLPC_TInt16)strlen(wk);\r
+                rp++;\r
+                continue;\r
+            //BYTE値のHEXエンコード文字列(XX形式のテキスト。%.*Bのみ)\r
+            case 'B':\r
+                switch(ftype){\r
+                case FTYPE_LENGTH:\r
+                    //%.*Bの場合\r
+                    ut=va_arg(args,NyLPC_TUInt32);\r
+                    break;\r
+                default:\r
+                    ut=0;\r
+                }\r
+                sp=va_arg(args,const char*);\r
+                len += (NyLPC_TInt16)ut * 2;\r
+                rp++;\r
+                continue;\r
+            case '%':\r
+                len++;\r
+                rp++;\r
+                break;\r
+            case '\0':\r
+                //オワタ(ループ抜けるためにrpはそのまま。)\r
+                break;\r
+            default:\r
+                len++;\r
+            }\r
+        }else if(*rp==0){\r
+            //オワタ\r
+            break;\r
+        }else{\r
+            len++;\r
+            rp++;\r
+        }\r
+    }\r
+    //どこかでエラーが起こってればFALSE返す。\r
+    return len;\r
 }\r