123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- /**
- * Tencent is pleased to support the open source community by making Tars available.
- *
- * Copyright (C) 2016THL A29 Limited, a Tencent company. All rights reserved.
- *
- * Licensed under the BSD 3-Clause License (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * https://opensource.org/licenses/BSD-3-Clause
- *
- * Unless required by applicable law or agreed to in writing, software distributed
- * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
- * CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
- #ifndef _TARS2OC_H
- #define _TARS2OC_H
- #include "parse.h"
- #include <cassert>
- #include <string>
- using namespace tars;
- /**
- * ����tars����h��m�ļ�
- */
- class Tars2OC
- {
- public:
- /**
- * ����
- * @param file
- */
- void createFile(const string &file);
- /**
- * ���������ļ���Ŀ¼
- *
- */
- void setBaseDir(const std::string & sPath) { m_sBaseDir = sPath; }
- /**
- * �����Ƿ���Ĭ��ֵ
- *
- * @param bCheck
- */
- void setArc(const bool bArc) { m_bARC = bArc; }
- /**
- * ���ø�����Ա�����Ƿ�������ֿռ�ǰ
- */
- void setNeedNS(bool bNeed) { m_bNeedNS = bNeed;}
- /**
- * �����û��Զ������ֿռ�
- */
- void setNS(const string& sNS) {m_sNamespace = sNS;}
- //����������������Դ������
- protected:
- /**
- * ��ȡö�ٻ��߽ṹ������ǰ�ַ���
- * @param sTarsNS tars�ļ��ж�������ֿռ�
- * @param bEnum �Ƿ���ö������
- *
- * @return �������ǰ�ַ���
- */
- string getNamePrix(const string& sTarsNS) const;
-
- /**
- * ��ȡ���Ϲ淶�ij�Ա����
- */
- string getPropertyName(const string& sId) const;
- /**
- *
- * ��ȡ�Զ���setter������
- */
- string getSetterName(const string& sId) const;
- /**
- * ����ij���͵��ַ�������Դ��
- * @param pPtr
- *
- * @return string
- */
- string tostr(const TypePtr &pPtr) const;
- /**
- * �����ڽ����͵��ַ���Դ��
- * @param pPtr
- *
- * @return string
- */
- string tostrBuiltin(const BuiltinPtr &pPtr) const;
- /**
- * ����vector���ַ�������
- * @param pPtr
- *
- * @return string
- */
- string tostrVector(const VectorPtr &pPtr) const;
- /**
- * ����map���ַ�������
- * @param pPtr
- *
- * @return string
- */
- string tostrMap(const MapPtr &pPtr) const;
- /**
- * ����ij�ֽṹ�ķ�������
- * @param pPtr
- *
- * @return string
- */
- string tostrStruct(const StructPtr &pPtr) const;
- /**
- * ����ij��ö�ٵķ�������
- * @param pPtr
- *
- * @return string
- */
- string tostrEnum(const EnumPtr &pPtr) const;
- /**
- * ����OBJC �汾2�����Զ���
- * @param pPtr
- *
- * @return string
- */
- string toTarsV2Procstr(const TypeIdPtr &pPtr) const;
- /**
- * ����OBJC�汾2�ĸ�����Ϣ����
- * @param pPtr
- *
- * @return string
- */
- string toAddtionalClassName(const TypePtr &pPtr) const;
- /**
- * ���ɽṹ�����Ե�synthesize����
- * @param vMember
- *
- * @return string
- */
- string writesynthesize(const vector<TypeIdPtr>& vMember) const;
- /**
- * ����Initialize����
- * @param pPtr
- *
- * @return string
- */
- string writeInitialize(const StructPtr &pPtr) const;
- /**
- * ���ɳ�ʼ�����庯��init
- * @param vMember
- *
- * @return string
- */
- string writeInit(const vector<TypeIdPtr>& vMember) const;
- /**
- * ������������
- * @param vMember
- *
- * @return string
- */
- string writedealloc(const vector<TypeIdPtr>& vMember) const;
- /**
- * ���ɽṹ���ƶ���
- * @param pPtr
- *
- * @return string
- */
- string writeTarsType(const StructPtr &pPtr) const;
- /**
- * �������ͱ�ʾ��
- * @param pPtr
- *
- * @return string
- */
- string toClassName(const TypePtr &pPtr) const;
- protected:
- /**
- * ��ȡtars�ж�����������ͣ�require��optional
- * @param pPtr
- *
- */
- string getReqOptionType(const TypeIdPtr &pPtr) const;
- /**
- * �ж������Ƿ�����retain���ͣ�string�Ͷ������Ͷ�����retain
- * @param pPtr
- *
- */
- bool IsRetainType(const TypePtr &pPtr) const;
- bool isNumberType(const TypePtr &pPtr) const;
- /**
- * ��ȡ�ṹ���������������͵ı�ʶ�����ƺ����ͣ�Ŀǰ�ǽṹ���ö����������
- *
- * @param pPtr
- * @param namespaceId
- *
- * @return
- */
- map<string,int> getReferences(const StructPtr &pPtr, const string& namespaceId="") const;
- /**
- * ��ȡ��Ա�������������ͱ�ʶ������,
- * ����, stHello hello;stHelloΪ���ͱ�ʶ������,����Ϊ�ṹ��
- *
- * @param pPtr
- * @param mRefs
- */
- void toIncludeName(const TypePtr &pPtr,map<string,int>& mRefs) const;
- /**
- * ���ɽṹ��ͷ�ļ�����
- * @param pPtr
- *
- * @return string
- */
- string generateH(const StructPtr &pPtr, const string& namespaceId) const;
- /**
- * ���ɽṹ��m�ļ�����
- * @param pPtr
- *
- * @return string
- */
- string generateM(const StructPtr &pPtr, const string& namespaceId) const;
- /**
- * ����ö�ٵ�m�ļ�����
- * @param pPtr
- *
- * @return string
- */
- string generateM(const EnumPtr &pPtr, const string& namespaceId) const;
- /**
- * ����������ͷ�ļ�Դ��
- * @param pPtr
- *
- * @return string
- */
- string generateH(const ContainerPtr &pPtr) const;
- /**
- * ����ö�ٵ�ͷ�ļ�Դ��
- * @param pPtr
- *
- * @return string
- */
- string generateH(const EnumPtr &pPtr, const string& namespaceId) const;
- /**
- * �������ֿռ��ͷ�ļ���ʵ��Դ��
- * @param pPtr
- *
- * @return string
- */
- string generate(const NamespacePtr &pPtr) const;
- /**
- * �������ֿռ�m�ļ�Դ��
- * @param pPtr
- *
- * @return string
- */
- string generateM(const NamespacePtr &pPtr) const;
- /**
- * �������ֿռ��ͷ�ļ�Դ��
- * @param pPtr
- *
- * @return string
- */
- void generate(const ContextPtr &pPtr) const;
- /**
- * �������ֿռ�m�ļ�Դ��
- * @param pPtr
- *
- * @return string
- */
- void generateM(const ContextPtr &pPtr) const;
- private:
- enum EM_TYPE
- {
- EM_STRUCT_TYPE = 1,
- EM_ENUM_TYPE = 2
- };
- std::string m_sBaseDir;
- //<modulename,EM_TYPE>, 2:enum,1,stuct;
- mutable map<string,int> m_mIncludes;
- /**
- * �Ƿ�֧��arc�汾
- *
- */
- bool m_bARC;
- /**
- * �Ƿ�֧���������ֿռ�ǰ
- */
- bool m_bNeedNS;
- /**
- *�û��Զ�������ֿռ�ǰ�������ֵΪ�գ�Ĭ����ȡtars�ļ��ж����ֵ
- */
- string m_sNamespace;
- };
- #endif
|